[PaaS만]{class="badge informative" title="Adobe Commerce 온 클라우드 프로젝트(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. 두 개의 제품을 만들고 카테고리에 할당합니다.

    • 제품 1 - 공개
    • 제품 2
  2. "Product 1 - Public"을 "Default (General)" 공유 카탈로그에 할당합니다.

  3. 추가 사용자 지정 공유 카탈로그를 만들어 "제품 2"에 할당합니다.

  4. 새 회사를 만들고 3단계에서 만든 추가 공유 카탈로그에 할당합니다.

  5. 프론트엔드에서 cron execution/reindex 를 실행한 후, 로그인하지 않은 경우 "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에는 두 개가 표시됩니다.

{
  "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