新たな変異 `fulfillmentOrderSplit` と `fulfillmentOrderMerge` がFulfillment Ordersの分割と統合を可能に

Shopifyの新APIバージョン2023-07にて、パートナーは一つの配送指示を複数の配送指示に分割したり、複数の配送指示を一つに統合したりすることが可能となりました。これにより、一つの配送指示内の商品ラインを複数の配送指示に分散させること、あるいは逆に複数の配送指示を一つに統合することが可能となりました。

技術的課題の定義と現状分析

これまで配送指示の分割や統合はプログラム的にはサポートされていませんでした。そのため、大量の商品ラインを含む配送指示を管理する際、手動で分割・統合する作業が必要であり、その過程でエラーが発生する可能性もありました。また、一部の商品ラインが遅延した場合でも全体の配送指示を待つ必要がありました。

具体的な技術的ソリューションの提案

新たに追加された `fulfillmentOrderSplit` と `fulfillmentOrderMerge` の変異を利用することで、これらの問題を解決することが可能となりました。これにより、一つの配送指示を複数の配送指示に分割したり、逆に複数の配送指示を一つに統合したりすることがプログラム的に可能となり、より効率的な配送指示の管理が実現可能となります。

実装手順とコード例

具体的な実装手順としては、まず `fulfillmentOrderSplit` を使用して配送指示を分割します。以下にそのコード例を示します。


mutation {
  fulfillmentOrderSplit(id: "gid://shopify/FulfillmentOrder/12345678", input: {
    createFulfillments: false,
    lineItemsByFulfillmentOrder: [{
      assignedFulfillmentOrderId: "gid://shopify/FulfillmentOrder/12345678",
      fulfillmentOrderLineItems: [{
        id: "gid://shopify/FulfillmentOrderLineItem/12345678",
        quantity: 1
      }]
    }]
  }) {
    originalFulfillmentOrder {
      id
    }
    newFulfillmentOrders {
      id
    }
    userErrors {
      field
      message
    }
  }
}

次に `fulfillmentOrderMerge` を使用して配送指示を統合します。以下にそのコード例を示します。


mutation {
  fulfillmentOrderMerge(id: "gid://shopify/FulfillmentOrder/12345678", input: {
    createFulfillments: false,
    mergeFulfillmentOrders: [{
      id: "gid://shopify/FulfillmentOrder/12345678",
    }]
  }) {
    fulfillmentOrder {
      id
    }
    userErrors {
      field
      message
    }
  }
}

パフォーマンス・コスト分析

新APIの導入により、手動での作業時間が大幅に削減され、エラー発生のリスクも低減されます。また、配送指示の管理がより効率的になり、全体のパフォーマンスを向上させることが期待できます。

実装時の注意点・ベストプラクティス

実装時には各商品ラインの状況を考慮し、適切に配送指示を分割・統合することが重要です。また、エラー処理を適切に行い、エラーが発生した場合でも対応可能な状態を保つようにしましょう。

次のステップ・発展案

今後はさらに配送指示の管理を自動化するための機能が追加されることが期待されます。これにより、より高度な配送指示の管理が可能となります。

参考記事: New mutations `fulfillmentOrderSplit` and `fulfillmentOrderMerge` that enables to split and merge Fulfillment Orders