...
Select all fulfillments with the status New (1) and without any previously assigned warehouse, grouping by email/zip code
Check if a warehouse is available (according to the shipping countries, available quantity, distance, and priority), then orders can fit one of the below scenarios:
...
For the warehouses that have automatic stock reconciliation, the inventory is updated and just continues if this process is successful
Create packages for fulfilment with the status New (1) and with assigned warehouse
Update fulfilment status to Processing (9)
DFO is the only one that group packages, which needs to comply with the below rules:
A single package may contain products of multiple fulfilments
It is necessary to limit the weight of the package (according to each warehouse)
If the warehouse limit weight per package is not null, use this value (Kg)
If the warehouse limit weight per package is null, the packages will not be split based on weight
The system will also try to group similar SKUs in the same package
Before sending the fulfillments to the warehouse, the availability of stock will be checked between the products in the package and the warehouse’s real-time stock quantity
When the warehouse's real-time inventory is not sufficient, the system sends these orders to the backorder
Right after the shipment, each warehouse returns a response via the API, which is handled according to the documentation for each warehouse
The result of the API is updated in the system can be:
If successful, the fulfilment will be set to status Sent (2)
If successful and the warehouse provide the tracking number in the same response, the fulfilment status is set to Processed (3)
If error, the fulfilment status will be set to Error (4)
Moreover, for all cases, the processing details field is filled in when available with additional information
The inventory is also updated again
Ultimately, the system checks the processing details looking for some warehouse’s duplicate answers (security) and in the case finds one or some, it updates the fulfilment process according to the response, so to avoid future errors.
...
For example, the main order has 3 units of earpods EarPods on it and it has 2 upsells with one unit of earpods EarPods each. By applying the 50% Rule, this order is fulfilled ONLY if at least 3 units of earpods EarPods are available to be shipped in the first package. Then a second package will be sent, once the rest of the items are in stock.
...
Check the increases in the warehouses since the last time that this process runs, to avoid process orders without available stock.
Check if there is an available warehouse, which must:
have stock availability
delivery in that country
If the delivery country is the US, CA or MX and the warehouse is in the US or CA the system will accept it as a valid warehouse
Check warehouse distance
Confirm that inventory is available in that selected warehouse
If the products have:
Stock availability for which there is more than 50%
The SKU is in the exception list and with inventory available
Then, the fulfilment will be sent.
Set the fulfilment status to New (1) and add a note to the orders notes section about this process
Remove the order from the Future Sales Backorder if necessary
Update order status to Shipping (3)
Update CRM inventory
Remove from backorder
Check for any SKU exceptions that were not sent using this current warehouse. However, if it exists, the system will choose the best warehouse according to the same rules above and process it with the same actions to send this fulfilment.