[Solo PaaS]{class="badge informative" title="Se aplica solo a proyectos de Adobe Commerce en la nube (infraestructura PaaS administrada por Adobe) y a proyectos locales."}

MDVA-37748: La consulta de GraphQL devuelve productos no asignados al catálogo compartido

El parche MDVA-37748 corrige el problema en el que una consulta de GraphQL devuelve productos no asignados a un catálogo compartido. Este parche está disponible cuando está instalada la Herramienta de parches de calidad (QPT) 1.1.5. El ID del parche es MDVA-37748. Tenga en cuenta que el problema está programado para solucionarse en Adobe Commerce 2.4.4.

Productos y versiones afectados

El parche se ha creado para la versión de Adobe Commerce:

Adobe Commerce (todos los métodos de implementación) 2.4.2

Compatible con versiones de Adobe Commerce:

Adobe Commerce (todos los métodos de implementación) 2.4.2 - 2.4.2-p2

NOTE
El parche podría ser aplicable a otras versiones con las nuevas versiones de la herramienta Parches de Calidad. Para comprobar si el parche es compatible con su versión de Adobe Commerce, actualice el paquete magento/quality-patches a la última versión y compruebe la compatibilidad en la página Quality Patches Tool: buscar parches ​. Utilice el ID de parche como palabra clave de búsqueda para localizar el parche.

Problema

La consulta de GraphQL devuelve productos no asignados a un catálogo compartido.

Requisitos previos:

Los módulos B2B están instalados.

Pasos a seguir:

  1. Cree dos productos y asígnelos a una categoría:

    • Producto 1 - Público
    • Product 2
  2. Asigne "Product 1 - Public" al catálogo compartido "Default (General)".

  3. Cree un catálogo compartido personalizado adicional y asígnelo a "Producto 2".

  4. Cree una nueva compañía y asígnela al catálogo compartido adicional creado en el paso tres.

  5. Después de la ejecución/reindexación de cron, en el front-end, valide que puede ver "Producto 1: público" si no ha iniciado sesión.

  6. Inicie sesión como administrador de la compañía creada en el paso 4 y compruebe que solo ve el producto 2.

  7. Solicite un token de autorización con la siguiente consulta de GraphQL:

    code language-graphql
    mutation {
      generateCustomerToken(
        email: "company.admin@exapmle.test"
        password: "password"
      ) {
        token
      }
    }
    
  8. Agregue el encabezado Valor del token del portador de autorización y ejecute la siguiente consulta de 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
             }
           }
         }
       }
    
     }
    }
    

Resultados esperados:

El recuento y el producto devueltos por GraphQL solo tienen en cuenta el producto asignado al catálogo compartido asociado al usuario que ha iniciado sesión.

Resultados reales:

Solo se devuelve "Product 2", pero total_count muestra dos.

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

Aplicar el parche

Para aplicar parches individuales, utilice los siguientes vínculos según el método de implementación:

Lectura relacionada

Para obtener más información sobre la herramienta Parches de calidad, consulte:

Para obtener información sobre otros parches disponibles en QPT, consulte la sección Parches disponibles en QPT.

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