Proposal summary
Swift needs to restrict quantities being committed to backorders in older Transfer orders.
Requirement
A transfer order is raised to replenish products from the Warehouse to the store. If enough inventory is not available, WH partially fulfills the TO. The remaining items in the TO end up in back orders and remain locked to the TO.
When more quantity comes into the WH, the backorders in older TOs get committed first, and thus, these newly received quantities are not available for use in newer TOs, resulting in a lot of reallocations. Swyft needs to avoid this.
Once an IF is marked shipped, it will not come back to the TO to fulfill the back orders. The backorder line items can be marked CLOSED to free up the inventory for newer TOs. The following should happen once the WH fulfills the TO and updates the TO as COMPLETED. (COMPLETED is a custom field in the TO level)
Item lines that were not fulfilled must be closed immediately.
Item lines that were partially fulfilled must have the remaining quantity removed from backorders immediately without having to wait till they are received.
Our Solution
Prerequisite:
Need access to SWIFT account with Either Administrator role or Developer role with Full (create, view, edit & delete) permission to Transfer Order, Item Fulfillment, Item Receipt, Inventory Adjustment, etc.
Description:
There were 2 risk factors in the TO closing Method. They are:
- In Transfer Order, the Quantity column cannot be updated after fulfillment. So we cannot split the item lines once a fulfillment is created. This option is applicable only before the fulfillment creation.
- NS allows CLOSE that item line only after the IF is received.
An alternative solution is to set the COMMIT status in the Item lines to “DO NOT COMMIT”. This can be done by deploying a script on save of the TO.
After the TO is approved and fulfilled, the user will manually set the ORDER INTERNAL STATUS flag to “Completed” and UNCOMMIT PART-FULFILLED ITEMS flag as “True” on the TO level. Upon Save of the TO, a script will validate the following:
- At each item line, the fulfilled > 0 AND fulfilled != order quantity.
- At each item line, Closed = false.
- At the TO level, the custom field- ORDER INTERNAL STATUS flag is “Completed”
- At the TO level, the custom field- UNCOMMIT PART-FULFILLED ITEMS flag is “True”
and set the COMMIT status on the corresponding item lines = “DO NOT COMMIT” if there are remaining items to Fulfill (either as Committed/Backordered).
Effects of doing this:
- Below added TO have items in Line 2 and 3 fulfilled and Item in lIne 1 Which is all back ordered and so not fulfilled.
a. All the COMMIT status = “Available Qty”;
Items in Line 2 and 3 have 5 and 2 qty ordered respectively and the same qty available (committed). Partially fulfilled for 3 and 1 (picked) respectively.
b. When the COMMIT status = “Do Not Commit” all the qty ordered will become Backordered without affecting the already existing IF. It can be Packed, Shipped, and can then Receive.
Once the fulfilled quantity is received for that TO, then the backordered quantity will be updated to the remaining quantities
Note:
The fulfill button will still appear but if we click it the following error will be thrown out.
- Created an Inventory Adjustment for the Line 1 item.
c. The Committed Qty was not updated in the TO, as its COMMIT status was “Do Not Commit”.
d. The Committed Qty was updated in the TO, as its COMMIT status = “Available Qty”.
Conclusion:
Hence, by adjusting the Commit Status to “Do Not Commit”, we can avoid committing items in the existing TOs.
Assumption
- The script will be triggered on edit context only, after the TO is approved and the TO is fulfilled (partially/fully).
- ORDER INTERNAL STATUS and UNCOMMIT PART-FULFILLED ITEMS are custom fields in the TO body level, that are manually set by the user after fulfillment.
Risks
- This alternative is chosen as there were 2 risk factors in the TO closing Method. They are:
- In Transfer Order, the Quantity column cannot be updated after fulfillment. So we cannot split the item lines once a fulfillment is created. This option is applicable only before the fulfillment creation.
- NS allows CLOSE that item line only after the IF is received.
- If user manually changes the COMMIT Status to any other value the item lines will get committed
- Not considered the update of historical TOs within this scope. We can consider this on the next scope by reviewing the Transfer Orders Count and its period on Production.
- The effect of setting “Do Not Commit” is not the same as Closing a line on TO. So, the TO still remains open unless it is completely received/closed. Users can only close the order after receiving the fulfilled quantities completely. So we haven’t considered closing the TO in this scope. By setting the “Do Not Commit” in the item lines what we can achieve is to block committing the items to existing TOs.
- Since we planning to do a Server side script, the script will trigger also on the CSV import given that the user should enable the “RUN SERVER SUITESCRIPT AND TRIGGER WORKFLOWS” feature on the Advanced options upon doing CSV import
If the user performed an import without this feature, then the proposed script will not work