fulfillmentOrderMove
Requires access scope or
access scope. Also: The user must have fulfill_and_ship_orders permission.
Changes the location which is assigned to fulfill a number of unfulfilled fulfillment order line items.
Moving a fulfillment order will fail in the following circumstances:
- The fulfillment order is closed.
- The destination location has never stocked the requested inventory item.
- The API client doesn't have the correct permissions.
Line items which have already been fulfilled can't be re-assigned and will always remain assigned to the original location.
You can't change the assigned location while a fulfillment order has a
request status
of ,
,
, or
.
These request statuses mean that a fulfillment order is awaiting action by a fulfillment service
and can't be re-assigned without first having the fulfillment service accept a cancellation request.
This behavior is intended to prevent items from being fulfilled by multiple locations or fulfillment services.
How re-assigning line items affects fulfillment orders
First scenario: Re-assign all line items belonging to a fulfillment order to a new location.
In this case, the assignedLocation of the original fulfillment order will be updated to the new location.
Second scenario: Re-assign a subset of the line items belonging to a fulfillment order to a new location.
You can specify a subset of line items using the parameter
(available as of the
2023-04
API version),
or specify that the original fulfillment order contains line items which have already been fulfilled.
If the new location is already assigned to another active fulfillment order, on the same order, then a new fulfillment order is created. The existing fulfillment order is closed and line items are recreated in a new fulfillment order.
Arguments
- Anchor to fulfillmentOrderLineItemsfulfillment•
Order Line Items The fulfillment order line items to be moved. If left blank, all unfulfilled line items belonging to the fulfillment order are moved.
- •ID!required
The ID of the fulfillment order to be moved.
- Anchor to newLocationIdnew•
Location Id ID!required The ID of the location where the fulfillment order will be moved.
Anchor to FulfillmentOrderMovePayload returnsFulfillmentOrderMovePayload returns
- Anchor to movedFulfillmentOrdermoved•
Fulfillment Order The fulfillment order which now contains the moved line items and is assigned to the destination location.
If the original fulfillment order doesn't have any line items which are fully or partially fulfilled, the original fulfillment order will be moved to the new location. However if this isn't the case, the moved fulfillment order will differ from the original one.
- Anchor to originalFulfillmentOrderoriginal•
Fulfillment Order The final state of the original fulfillment order.
As a result of the move operation, the original fulfillment order might be moved to the new location or remain in the original location. The original fulfillment order might have the same status or be closed.
- Anchor to remainingFulfillmentOrderremaining•
Fulfillment Order This field is deprecated.
- Anchor to userErrorsuser•
Errors [UserError!]! non-null The list of errors that occurred from executing the mutation.
- Move some of the line items in a fulfillment order to a new location
- Moves a fulfillment order to a new location
- fulfillmentOrderMove reference
Examples
mutation fulfillmentOrderMove($id: ID!, $newLocationId: ID!) {
fulfillmentOrderMove(id: $id, newLocationId: $newLocationId) {
movedFulfillmentOrder {
id
status
}
originalFulfillmentOrder {
id
status
}
remainingFulfillmentOrder {
id
status
}
userErrors {
field
message
}
}
}
curl -X POST \
https://your-development-store.myshopify.com/admin/api/2024-04/graphql.json \
-H 'Content-Type: application/json' \
-H 'X-Shopify-Access-Token: {access_token}' \
-d '{
"query": "mutation fulfillmentOrderMove($id: ID!, $newLocationId: ID!) { fulfillmentOrderMove(id: $id, newLocationId: $newLocationId) { movedFulfillmentOrder { id status } originalFulfillmentOrder { id status } remainingFulfillmentOrder { id status } userErrors { field message } } }",
"variables": {
"id": "gid://shopify/FulfillmentOrder/940656279",
"newLocationId": "gid://shopify/Location/346779380"
}
}'
const { admin } = await authenticate.admin(request);
const response = await admin.graphql(
`#graphql
mutation fulfillmentOrderMove($id: ID!, $newLocationId: ID!) {
fulfillmentOrderMove(id: $id, newLocationId: $newLocationId) {
movedFulfillmentOrder {
id
status
}
originalFulfillmentOrder {
id
status
}
remainingFulfillmentOrder {
id
status
}
userErrors {
field
message
}
}
}`,
{
variables: {
"id": "gid://shopify/FulfillmentOrder/940656279",
"newLocationId": "gid://shopify/Location/346779380"
},
},
);
const data = await response.json();
const client = new shopify.clients.Graphql({session});
const data = await client.query({
data: {
"query": `mutation fulfillmentOrderMove($id: ID!, $newLocationId: ID!) {
fulfillmentOrderMove(id: $id, newLocationId: $newLocationId) {
movedFulfillmentOrder {
id
status
}
originalFulfillmentOrder {
id
status
}
remainingFulfillmentOrder {
id
status
}
userErrors {
field
message
}
}
}`,
"variables": {
"id": "gid://shopify/FulfillmentOrder/940656279",
"newLocationId": "gid://shopify/Location/346779380"
},
},
});
session = ShopifyAPI::Auth::Session.new(
shop: "your-development-store.myshopify.com",
access_token: access_token
)
client = ShopifyAPI::Clients::Graphql::Admin.new(
session: session
)
query = <<~QUERY
mutation fulfillmentOrderMove($id: ID!, $newLocationId: ID!) {
fulfillmentOrderMove(id: $id, newLocationId: $newLocationId) {
movedFulfillmentOrder {
id
status
}
originalFulfillmentOrder {
id
status
}
remainingFulfillmentOrder {
id
status
}
userErrors {
field
message
}
}
}
QUERY
variables = {
"id": "gid://shopify/FulfillmentOrder/940656279",
"newLocationId": "gid://shopify/Location/346779380"
}
response = client.query(query: query, variables: variables)