Adobe Commerce REST APIを使用すると、設定可能な項目に対する請求書作成が失敗する

Adobe Commerce REST APIを使用した請求書の作成は、設定可能な製品で失敗します。設定可能な製品では、請求書に項目が表示されず、検証エラーがトリガーしません。 この問題を修正するには、請求書リクエストで単純(子)製品の代わりに、設定可能(親)製品の項目IDを参照します。

説明 description

環境

Adobe Commerce

問題/症状

  • APIを介して作成された請求書には、設定可能な製品は含まれていません。
  • 子(単純)項目IDのみを使用すると、エラーメッセージは表示されません。
  • 親商品に対してゼロ数量の親子商品IDを含めると、請求書は商品なしでは作成できません。
  • 簡易製品請求書が正常に発行されました。

解決策 resolution

この問題を修正するには、次の手順に従います。

  1. 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
    
  2. リクエストペイロードに設定可能な親製品の項目IDのみを含めることで、REST APIを介して請求書を作成します。

    注意:子(単純)の製品項目IDを含めず、項目の数量を0に設定しないでください。

  3. 次のペイロード構造を使用して、請求書作成リクエストを送信します。

    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
        }
      ]
    }
    
  4. 作成した請求書に、意図するすべての設定可能な製品の行項目が含まれていることを確認します。

メモ

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が使用されています。

関連トピックス

recommendation-more-help
3d58f420-19b5-47a0-a122-5c9dab55ec7f