GraphQL Admin APIでfulfillmentStatusに相当するものを求めたい

Topic summary

GraphQL Admin APIにおいて、非推奨となったfulfillmentStatusfulfillableQuantityの代替方法について質問が提起されています。

問題点:

  • 公式ドキュメントではFulfillmentOrderLineItem.remainingQuantityを代替として推奨
  • しかし実際のテストでは、LineItem.unfulfilledQuantityの方が適切に動作

検証結果:

  • fulfillmentStatus = 'fulfilled' の条件: LineItem.unfulfilledQuantity = 0
  • fulfillmentStatus = 'partial' の条件: LineItem.unfulfilledQuantity > 0 かつ < LineItem.quantity

回答内容:
Qcoltd氏が質問者の見解を支持し、LineItem.unfulfilledQuantityの使用が正しいと確認。理由として、LineItem.quantityとの計算が必要なため、クエリがシンプルになる点を指摘。

推奨アクション:
パートナーダッシュボードのサポート経由でShopifyに技術的な問い合わせを行うことを提案。

ステータス: 未解決。公式見解の確認待ち。

Summarized with AI on October 27. AI used: claude-sonnet-4-5-20250929.

LineItemのfulfillmentStatusとfulfillableQuantityについて、下記ドキュメントを参照しております。

https://shopify.dev/docs/api/admin-graphql/2024-10/objects/LineItem#field-fulfillmentStatus
fulfillmentStatus: String!: non-null: Deprecated
Use [FulfillmentOrderLineItem#remainingQuantity] instead
The line item’s fulfillment status. Returns ‘fulfilled’ if fulfillableQuantity >= quantity, ‘partial’ if fulfillableQuantity > 0, and ‘unfulfilled’ otherwise.

[[https://]https://]https://shopify.dev/docs/api/admin-graphql/2024-10/objects/LineItem#field-fulfillableQuantity
fulfillableQuantity: Int!: non-null: Deprecated
Use [FulfillmentOrderLineItem#remainingQuantity] instead.
The total number of units to fulfill.

上記項目がDeprecatedになったため、fulfillmentStatusは下記計算ロジックにて求められると認識しました。
「Returns ‘fulfilled’ if fulfillableQuantity >= quantity, ‘partial’ if fulfillableQuantity > 0, and ‘unfulfilled’ otherwise.」
しかし、実際テストデータで検証したところ、上記記述と違って、以下のようになっているようです。

REST Admin APIの場合:
Order.line_items.fulfillment_status = ‘fulfilled’ if fulfillable_quantity = 0;
Order.line_items.fulfillment_status = ‘partial’ if fulfillable_quantity > 0 AND fulfillable_quantity < quantity;

GraphQL Admin APIの場合:
fulfillmentStatus = ‘fulfilled’ if LineItem.unfulfilledQuantity = 0
fulfillmentStatus = ‘partial’ if LineItem.unfulfilledQuantity > 0 AND LineItem.unfulfilledQuantity < LineItem.quantity

また、fulfillableQuantityの代替についても、上記記述にあるFulfillmentOrderLineItem.remainingQuantityではなく、
LineItem.unfulfilledQuantityの方が合っている気がしますが、その点ご教示いただけないでしょうか。

@R_Yamamoto

詳しくないのですが、興味があり調べてみました。

※GraphQLの方だけです。

GraphQL Admin APIの場合:
fulfillmentStatus = ‘fulfilled’ if LineItem.unfulfilledQuantity = 0
fulfillmentStatus = ‘partial’ if LineItem.unfulfilledQuantity > 0 AND LineItem.unfulfilledQuantity < LineItem.quantity

合っていらっしゃると思います。

また、fulfillableQuantityの代替についても、上記記述にあるFulfillmentOrderLineItem.remainingQuantityではなく、
LineItem.unfulfilledQuantityの方が合っている気がしますが、その点ご教示いただけないでしょうか。

こちらもおっしゃる通り、 LineItem.unfulfilledQuantityの方が合っているかと思います。

計算には、LineItem.quantityが必要なので、LineItem.unfulfilledQuantityの方がQueryがすっきりしますので。

しかし、

一度、Shopifyにもお問い合わせいただいた方が良いかと思います。

パートナーアカウントをお持ちだと思いますので、

パートナーダッシュボードのサポートからShopifyにお問い合わせすると、

通常のサポートよりも技術的な質問に回答してもらえます。

ご参考まで。

(キュー田辺)

1 Like