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

MDVA-37748 パッチは、GraphQLのクエリーが共有カタログに割り当てられていない商品を返す問題を修正します。 このパッチは、Quality Patches Tool (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
パッチは、新しい Quality Patches Tool リリースを使用する他のバージョンにも適用される可能性があります。 パッチがAdobe Commerceのバージョンと互換性があるかどうかを確認するには、magento/quality-patches パッケージを最新バージョンに更新し、Quality Patches Tool: Search for patches page で互換性を確認します。 パッチ ID を検索キーワードとして使用して、パッチを見つけます。

問題

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

前提条件 :

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

再現手順 :

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

    • 製品 1 - パブリック
    • 製品 2
  2. 「Product 1 - Public」を「Default (General)」共有カタログに割り当てます。

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

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

  5. Cron 実行/再インデックス作成後、フロントエンドで、ログインしていない場合に「製品 1 - パブリック」が表示されることを検証します。

  6. 手順 4 で作成した会社の管理者としてログインし、「Product 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
8bd06ef0-b3d5-4137-b74e-d7b00485808a