Matching supply to demand
In Inventory Visibility, each supply type matches to a demand type.
The following table indicates which specific demand types match which specific supply types.
Demand type OPEN_ORDER |
Demand type RSRV_ORDER |
Demand type SCHEDULED |
Demand type BACKORDER |
Demand type DEMAND_FOR_RELEASE |
Demand type ALLOCATED |
Demand type PLAN |
|
---|---|---|---|---|---|---|---|
Supply type ONHAND |
X | X | X | X | X | X | |
Supply type INTRANSIT |
X | X | X | X | X | ||
Supply type PO_PLACED |
X | X | X | X | X | ||
Supply type PO_SCHEDULED |
X | X | X | X | X | ||
Supply type PO_RELEASED |
X | X | X | X | X | ||
Supply type WIP |
X | ||||||
Supply type PLAN |
- The PLAN type represents a not yet materialized supply or demand. These operations do not impact availability. However, there might still be scenarios in which it is useful to track supply and demand for purposes such as tentative future replenishment.
- Configure the ETA value only for supply types that are not on-hand supply (all types except ONHAND and custom types that extend ONHAND). For supply types that are on-hand supply (ONHAND and custom types that extend ONHAND), do not configure the ETA. Here, ETA refers to the attribute in the Adjust Supply and Sync Supply REST APIs.
You can extend an existing supply or demand type, and the new type impacts availability in the same way as the base inventory type. For example, ONHAND_BACKROOM, which is an extended type of the base inventory type ONHAND has the same impact on availability as ONHAND.
To extend a supply or demand type, invoke the corresponding Supply Type or Demand Type REST API by using the PUT request method. Specify the base inventory type from which you need to derive the supply or demand type.
Commitment levels before availability
- Unpromised
- Unpromised commitment applies to orders that are captured for fulfillment (for example, from an e-commerce store site) but are not yet scheduled and a specific ship node is not yet assigned. Since the ship node is not committed to the demand, it is considered to be an "unpromised" commitment because the order can be easily reallocated to another ship node.
- Promised
- After an order is scheduled or assigned to a specific fulfillment ship node, the order is in a committed state and the assigned ship node is now responsible for the order. At this stage, the commitment is considered to be a "promised" demand, and the items cannot be easily reallocated to another ship node (but can be reallocated within the ship node).
- Allocated
- Allocated demands always have an assigned ship node and are far enough along in the fulfillment process that a shipment was created for the order. At this stage, it is difficult for the seller to reallocate the inventory without risk.
When Inventory Visibility determines the supply and demand matching, the commitment levels are prioritized in the following order.
- Allocated
- Promised
- Unpromised
The outcome depends on the type of demand type that is provided in an availability or reservation request.
Availability lookup
Demand type | Commitment level |
---|---|
OPEN_ORDER | Unpromised |
SCHEDULED | Promised |
DEMAND_FOR_RELEASE | Allocated |
ALLOCATED | Allocated |
RSRV_ORDER | Promised |
BACKORDER | Unpromised |
During reservations, availability is checked based on the input demand type. If the demand type is not specified, reservation defaults to OPEN_ORDER. The following table describes how availability is calculated during reservations.
Reservation input demand type | Supply | Unpromised reservations (OPEN_ORDER) | Promised reservations (SCHEDULED) | Allocated reservation (DEMAND_FOR_RELEASE) | Available amount to be reserved |
---|---|---|---|---|---|
OPEN_ORDER | 60 | 7 | 15 | 30 |
Available = Supply (60) - Unpromised (7) - Promised (15) - Allocated (30) = 8 |
OPEN_ORDER | 60 | 15 | 15 | 30 |
Available = Supply (60) - Unpromised (15) - Promised (15) - Allocated (30) = 0 |
SCHEDULED | 60 | 7 | 15 | 30 |
Available = Supply (60) - Allocated (30) - Promised (15) = 15 |
SCHEDULED | 60 | 17 | 15 | 30 |
Available = Supply (60) - Allocated (30) - Promised (15) = 15 |
ALLOCATED | 60 | 7 | 15 | 30 |
Availability = Supply (60) - Allocated (30) = 30 |
ALLOCATED | 31 | 10 | 20 | 30 |
Availability = Supply (31) - Allocated (30) = 1 |
Supply and demand tag matches
If demand has tags, then supply must have equal tags to match. If demand has no tag, then it can match to any supply.
The following example describes how supply and demand are matched for tags:
Consider Item01 for which the tag number is categorized as lot number, batch number, and revision number.
Tag: A01|230|v1 Qty: 5
Tag: A01|230|v2 Qty: 5
Tag: A01|230|v3 Qty: 5
Tag: " " Qty: 10 (untagged)
Tag: A01|230|v1 Qty: 5
Tag: A01|230|v2 Qty: 7
Tag: " " Qty: 15 (untagged)
The following table shows a result of a supply and demand matching in which the demand has tags. Since the demand has tags, a matching supply tag is necessary for each.
Supply | Demand | Available quantity |
---|---|---|
Tag: A01|230|v1 Qty: 5 |
Tag: A01|230|v1, Qty: 5 |
0 (5-5 = 0) Demand is fulfilled. |
Tag: A01|230|v2, Qty: 5 |
Tag: A01|230|v2, Qty: 7 |
0 (5-7 = 0) This tagged demand has insufficient supply for this tagged demand, which results in an unconsumed demand quantity of 2. The demand does not take from supply A01|230|v3 or " " because the tag is not a match. |
The following table shows a result of a supply and demand matching in which the demand does not have tags. The demand can match to any supply.
Supply | Demand | Quantity available |
---|---|---|
Tag: " " Qty: 10 (untagged)
|
" " Qty: 15 (untagged) |
0 (10-10 = 0) untagged 0 (5-5) A01|230|v3 The untagged supply of 10 is consumed leaving demand quantity of 5. Since demand is untagged, the demand can take from any supply. Demand takes the remaining 5 from A01|230|v3. |
Tag: A01|230|v1 Qty: 0
Tag: A01|230|v2 Qty: 0
Tag: A01|230|v3 Qty: 0
Tag: " " Qty: 0
Correcting availability for untagged supply and demand
tagNumber
is blank or has 3 pipes (|||
). The same is true for
demand if the tagNumber
is blank or has 3 pipes (|||
). To ensure
that the availability is accurate in the inventory system, the Inventory Visibility
merges supplies or demands with tagNumber
as blank and three pipes
(|||
) during availability calculation. If supplies or demands with
tagNumber
as three pipes (|||
) are adjusted or synced, then
tagNumber
will be replaced as blank. As a result, the GET Supply or Demand will
show blank instead of three pipes (|||
). The same change applies for
Supply.Change
and Demand.Change
events.tagNumber
3 pipes (|||
) is the same as blank. tagNumber
as blank
and three pipes (|||
) are merged during calculation of availability.
Supply | Demand | Available quantity |
---|---|---|
Tag: " " Qty: 50 |
Tag: " " Qty: 10 |
80(50+50-10-10=80) |
Tag: ||| Qty: 50 |
Tag: ||| Qty: 10 |
tagNumber
3 pipes |||
will
be replaced as blank if adjust supply is used.
Supply | Adjust supply | Get supply | Supply.Change event |
---|---|---|---|
Tag: ||| Qty: 50 |
Tag: " " Qty: 30 |
Tag: ||| Qty: 50 |
Tag: " " Qty: 30 ChangedQty: 30 |
Tag: ||| Qty: 50
|
Tag: ||| Qty: 20 |
Tag: " " Qty: 50 Note: The
tagNumber
||| is replaced with blank for 20 supplies. As a result 30 supplies with
tagNumber blank are merged with 20 supplies (30 + 20 = 50). |
Tag: " " Qty: 50 ChangedQty: 20 |
The following example describes how tagNumber
3 pipes |||
is
replaced with blank if adjust demand is used.
Demand | Adjust demand | Get demand | Demand.Change event |
---|---|---|---|
Tag: ||| Qty: 10 |
Tag: " " Qty: 7 |
Tag: ||| Qty: 10 |
Tag: " " Qty: 7 ChangedQty: 7 |
Tag: ||| Qty: 10
|
Tag: ||| Qty: 3 |
Tag: " " Qty: 10 Note: The
tagNumber
||| is replaced with blank for 3 demands. As a result 7 demands with
tagNumber blank are merged with such 3 demands (7 + 3 = 10). |
Tag: " " Qty: 10 ChangedQty: 3 |
The total available quantity is 80(50+50-10-10=80)
The following example describes how tagNumber
3 pipes |||
is
replaced with blank if sync supply is used.
Supply | Sync supply | Get supply | Supply.Change event |
---|---|---|---|
Tag: ||| Qty: 50 |
Tag: " " Qty: 30 |
|
|
Tag: ||| Qty: 0
|
Tag: "|||" Qty: 100 |
|
Tag: " " Qty: 100 ChangedQty: 70 |
The following example describes how tagNumber
3 pipes |||
is
replaced with blank if sync demand is used.
Demand | Sync demand | Get demand | Demand.Change event |
---|---|---|---|
Tag: ||| Qty: 10 |
Tag: " " Qty: 5 |
|
|
Tag: ||| Qty: 0
|
Tag: "|||" Qty: 20 |
|
Tag: " " Qty: 20 ChangedQty: 15 |
The total available quantity is 80(100+0-20-0=80)