使用Adobe Commerce REST API時,可設定專案的商業發票建立失敗

使用Adobe Commerce REST API為可設定產品建立商業發票失敗,因為專案未出現在商業發票上,且不會觸發驗證錯誤。 若要修正此問題,請在發票請求中參考可設定(上層)產品的專案ID,而非簡單(下層)產品。

說明 description

環境

Adobe Commerce

問題/症狀

  • 透過API建立的商業發票不包含可設定的產品。
  • 僅使用子項(簡單)專案ID時,不會出現錯誤訊息。
  • 包含父項數量為零的父項與子項識別碼會傳回​沒有產品就無法建立發票。
  • 簡單產品已成功開立發票。

解決方法 resolution

若要修正此問題,請遵循下列步驟:

  1. 透過查詢sales_order_item資料表,識別訂單中可設定(父)產品的專案識別碼。

    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. 透過REST API建立發票,方法是在請求裝載中僅包含可設定父產品的專案ID。

    附註:不要包含子(簡單)產品專案ID,並且不要將任何專案的數量設為零。

  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. 確認建立的發票包含所有預定可設定產品的明細專案。

備註

如果訂單中存在可設定產品的多種變化,請在建立商業發票時,使用對應這些變化的每個相關上階料號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的裝載使用父專案識別碼232

相關閱讀

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