MDVA-37748 : la requête GraphQL renvoie les produits non affectés au catalogue partagé

Le correctif MDVA-37748 corrige le problème lorsqu’une requête GraphQL renvoie des produits non affectés à un catalogue partagé. Ce correctif est disponible lorsque la variable Outil Correctifs de qualité (QPT) La version 1.1.5 est installée. L’ID de correctif est MDVA-37748. Veuillez noter que le problème doit être corrigé dans Adobe Commerce 2.4.4.

Produits et versions concernés

Le correctif est créé pour la version Adobe Commerce :

Adobe Commerce (toutes les méthodes de déploiement) 2.4.2

Compatible avec les versions d’Adobe Commerce :

Adobe Commerce (toutes les méthodes de déploiement) 2.4.2 - 2.4.2-p2

NOTE
Le correctif peut devenir applicable à d’autres versions avec les nouvelles versions de l’outil de correctifs de qualité. Pour vérifier si le correctif est compatible avec votre version d’Adobe Commerce, mettez à jour la variable magento/quality-patches vers la dernière version et vérifiez la compatibilité sur la page Quality Patches Tool: recherchez la page des correctifs.. Utilisez l’ID de correctif comme mot-clé de recherche pour localiser le correctif.

Problème

La requête GraphQL renvoie les produits qui ne sont pas affectés à un catalogue partagé.

Conditions préalables:

Les modules B2B sont installés.

Étapes à reproduire:

  1. Créez deux produits et affectez-les à une catégorie :

    • Produit 1 - Public
    • Product 2
  2. Affectez "Produit 1 - Public" au catalogue partagé "Par défaut (Général)".

  3. Créez un catalogue partagé personnalisé supplémentaire et affectez-le à "Produit 2".

  4. Créez une nouvelle société et affectez-la au catalogue partagé supplémentaire créé à l’étape 3.

  5. Après l’exécution/la réindexation de cron, sur le front-end, vérifiez que "Product 1 - Public" s’affiche si vous n’êtes pas connecté.

  6. Connectez-vous en tant qu’administrateur de la société créée à l’étape 4 et vérifiez que vous ne voyez que "Produit 2".

  7. Demandez un jeton d’autorisation à l’aide de la requête GraphQL suivante :

    code language-graphql
    
     mutation {
       generateCustomerToken(
         email: "company.admin@exapmle.test"
         password: "password"
       ) {
         token
       }
     }
    
    
  8. Ajouter un en-tête Valeur du jeton du porteur d’autorisation et exécutez la requête GraphQL suivante :

    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
         }
       }
     }
    
    
    
    
    }
    

Résultats attendus:

Le décompte et le produit renvoyé par GraphQL ne prennent en compte que le produit affecté au catalogue partagé associé à l’utilisateur connecté.

Résultats réels:

Seul "Product 2" est renvoyé, mais la variable total_count affiche deux.


{
  "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": []
        }
      ]
    }
  }
}

Appliquer le correctif

Pour appliquer des correctifs individuels, utilisez les liens suivants en fonction de votre méthode de déploiement :

Lecture connexe

Pour en savoir plus sur l’outil Correctifs de qualité, consultez :

Pour plus d’informations sur les autres correctifs disponibles dans QPT, reportez-vous à la section Correctifs disponibles dans QPT .

recommendation-more-help
8bd06ef0-b3d5-4137-b74e-d7b00485808a