When an order is placed in a store that supports multi locations, I can see on the order page in admin that the items have been tentatively assigned to a location. I see the inventory deducted from the qty available for that location on the product admin page, even though there is not yet any fulfillment, where the location has been assigned
However the Admin Rest api json response for the order does not contain this information.
How can I get the locations that the items on the order have been deducted from?
I have exactly the same problem/question.
Shopify has the "trickle down" ordering of locations via preferences, however I see no way to access this ordering of locations via the API. Nothing in the locations endpoint changes when you adjust the ordering, and as rplum mentions, there seems to be no way via the API to work out which location inventory was allocated from, despite Shopify having allocated it. This makes decisions based on where that inventory was allocated from impossible, such as bundle/kitting calculations which of course require location.
I'm having the same issue and this seems like such a ball drop on Shopify's part. How are we supposed to fulfill our orders if we have inventory at multiple locations? Does Shopify expect us to look in the order admin and then click into each order to see which location the inventory was deducted from? How is this a viable option? We use Ship Station but there is no way for us to show a list of orders that need to be fulfilled at Location A and then another list that needs to be fulfilled at Location B etc.
This information is clearly being saved by Shopify as the inventory is deducted from a specific location before it is fulfilled and the location is shown in the order admin but WHY IS THIS DATA NOT AVAILABLE IN THE API?????? (Sorry for yelling, but this is insane).
Shopify, pull your trousers up, give your head a shake and at least try and make Multi Location inventory a feature that actual businesses with multiple locations can use. And while you're at it hire someone on your development team that has actually worked in retail and get them to test your features before you release them.
At this point I feel like my only option is to build my own implementation of the same order routing logic that Shopify uses for assigning and deducting inventory. Something like this:
1. Order comes in
2. Check the available inventory at each location
3. Check the order routing hierarchy for each location
4. Choose the first available location that has inventory
Obviously not a great solution.
Looks like there is no way to commit inventory of a new order created via the API to a specific location is that correct?
Is this just something missed during the build of the new inventory and locations features? Will it be included soon? Seems a bit silly going to all the effort to building location based inventory only to not be able to assign an order to a specific locations inventory.
I noticed from the admin screen that the order can be assigned to a different location. Pretty much what I need to do but via the API.
Is it not that when you setup an item you assign it to locations. So that if it sells, it exists at locations. And when it comes time to fulfill, you choose the location to fulfill from? So instead of saying how do I assign a location to an item I sell in a new order, don't you instead use the API to decide which location you want to fulfill it from?
That would make perfect sense yes.
My reasoning for the post was that I am getting Unable to reserve inventory when inventory for an item is not assigned to my last location. If there is inventory in any location, I would expect I should be able to create the order and reserve the stock. Then it can be allocated to the location at fulfilment time as you say.
It wasn't until I added stock to my last location for the order item, that I was able to create the order and reserve the stock against the last location in the list.
Perhaps this is the problem and not necessarily that a location should be provided at order creation time.
Should an order be able to reserve stock from any location and not just the last location in the list?
I'm not sure if you're still looking for a solution for this but Shopify recently released a new endpoint called FulfillmentOrder that has the assigned_location_id attached to it.
This should fix the problem for you.
It is not surprising fulfillment is still a bit chaotic. Having taken apart services like Ship Station and others, I found none of them are very good at the intricacies of new Shopify. Just to re-iterate on the logic. One fulfills an SKU from a location. If you have an order, and you move to fulfill an item, it has levels at location(s). A good fulfillment algorithm is capable of examining those available locations before fulfillment and picking the right one to use. While that may seem obvious, it is seemingly not yet built-in to most of the services you can choose from as the low-fruit on the tree. They are slow to adapt their monoliths to these details particular to Shopify. Having an algorithm based off of choosing the first location, or the last location is hardly stellar if that means you're shipping something from Los Angeles to New York when you had an SKU sitting in Boston. So yes, running a small tight script yourself to aid in proper fulfillment might be the way to go, at least until the common services out there put on their big boy pants and figure it out too.
I found this new resource and thought it might be the answer to the problem but when I take an order that has been split by Shopify meaning that some items are allocated from the main warehouse and some are allocated from a different location I am not seeing any data in this resource. On the front end I can see the split in the order so the data must be in there somewhere but it does not exist in fulfillment_order...