ACSD-53148: due richieste parallele in GraphQL per aggiungere lo stesso prodotto configurabile
La patch ACSD-53148 risolve il problema che, in seguito a due richieste parallele in GraphQL per l’aggiunta dello stesso prodotto configurabile al carrello, risultavano in due articoli separati sul carrello con lo stesso SKU del prodotto. Questa patch è disponibile quando è installato Quality Patches Tool (QPT) 1.1.37. L’ID della patch è ACSD-53148. Il problema è pianificato per la risoluzione in Adobe Commerce 2.4.7.
Prodotti e versioni interessati
La patch è stata creata per la versione di Adobe Commerce:
- Adobe Commerce (tutti i metodi di implementazione) 2.4.5-p2
Compatibile con le versioni di Adobe Commerce:
- Adobe Commerce (tutti i metodi di implementazione) 2.4.4 - 2.4.6-p2
magento/quality-patches
alla versione più recente e verificare la compatibilità nella pagina Quality Patches Tool: Cerca patch. Utilizza l’ID patch come parola chiave di ricerca per individuare la patch.Problema
Due richieste parallele in GraphQL per l’aggiunta dello stesso prodotto configurabile al carrello hanno prodotto due elementi separati sul carrello con lo stesso SKU del prodotto.
Passaggi da riprodurre:
-
Creare un prodotto configurabile con SKU Test e un prodotto semplice con SKU Test-A.
-
Crea un nuovo carrello vuoto tramite GraphQL (cambia la posizione con il tuo URL):
code language-graphql curl --location 'http://mag.local/graphql' \ --header 'Store: default' \ --header 'Content-Type: application/json' \ --data '{"query":"mutation{\n createEmptyCart\n}","variables"{}}'
-
Esegui due richieste simultanee per aggiungere lo stesso prodotto al carrello (modifica cartID e percorso per entrambe le richieste):
code language-graphql curl --location 'http://mag.local/graphql' --header 'Store: default' --header 'Content-Type: application/json' --data '{"query":"mutation($cartId: String!, $preSku: String!, $preParentSku: String!) {\r\n addConfigurableProductsToCart(\r\n input: {\r\n cart_id: $cartId\r\n cart_items: [\r\n {\r\n parent_sku: $preParentSku\r\n data: {\r\n quantity: 1\r\n sku: $preSku\r\n }\r\n }\r\n ]\r\n }\r\n ) {\r\n cart {\r\n items {\r\n id\r\n product {\r\n name\r\n sku\r\n }\r\n quantity\r\n \r\n prices {\r\n price {\r\n value\r\n currency\r\n }\r\n }\r\n ... on ConfigurableCartItem {\r\n configurable_options {\r\n option_label\r\n value_label\r\n }\r\n }\r\n }\r\n total_quantity\r\n prices {\r\n grand_total {\r\n value\r\n currency\r\n }\r\n discounts {\r\n amount {\r\n value\r\n currency\r\n }\r\n label\r\n }\r\n subtotal_excluding_tax {\r\n value\r\n currency\r\n }\r\n } \r\n }\r\n }\r\n}","variables":{"cartId":"VV85vRfmCrRm0aKLKkNDrXH2S5y7sSpf","preParentSku":"Test","preSku":"Test-A"}}' & curl --location 'http://mag.local/graphql' --header 'Store: default' --header 'Content-Type: application/json' --data '{"query":"mutation($cartId: String!, $preSku: String!, $preParentSku: String!) {\r\n addConfigurableProductsToCart(\r\n input: {\r\n cart_id: $cartId\r\n cart_items: [\r\n {\r\n parent_sku: $preParentSku\r\n data: {\r\n quantity: 1\r\n sku: $preSku\r\n }\r\n }\r\n ]\r\n }\r\n ) {\r\n cart {\r\n items {\r\n id\r\n product {\r\n name\r\n sku\r\n }\r\n quantity\r\n \r\n prices {\r\n price {\r\n value\r\n currency\r\n }\r\n }\r\n ... on ConfigurableCartItem {\r\n configurable_options {\r\n option_label\r\n value_label\r\n }\r\n }\r\n }\r\n total_quantity\r\n prices {\r\n grand_total {\r\n value\r\n currency\r\n }\r\n discounts {\r\n amount {\r\n value\r\n currency\r\n }\r\n label\r\n }\r\n subtotal_excluding_tax {\r\n value\r\n currency\r\n }\r\n } \r\n }\r\n }\r\n}","variables":{"cartId":"VV85vRfmCrRm0aKLKkNDrXH2S5y7sSpf","preParentSku":"Test","preSku":"Test-A"}}'
-
Ottieni il carrello per visualizzare gli elementi (cambia cartId e il percorso):
code language-graphql curl --location 'http://mag.local/graphql' \ --header 'Store: default' \ --header 'Content-Type: application/json' \ --data '{"query":"{\n cart(cart_id: \"VV85vRfmCrRm0aKLKkNDrXH2S5y7sSpf\") {\n items {\n id\n product {\n name\n sku\n }\n quantity\n }\n\n }\n}\n","variables":{}}'
Risultati previsti:
Elemento elencato una volta con qty = 2.
{"data":{"cart":{"items":[{"id":"5","product":{"name":"config1","sku":"config1"},"quantity":2}]}}}%
Risultati effettivi:
Elemento elencato due volte con qty = 1.
{"data":{"cart":{"items":[{"id":"1","product":
{"name":"config1","sku":"config1"},"quantity":1},
{"id":"3","product":{"name":"config1","sku":"config1"},"quantity":1}]}}}%
Applicare la patch
Per applicare singole patch, utilizzare i collegamenti seguenti, a seconda del metodo di distribuzione utilizzato:
- Adobe Commerce o Magento Open Source locale: Quality Patches Tool > Utilizzo nella guida di Quality Patches Tool.
- Adobe Commerce su infrastruttura cloud: Aggiornamenti e patch > Applica patch nella guida Commerce su infrastruttura cloud.
Lettura correlata
Per ulteriori informazioni su Quality Patches Tool, vedere:
- Quality Patches Tool rilasciato: nuovo strumento per la gestione automatica delle patch di qualità nella Knowledge Base di supporto.
- Verifica se la patch è disponibile per il problema di Adobe Commerce utilizzando Quality Patches Tool nella guida di Quality Patches Tool.
Per informazioni sulle altre patch disponibili in QPT, fare riferimento a Quality Patches Tool: Cercare le patch nella guida di Quality Patches Tool.