使用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,并且不要将任何项目的数量设置为零。

  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的有效负载使用父项ID 232

相关阅读

recommendation-more-help
experience-cloud-kcs-help-kbarticles