Adobe Commerce REST APIを使用すると、設定可能な項目に対する請求書作成が失敗する
Adobe Commerce REST APIを使用した請求書の作成は、設定可能な製品で失敗します。設定可能な製品では、請求書に項目が表示されず、検証エラーがトリガーしません。 この問題を修正するには、請求書リクエストで単純(子)製品の代わりに、設定可能(親)製品の項目IDを参照します。
説明 description
環境
Adobe Commerce
問題/症状
- APIを介して作成された請求書には、設定可能な製品は含まれていません。
- 子(単純)項目IDのみを使用すると、エラーメッセージは表示されません。
- 親商品に対してゼロ数量の親子商品IDを含めると、請求書は商品なしでは作成できません。
- 簡易製品請求書が正常に発行されました。
解決策 resolution
この問題を修正するには、次の手順に従います。
-
sales_order_itemテーブルをクエリして、注文から設定可能(親)製品の項目IDを特定します。code language-none select item_id, sku, product_type from sales_order_item; 208 simple_skuA configurable 211 simple_skuA simple 214 simple_skuB configurable 217 simple_skuB simple 220 simple_skuC simple 223 simple_skuD simple -
リクエストペイロードに設定可能な親製品の項目IDのみを含めることで、REST APIを介して請求書を作成します。
注意:子(単純)の製品項目IDを含めず、項目の数量を0に設定しないでください。
-
次のペイロード構造を使用して、請求書作成リクエストを送信します。
code language-none curl -X POST \ -H "Content-Type: application/json" \ -H "Authorization: Bearer <token>" \ https://<store_url>/rest/V1/order/<order_id>/invoice { "items": [ { "order_item_id": 208, "qty": 1 }, { "order_item_id": 220, "qty": 1 }, { "order_item_id": 223, "qty": 1 } ] } -
作成した請求書に、意図するすべての設定可能な製品の行項目が含まれていることを確認します。
メモ
1つの注文内に設定可能な製品のバリエーションが複数ある場合は、請求書を作成する際に、それらのバリエーションに対応する各親項目IDを使用します。
select item_id, sku, product_type from sales_order_item;
226 simple_skuA configurable
229 simple_skuA simple
232 simple_skuB configurable
235 simple_skuB simple
この例では、SKU simple_skuBの請求書バリアント Bへのペイロードで、親アイテム ID 232が使用されています。
3d58f420-19b5-47a0-a122-5c9dab55ec7f