用途
该技能用于查询分配给某个来源地点的开放履约订单,并将其移动到目标地点。适用于仓库达到容量上限、地点即将关闭或区域路由规则发生变化的情况。它替代了在 Shopify Admin 中手动重新分配的操作,可在单个工作流中批量处理任意数量的开放订单。
主要能力
- 按来源地点查询状态为 OPEN 的履约订单,支持分页(每页 250 条,直到 hasNextPage 为 false)。
- 通过 fulfillmentOrderMove 变更将履约订单重新分配到目标地点。
- 支持可选的订单名称过滤(例如 "#1001,#1002"),便于优先处理特定订单。
- 支持 dry_run 预览模式(默认 true),在不执行变更的情况下确认订单列表与目标地点。
- 输出 human 或 json 格式的结果,并生成 CSV 路由日志。
使用方式
前置条件:
- 已认证的 Shopify CLI 会话:shopify store auth --store <domain> --scopes read_orders,write_fulfillments
- API 权限范围:read_orders、write_fulfillments
- 来源与目标地点均须为 Shopify 中有效的履约地点
参数:
- store(string,必填):商店域名,例如 mystore.myshopify.com
- source_location_id(string,必填):要移出订单的来源地点 GID
- destination_location_id(string,必填):要移入订单的目标地点 GID
- order_filter(string,可选):订单名称过滤器,例如 "#1001,#1002"
- dry_run(bool,可选,默认 true):预览移动而不执行变更
- format(string,可选,默认 human):输出格式,human 或 json
工作流步骤:
- 查询 fulfillmentOrders:输入 assignedLocationId(来源地点)、status: OPEN、first: 250 及分页游标;输出开放履约订单列表,分页直到 hasNextPage 为 false。
- 执行 fulfillmentOrderMove 变更:输入 id(履约订单 ID)与 newLocationId(目标地点);输出 movedFulfillmentOrder、originalFulfillmentOrder、remainingFulfillmentOrder 及 userErrors。
GraphQL 操作(已针对 api_version 2025-01 验证):
查询:
query FulfillmentOrdersByLocation($locationId: ID!, $after: String) { fulfillmentOrders( assignedLocationId: $locationId first: 250 after: $after query: "status:open" ) { edges { node { id status order { id name } assignedLocation { location { id name } } } } pageInfo { hasNextPage endCursor } } }
变更:
mutation FulfillmentOrderMove($id: ID!, $newLocationId: ID!) { fulfillmentOrderMove(id: $id, newLocationId: $newLocationId) { movedFulfillmentOrder { id assignedLocation { location { id name } } } originalFulfillmentOrder { id status } remainingFulfillmentOrder { id status } userErrors { field message } } }
会话跟踪:技能要求在开始、每步之后和完成时输出指定格式的进度信息。若 dry_run 为 true,每个变更步骤需加 [DRY RUN] 前缀且不执行。
输出格式:生成 CSV 文件 routing_log_<YYYY-MM-DD>.csv,包含列:order_name、fulfillment_order_id、source_location、destination_location、status。
适用场景
- 仓库容量溢出,需要将订单转移到其他履约地点。
- 某个地点即将关闭,需要提前转移其开放订单。
- 区域路由规则变更,需要重新分配履约责任。
- 需要优先处理特定高优先级订单时,可配合 order_filter 使用。
限制与安全注意事项
- fulfillmentOrderMove 会重新分配履约责任,影响由哪个仓库拣货和发货。移动前须确认目标地点对所有商品有足够库存。
- 移动履约订单不会移动库存;应使用 multi-location-inventory-audit 技能单独核实目标地点的库存水平。
- 建议始终先以 dry_run: true 运行,确认订单列表与目标地点后再提交。
- 对于地点关闭场景,应在地点在 Shopify Admin 中被停用之前运行此技能。
- 错误处理:THROTTLED(API 速率限制)需等待 2 秒并最多重试 3 次;fulfillmentOrderMove 的 userErrors(订单已履约或地点未激活)记录错误、跳过订单并继续;目标地点无库存时按 SKU 记录警告并继续移动;来源地点无开放订单时以摘要退出(0 个订单)。
- 来源与目标地点均须为有效的履约地点。