[PaaS のみ]{class="badge informative" title="Adobe Commerce on Cloud プロジェクト(Adobeが管理する PaaS インフラストラクチャ)およびオンプレミスプロジェクトにのみ適用されます。"}

MDVA-37748:GraphQL クエリで、共有カタログに割り当てられていない商品が返される

MDVA-37748 パッチは、GraphQL クエリが共有カタログに割り当てられていない商品を返す問題を修正します。 このパッチは、品質パッチツール (QPT) ​ 1.1.5がインストールされている場合に使用できます。 パッチ IDはMDVA-37748です。 この問題は、Adobe Commerce 2.4.4で修正される予定です。

影響を受ける製品とバージョン

パッチはAdobe Commerceのバージョン​用に作成されました

Adobe Commerce(すべてのデプロイメント方法) 2.4.2

Adobe Commerceのバージョンとの互換性:

Adobe Commerce(すべてのデプロイメント方法) 2.4.2 - 2.4.2-p2

NOTE
パッチは、新しい品質パッチツールのリリースを含む他のバージョンに適用される場合があります。 パッチがAdobe Commerceのバージョンと互換性があるかどうかを確認するには、magento/quality-patches パッケージを最新バージョンに更新し、Quality Patches Tool:パッチの検索ページ ​で互換性を確認します。 パッチ IDを検索キーワードとして使用して、パッチを検索します。

イシュー

GraphQL クエリは、共有カタログに割り当てられていない商品を返します。

前提条件:

B2B モジュールがインストールされている。

複製する手順:

  1. 2つの製品を作成し、カテゴリに割り当てます。

    • 製品1 – 公開
    • 商品2
  2. 「Product 1 - Public」を「Default (General)」共有カタログに割り当てます。

  3. 追加のカスタム共有カタログを作成し、「製品2」に割り当てます。

  4. 新しい会社を作成し、手順3で作成した追加の共有カタログに割り当てます。

  5. cronの実行/再インデックスを作成した後、フロントエンドで、ログインしていない場合は「Product 1 - Public」が表示されることを検証します。

  6. 手順4で作成した会社の管理者としてログインし、「製品2」のみが表示されていることを確認します。

  7. 次のGraphQL クエリを使用して、認証トークンをリクエストします。

    code language-graphql
    mutation {
      generateCustomerToken(
        email: "company.admin@exapmle.test"
        password: "password"
      ) {
        token
      }
    }
    
  8. ヘッダー​ Authorization Bearer value-of-the-token ​を追加し、次のGraphQL クエリを実行します。

    code language-graphql
     {
       products(
           filter: {},
           pageSize: 100,
           currentPage: 1
           sort: {}
         ) {
           total_count
           page_info {
             page_size
             current_page
           }
           aggregations {
             attribute_code
             count
             label
             options {
               label
               value
               count
             }
           }
           items {
             name
             sku
             created_at
             updated_at
             stock_status
             description {html}
             short_description {html}
             url_key
             url_path
             price_tiers{
               final_price{
                   value
                   currency
                 }
               discount{
                   amount_off
                   percent_off
                 }
               quantity
             }
             price_range {
              maximum_price {
               regular_price {
                 value
               }
               final_price {
                 value
               }
             }
             minimum_price {
               regular_price {
                 value
               }
               final_price {
                value
               }
             }
           }
           image {
            url
           }
           thumbnail {
            url
           }
           small_image {
            url
           }
           media_gallery {
            url
           }
           ... on ConfigurableProduct {
             configurable_options {
              id
    
              label
              position
              use_default
              attribute_code
              values {
                value_index
                label
                swatch_data {
                  value
                }
             }
             product_id
           }
           variants {
             product {
               id
               name
               sku
               #margin
               #margin_percentage
               image {
                 url
               }
               small_image {
                 url
               }
               thumbnail {
                 url
               }
               media_gallery{
                 url
               }
               attribute_set_id
               ... on PhysicalProductInterface {
                 weight
               }
               price_range {
                 minimum_price {
                   regular_price {
                     value
                     currency
                   }
                 }
               }
             }
             attributes {
               label
               code
               value_index
             }
           }
         }
       }
    
     }
    }
    

期待される結果:

GraphQLから返されるカウントと商品は、ログインユーザーに関連付けられた共有カタログに割り当てられた商品のみを考慮します。

実際の結果:

「Product 2」のみが返されますが、total_countには2が表示されます。

{
  "data": {
    "products": {
      "total_count": 2,
      "page_info": {
        "page_size": 100,
        "current_page": 1
      },
      "aggregations": [
        {
          "attribute_code": "price",
          "count": 2,
          "label": "Price",
          "options": [
            {
              "label": "0-100",
              "value": "0_100",
              "count": 1
            },
            {
              "label": "100-200",
              "value": "100_200",
              "count": 1
            }
          ]
        },
        {
          "attribute_code": "category_id",
          "count": 1,
          "label": "Category",
          "options": [
            {
              "label": "Cat 1",
              "value": "3",
              "count": 2
            }
          ]
        }
      ],
      "items": [
        {
          "name": "Product 2",
          "sku": "Product 2",
          "created_at": "2021-05-12 10:51:44",
          "updated_at": "2021-05-12 11:03:24",
          "stock_status": "IN_STOCK",
          "description": {
            "html": ""
          },
          "short_description": {
            "html": ""
          },
          "url_key": "product-2",
          "url_path": null,
          "price_tiers": [
            {
              "final_price": {
                "value": 90,
                "currency": "USD"
              },
              "discount": {
                "amount_off": 10,
                "percent_off": 10
              },
              "quantity": 1
            }
          ],
          "price_range": {
            "maximum_price": {
              "regular_price": {
                "value": 100
              },
              "final_price": {
                "value": 90
              }
            },
            "minimum_price": {
              "regular_price": {
                "value": 100
              },
              "final_price": {
                "value": 90
              }
            }
          },
          "image": {
            "url": "../pub/static/version1620816308/frontend/Magento/luma/en_US/Magento_Catalog/images/product/placeholder/image.jpg"
          },
          "thumbnail": {
            "url": "../pub/static/version1620816308/frontend/Magento/luma/en_US/Magento_Catalog/images/product/placeholder/thumbnail.jpg"
          },
          "small_image": {
            "url": "../pub/static/version1620816308/frontend/Magento/luma/en_US/Magento_Catalog/images/product/placeholder/small_image.jpg"
          },
          "media_gallery": []
        }
      ]
    }
  }
}

パッチを適用する

個別のパッチを適用するには、デプロイメント方法に応じて次のリンクを使用します。

関連トピックス

品質パッチツールについて詳しくは、以下を参照してください。

QPTで使用可能な他のパッチについて詳しくは、「QPTで使用可能な パッチ」セクションを参照してください。

recommendation-more-help
c2d96e17-5179-455c-ad3a-e1697bb4e8c3