使用Adobe Commerce REST API時,可設定專案的商業發票建立失敗
使用Adobe Commerce REST API為可設定產品建立商業發票失敗,因為專案未出現在商業發票上,且不會觸發驗證錯誤。 若要修正此問題,請在發票請求中參考可設定(上層)產品的專案ID,而非簡單(下層)產品。
說明 description
環境
Adobe Commerce
問題/症狀
- 透過API建立的商業發票不包含可設定的產品。
- 僅使用子項(簡單)專案ID時,不會出現錯誤訊息。
- 包含父項數量為零的父項與子項識別碼會傳回沒有產品就無法建立發票。
- 簡單產品已成功開立發票。
解決方法 resolution
若要修正此問題,請遵循下列步驟:
-
透過查詢
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 -
透過REST API建立發票,方法是在請求裝載中僅包含可設定父產品的專案ID。
附註:不要包含子(簡單)產品專案ID,並且不要將任何專案的數量設為零。
-
使用下列裝載結構提交發票建立請求:
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 } ] } -
確認建立的發票包含所有預定可設定產品的明細專案。
備註
如果訂單中存在可設定產品的多種變化,請在建立商業發票時,使用對應這些變化的每個相關上階料號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。
3d58f420-19b5-47a0-a122-5c9dab55ec7f