Notes de mise à jour d’Adobe Commerce 2.4.3
Adobe Commerce 2.4.3 apporte des améliorations aux performances et à la sécurité, ainsi que des améliorations significatives de la plateforme. Les améliorations de sécurité comprennent l’extension de la couverture reCAPTCHA et l’inclusion de la limitation de débit intégrée. Les dépendances du compositeur principal et les bibliothèques tierces ont été mises à niveau vers les dernières versions compatibles avec PHP 8.x.
Cette version comprend plus de 370 nouveaux correctifs du code principal et 33 améliorations de la sécurité. Tous les problèmes connus identifiés dans les notes de mise à jour de la version 2.4.2 d’Adobe Commerce ont été corrigés dans cette version.
Voir les notes de mise à jour d’Adobe Commerce 2.4.2-p2 pour plus d’informations sur Adobe Commerce 2.4.2-p2.
Autres informations de mise à jour
Bien que le code de ces fonctionnalités soit fourni avec des versions trimestrielles , plusieurs de ces projets (par exemple, B2B, Page Builder et Progressive Web Applications (PWA) Studio) sont également publiés indépendamment. Les correctifs de bugs pour ces projets sont documentés dans les informations de mise à jour distinctes spécifiques au projet disponibles dans la documentation de chaque projet.
Appliquez MC-43048__set_rate_limit__2.4.3.patch pour résoudre le problème de limitation de débit de l’API
Ce correctif fournit une solution au problème en raison duquel les API Web ne peuvent pas traiter les requêtes contenant plus de 20 éléments dans un tableau. Ce problème affecte les déploiements exécutant Magento Open Source 2.4.3, Adobe Commerce 2.4.3 ou 2.3.7-p1. Une limitation de débit intégrée a été ajoutée à ces versions pour empêcher les attaques par déni de service (DoS). Le nombre maximal par défaut a été défini sur 20. Ce correctif rétablit la limite par défaut à une valeur plus élevée. Si vous pensez que votre boutique fait l’objet d’une attaque par déni de service, Adobe recommande de réduire les limites d’entrée par défaut à une valeur inférieure afin de limiter le nombre de ressources pouvant être demandées. Consultez l’article de la base de connaissances L’API Web ne peut pas traiter les requêtes comportant plus de 20 éléments.
Appliquez AC-384__Fix_Incompatible_PHP_Method__2.4.3_ce.patch pour corriger l'erreur fatale PHP lors de la mise à niveau
L’erreur fatale suivante peut se produire lors de la mise à niveau vers Adobe Commerce 2.4.3 :
PHP Fatal error: Uncaught Error: Call to undefined function Magento\Framework\Filesystem\Directory\str_contains() in [...]/magento/vendor/magento/framework/Filesystem/Directory/DenyListPathValidator.php:74
Cette erreur résulte de l'utilisation de la fonction str_contains
, qui est une fonction PHP 8.x. Adobe Commerce 2.4.3 ne prend pas en charge PHP 8.x. Ce correctif remplace cette fonction par une fonction PHP 7.x prise en charge. Consultez l’article Mise à niveau d’Adobe Commerce 2.4.3, 2.3.7-p1 PHP Correctif d’erreur fatalede la base de connaissances .
Appliquez AC-3022.patch
pour continuer à proposer DHL comme transporteur
DHL a introduit la version 6.2 du schéma et abandonnera la version 6.0 dans un avenir proche. Adobe Commerce 2.4.4 et les versions antérieures qui prennent en charge l’intégration DHL ne prennent en charge que la version 6.0. Les commerçants qui déploient ces mainlevées devraient appliquer AC-3022.patch
dès que possible pour continuer à offrir DHL en tant que transporteur. Pour plus d’informations sur le téléchargement et l’installation du correctif, consultez l’article de la base de connaissances Appliquer un correctif pour continuer à proposer DHL en tant que transporteur.
Faits saillants
Recherchez les points forts suivants dans cette version.
Améliorations substantielles de la sécurité
Cette version comprend 33 correctifs de sécurité et améliorations de la sécurité de la plateforme. La plupart de ces correctifs de sécurité ont été rétroportés en 2.4.2-p2 et 2.3.7-p1.
Trente-trois améliorations de la sécurité qui permettent de corriger les vulnérabilités RCE (Remote Code Execution) et XSS (Cross-site scripting)
Aucune attaque confirmée liée à ces problèmes ne s’est produite à ce jour. Cependant, certaines vulnérabilités peuvent potentiellement être exploitées pour accéder aux informations sur les clients ou prendre le contrôle de sessions d’administration. La plupart de ces problèmes nécessitent qu’un attaquant obtienne d’abord l’accès à l’administrateur. Placer sur la liste autorisée Par conséquent, nous vous rappelons de prendre toutes les mesures nécessaires pour protéger votre administrateur, y compris, mais sans s'y limiter, ces efforts : la limitation des adresses IP, l'authentification à deux facteurs, l'utilisation d'un VPN, l'utilisation d'un emplacement unique plutôt que d'un /admin
, et une bonne hygiène des mots de passe. Consultez le Bulletin de sécurité Adobe pour une discussion sur ces problèmes résolus.
Améliorations de la sécurité supplémentaires
Les améliorations apportées à la sécurité dans cette version améliorent la conformité aux dernières bonnes pratiques de sécurité, notamment :
-
Un nouveau plug-in Composer permet d’éviter toute confusion de dépendance et identifie les packages malveillants portant le même nom que les packages internes dans le référentiel public de packages. Consultez l’article de blog Plug-in du nouveau compositeur d’Adobe avec la version 2.4.3 .
-
La limitation de débit est désormais intégrée aux API pour empêcher les attaques par déni de service (DoS). Les API Web imposent désormais des restrictions sur la taille ou le nombre de ressources (la valeur maximale par défaut est définie sur 20 et peut être configurée sur une valeur différente en fonction des besoins de l’entreprise) qui peuvent être demandées par un client. Voir Limitation de débit pour plus d’informations sur la configuration de ces restrictions.
-
La couverture de ReCAPTCHA a été étendue pour inclure :
-
Les API web avec les pages HTML correspondantes sont couvertes via ReCAPTCHA. (Cela exclut les API Web accessibles par le biais d’intégrations.) La couverture ReCAPTCHA protège les points d’entrée des attaques de spam. Lorsque l’accès aux API web est réalisé par un service d’intégration tiers qui utilise OAuth, ReCAPTCHA est désactivé.
-
Page de storefront Passer une commande et API web liées au paiement. La protection ReCAPTCHA pour ces pages est désactivée par défaut et peut être activée à partir de l’Administration. Cette couverture ajoute un mécanisme anti-force brute pour protéger les magasins des attaques par cartes.
-
Améliorations de l’infrastructure
Cette version comprend des améliorations qui améliorent la qualité du framework et les domaines fonctionnels suivants :
-
Compte client
-
Catalogue
-
CMS
-
OMS
-
Import/Export
-
Promotions et ciblage
-
Panier et passer en caisse
-
B2B
-
Évaluation et prévisualisation
PayPal Pay Later est désormais pris en charge dans les déploiements qui incluent PayPal. Cette fonctionnalité permet aux acheteurs de payer une commande par versements bimensuels au lieu de payer le montant total au moment de l’achat.
Nouveau mode d’indexation use_application_lock
. Le mode use_application_lock
vous permet d’activer la réindexation soit en utilisant des variables d’environnement, soit en configurant le fichier app/etc/env.php
. Vous n’avez plus besoin de réinitialiser manuellement l’indexeur après un échec lorsque ce mode est activé. Voir Utilisation du mode de verrouillage de l’application pour les processus de réindexation.
Améliorations de Platform
La version 2.4.3 n'est pas encore compatible avec PHP 8.x, mais les mises à niveau suivantes de la plateforme nous rapprochent de la compatibilité future avec PHP 8.x.
-
Les dépendances du compositeur principal et les bibliothèques tierces ont été mises à niveau vers les dernières versions compatibles avec PHP 8.x.
-
La bibliothèque KnockoutJS a été mise à niveau vers la version 3.5.1 (la dernière version).
-
La bibliothèque TinyMCE v3 obsolète a été supprimée. Le module
Magento_Tinymce3Banner
et les tests MFTF relatifs à TinyMCE v3.x ont été supprimés d’Adobe Commerce. -
La compatibilité de la version 2.4.3 avec Redis 6.0.12 a été testée et confirmée. (la version 2.4.x reste compatible avec Redis 5.x.)
-
Les dépendances de la bibliothèque Laminas ont été mises à niveau vers des versions compatibles avec PHP 8.x. Certaines dépendances redondantes ont été supprimées du fichier
composer.json
. Adobe Commerce 2.4.3 utilise Laminas 3.4.0.
Améliorations des performances
Cette version comprend des améliorations qui réduisent le temps d’indexation des indexeurs de prix de produit et de règles de catalogue. Les commerçants peuvent désormais exclure un site web d’un groupe de clients ou d’un catalogue partagé, ce qui réduit le nombre d’enregistrements à indexer et améliore les temps d’indexation.
Recherche en direct
Live Search optimisé par Adobe Sensei offre une expérience de recherche intuitive en utilisant l’intelligence artificielle et des algorithmes de machine learning pour effectuer une analyse approfondie des données agrégées du visiteur. Voir Notes de mise à jour de Live Search.
GraphQL
Cette version ajoute la prise en charge de GraphQL pour les fonctionnalités suivantes :
-
Catalogues partagés
-
Listes de souhaits. La mutation addWishlistItemsToCart déplace les éléments de la liste de souhaits spécifiée vers le panier du client.
-
Registres des cadeaux. Les tâches couvertes incluent :
-
Utilisez la requête giftRegistry pour renvoyer le contenu des registres de cadeaux du client.
-
Créer, mettre à jour ou supprimer les registres de cadeaux.
-
Mettre à jour ou supprimer des articles d'un registre des cadeaux.
-
Déplacez tous les articles du panier vers le registre des cadeaux.
-
Ajouter, mettre à jour ou supprimer les inscrits d'un registre des cadeaux.
-
Partagez un registre cadeau avec les invités.
-
-
Devis négociables. Voir les requêtes
negotiableQuote
etnegotiableQuotes
.Les nouvelles mutations incluent :
-
itinéraires partagés. Les requête d’itinéraire et RoutableInterface prennent en charge les requêtes de routage sur les pages de produits, de catégories et de CMS. La requête
urlResolver
a été abandonnée et sa fonctionnalité a été remplacée par la requêteroute
.
Consultez le Guide du développeur de GraphQL pour plus d’informations sur ces améliorations.
B2B
La version 2.4.3 introduit B2B v1.3.2. Cette version comprend plusieurs correctifs. Voir Notes De Mise À Jour B2B.
Page Builder
Page Builder est désormais disponible en tant qu’extension groupée dans Magento Open Source. Il s’agit désormais de l’outil d’édition de contenu par défaut pour Adobe Commerce 2.4.3 et Magento Open Source 2.4.3. Il peut remplacer l’éditeur WYSIWG par n’importe quel module tiers.
Page Builder remplace l’éditeur TinyMCE dans les zones d’administration suivantes :
- Page CMS
- Bloc CMS
- Description de la catégorie
- Description du produit
Tout le contenu créé dans TinyMCE a été migré dans Page Builder en tant qu’HTML.
PWA Studio
Pour plus d’informations sur les améliorations et les correctifs, voir Versions de PWA Studio. Consultez compatibilité pour obtenir la liste des versions de PWA Studio et de leurs versions compatibles.
Outil de compatibilité de mise à niveau
Le périmètre de l’outil de compatibilité de mise à niveau a été étendu en fonction des commentaires de la communauté. Rejoignez notre canal Slack #upgrade-compatibility-tool pour obtenir de l’aide de l’équipe produit d’Adobe et de la communauté, ainsi que pour vous aider à orienter la direction future de l’outil.
Mises à jour de Cloud Managed Services
Cette version comprend des améliorations de notre prise en charge d’Amazon Simple Storage Service (AWS S3) et des services gérés dans le cloud Amazon Aurora. Il fournit une prise en charge certifiée pour AWS ElastiCache, AWS Elasticsearch et les files d’attente gérées par AWS (Rabbit MQ). (Nous avons testé la fonctionnalité, les performances et l’intégration de ces services avec Adobe Commerce.)
Intégration d’Adobe Stock
Cette version comprend l’intégration d’Adobe Stock v2.1.1.
Extensions développées par le fournisseur
Consultez les rubriques suivantes pour connaître les mises à jour sur les fonctionnalités et les modifications de cette version :
-
Amazon Pay. Amazon Pay a été abandonné et sera supprimé dans une version 2.4.x ultérieure. Les versions 2.4.3 et ultérieures contiennent uniquement des mises à jour pour la compatibilité et des correctifs pour les bugs majeurs.
Problèmes résolus
Nous avons corrigé des centaines de problèmes dans le code principal 2.4.3.
Installation, mise à niveau, déploiement
- La commande
bin/magento setup:db:status
renvoie désormais un message indiquant que tout est à jour après une mise à niveau réussie. Auparavant, l’application affichait cette erreur :Declarative Schema is not up to date
.
- Les valeurs de configuration sont désormais conservées lors du rechargement du formulaire lorsque la création d’un nouveau produit configurable échoue. Auparavant, les valeurs étaient perdues lors du rechargement du formulaire et l’application affichait cette erreur :
The value specified in the URL Key field would generate a URL that already exists
. GitHub-32102
- L’application ne renvoie plus d’exception lorsque vous exécutez
bin/magento setup:upgrade
pour effectuer une mise à niveau d’un déploiement Magento Open Source avec Redis vers Adobe Commerce.
- Les règles de prix de panier précédemment créées sont désormais affichées sur la page Tableau de bord d’évaluation du contenu après la mise à niveau d’un déploiement de Magento Open Source vers Adobe Commerce.
- Les déploiements exécutés sur le cluster Galera prennent désormais en charge davantage de clients. GitHub-31038
- Les administrateurs peuvent désormais se connecter à un déploiement lorsque l’application a été installée avec l’option
—use-rewrites=0
ou avec laweb/seo/use_rewrites
définie sur 0 danscore_config_data_table
. GitHub-32100
- Mise à jour du chargement du
sortOrder
pourAsyncCssPlugin
. L’application se charge désormaisAsyncCssPlugin
avant laJsFooterPlugin
. GitHub-30882
Magento\Config\Model\Config\PathValidator
vérifie désormais le chemin d’affichage pour déterminer si un élément existe et, s’il possède un chemin de configuration, utilise le chemin d’accèsconfig.xml
à la place pour la validation. GitHub-27678
- La compilation de fichiers Less avec Grunt ou par compilation côté serveur produit désormais les mêmes résultats. Précédemment.
.abs- styles
, qui étend d'autres.abs- styles
dans_extends.less
, n'ont pas été correctement générés lors de la compilation avec Grunt. Cela entraînait des différences entre les déploiements de production et de développement. GitHub-7231
AdminGWS
- L’administrateur GWS utilise désormais des valeurs
int
pour la condition SQLwebsite_id
dans les collections d’administrateurs pour les administrateurs disposant d’autorisations personnalisées.
Intégration d’Adobe Stock
- L’application affiche désormais un message d’information et un lien vers la page Admin Magasins > Configuration > Avancé > Système de la page Rechercher Adobe Stock lorsque Clé API (ID client) et Secret client ne sont pas définis. Auparavant, l’application affichait cette erreur :
We couldn't find any records
et aucun lien.
Serveur principal
- Les administrateurs disposant d’un accès restreint (par exemple, qui se voient attribuer l’accès à un seul site web) ne peuvent plus modifier les catégories définies sur la portée globale.
- Le rapport système généré (Système > Assistance > Rapport système) s’affiche désormais correctement. Auparavant, le contenu du rapport n’était pas aligné correctement.
- L’application désactive désormais la validation sur le champ Price comme prévu lorsque le paramètre Prix dynamique est activé lors de la création du bundle de produits. Auparavant, l’application générait une erreur de validation lorsque vous supprimiez une valeur du champ Prix lorsque le paramètre Prix dynamique était activé. GitHub-26214
- Les redirections infinies ne se produisent plus lorsque l’URL d’administration diffère de l’URL du site web par défaut dans les déploiements où l’application est configurée pour être accessible à partir de deux URL.
Lots de produits
- Vous pouvez désormais utiliser la mutation
addProductsToCart
pour ajouter un lot de produits avec plusieurs cases à cocher à un panier.
- L’indexation des prix des produits groupés est désormais exécutée à l’aide de tables temporaires, ce qui évite de verrouiller les tables de base de données. Auparavant, l’application utilisait des tables physiques, ce qui entraînait le verrouillage de celles-ci.
- Le prix d'un article groupé peut maintenant être défini sur 0,00. Auparavant, lorsque vous reveniez à la page de modification après avoir défini le prix sur 0,00, le prix revenait à sa valeur par défaut. GitHub-32383
- Les détails de commande des commandes contenant des produits groupés affichent désormais le prix correct des produits groupés si le prix a été modifié avant la commande.
- Le statut de stock du produit groupé est désormais mis à jour en fonction du statut de stock de ses produits enfants. Auparavant, les produits groupés s’affichaient comme étant en rupture de stock lorsqu’une option était supprimée du produit et le produit groupé avait deux options avec le même SKU.
- Un administrateur peut désormais modifier la valeur de l’attribut
Shipment Type
d’un produit groupé après l’avoir déplacé vers un autre groupe d’attributs. Auparavant, cet attribut était toujours enregistré avec une valeurTogether
s’il était déplacé vers un groupe d’attributs autre que le groupe par défaut dans le jeu d’attributs.
- La mutation
setGuestEmailOnCart
de GraphQL met désormais correctement à jour les e-mails des invités. Auparavant, les tables devis et adresse de devis n'étaient pas mises à jour.
- L’ajout, la suppression ou la mise à jour d’un produit enfant vers un produit groupé par le biais d’appels API REST déclenche désormais la réindexation prévue. Auparavant, ces actions ne déclenchaient pas de réindexation et, par conséquent, le produit groupé ne modifiait pas son statut de stock tant qu’une réindexation manuelle n’était pas effectuée.
- L’application affiche désormais la plage de prix correcte pour les produits groupés avec des prix par niveau. GitHub-30284
- L’application affiche désormais le même prix total que prévu sur la page du panier et à l’étape d’expédition du workflow de passage en caisse une fois que le prix d’une offre groupée a été modifié.
- Vous pouvez désormais configurer une offre groupée avec succès en y accédant à partir du panier d’un client. Auparavant, la page Configurer le produit n’était jamais complètement chargée et vous ne pouviez pas enregistrer vos paramètres.
- Les commerçants peuvent désormais attribuer un prix unique pour un produit groupé sur chaque vue de magasin d’un déploiement multimagasin. Les prix spécifiques au site web sont enregistrés dans le tableau
catalog_product_bundle_selection_price
. Auparavant, l’application ne basait pas le prix d’un produit groupé sur la portée du site web, même lorsque Magasins > Configuration > Catalogue > Catalogue > Prix > Étendue du prix du catalogue était défini surWebsite
. Aucun prix spécifique au site Web n'a été enregistré encatalog_product_bundle_selection_price
. GitHub-12584
- Les factures des produits groupés affichent désormais la quantité correcte pour les produits simples associés lorsque la fonction Tarification dynamique est désactivée. Auparavant, les produits simples associés au produit groupé avaient la quantité du produit parent, et non du produit groupé). GitHub-30802
- La mutation
updateProductsInWishlist
met désormais à jour avec succès les éléments appartenant à un lot de produits dans une liste de souhaits. Auparavant, au lieu de mettre à jour l’élément de la liste de souhaits, cette mutation l’avait supprimé et en avait créé un nouveau, ce qui modifiait l’ID de l’élément.
- Vous pouvez désormais définir les attributs de lot
required_options
ethas_options
comme prévu lors de la création ou de la mise à jour d’un produit groupé à l’aide du point d’entréePOST /V1/product/:sku
. Auparavant, ces attributs personnalisés étaient définis sur 0 (zéro) malgré les efforts pour le définir sur 1 (un).
- Les données de produit groupées qui étaient auparavant manquantes sont désormais incluses dans le processus d’évaluation. Cela résout les incohérences du comportement du produit lorsque les acheteurs ont acheté un produit groupé à partir de la page de liste des produits plutôt que de l’ajouter directement à partir d’une page de produit.
Cache
- Le fichier
varnish6.vcl
a été mis à jour pour contourner la mise en cache de la page client.
CAPTCHA
- CAPTCHA valide désormais correctement les données fournies par un acheteur, et les champs CAPTCHA s'affichent désormais comme prévu après les multiples tentatives infructueuses d'un acheteur de passer en caisse avec PayPal Payflow Pro.
- La validation CAPTCHA n’échoue plus de manière aléatoire sur la page de paiement du workflow de passage en caisse.
- L’application affiche désormais les champs CAPTCHA comme prévu une fois que vous avez dépassé le nombre de tentatives d’achèvement ayant échoué. Auparavant, bien que l’application vous invitait à relancer le test CAPTCHA, elle n’affichait pas les champs CAPTCHA.
- CAPTCHA fonctionne désormais comme prévu sur la page de passage en caisse. Auparavant, lorsqu’un acheteur répondait correctement à un défi CAPTCHA, le chargeur sur la page de passage en caisse ne se terminait jamais et l’application affichait cette erreur :
captchaData[formId] is undefined
. (Cette erreur ne se produisait que lorsque l’acheteur utilisait le même navigateur à partir duquel il avait précédemment accédé à un déploiement exécutant 2.3.5-p1.)
_.isEmpty()
archivages dans le fichierdefaultCaptcha.js
sont maintenant terminés. Auparavant, ces vérifications n’étaient pas terminées et, par conséquent, le chargement de la page d’extraction échouait après la mise à niveau. GitHub-31641
Panier et passer en caisse
- L’application prend désormais en compte les localisateurs décimaux spécifiques aux paramètres régionaux lors de la conversion et de la mise à jour de la quantité de produits dans le panier.
- Les commandes n’omettent plus un nom de client fourni avec une adresse de livraison. Auparavant, les noms étaient omis car l’indicateur
same_as_billing
n’était pas enregistré dans la base de données.
- Les liens vers les registres de cadeaux persistent désormais comme prévu lorsque vous modifiez un produit dans le panier. Auparavant, ces liens disparaissaient lorsque vous cliquiez sur le bouton Mettre à jour le panier.
- Tous les messages de file d’attente destinés aux
quoteItemCleaner
de consommateurs passent désormais à l’étatcomplete
comme prévu après la suppression de plusieurs produits. Auparavant, un seul message pour ce client modifiait son statut encomplete
, et le reste passait àin progress
.
- L’application affiche désormais le message de validation des conditions générales dans le bloc approprié uniquement lorsqu’un acheteur clique sur le bouton Passer une commande. Auparavant, l’application affichait ce message dans le bloc Appliquer le code remise chaque fois qu’un acheteur modifiait le mode de paiement dans le workflow de passage en caisse :
The order wasn't placed. First, agree to the terms and conditions, then try placing your order again
.
- Vous êtes maintenant redirigé vers la page de passage en caisse comme prévu après l’ajout d’un produit groupé au panier à partir de l’aperçu de la Mise à jour de la planification et un clic sur le panier. GitHub-447
- L’application ignore désormais les modifications apportées au formulaire d’adresse de facturation à l’étape de paiement de la commande si l’acheteur ne clique pas sur le bouton Mettre à jour et revient à l’étape d’expédition.
- L’application affiche désormais un message d’erreur informatif et ne met pas à jour la quantité de produit lorsqu’un acheteur ajoute une quantité de produit non valide et clique sur le bouton Mettre à jour les articles et les quantités sur la page Gérer le panier. Auparavant, l’application mettait à niveau la quantité de produit et n’affichait pas de message d’erreur. GitHub-459
- Les produits dotés d’une option personnalisable
(File)
désormais inclure des liens actifs comme prévu tout au long du processus de passage en caisse avec expédition multiple. Auparavant, ce lien était manquant. GitHub-31095
- Le panier d’administration affiche désormais les prix des produits dans les devises correctes pour les magasins qui prennent en charge plusieurs devises. Auparavant, les prix étaient convertis dans la devise spécifiée plus d’une fois, d’abord lorsque les produits étaient ajoutés au panier à partir du storefront, puis de nouveau lorsque la commande était ensuite rendue sur l’administrateur.
- L’application vide désormais le panier comme prévu une fois qu’un administrateur a terminé une commande de l’administrateur créée par un acheteur sur le storefront. Auparavant, lorsque le client se reconnectait après que l’administrateur avait terminé la commande, le panier contenait toujours le contenu de la commande. GitHub-30262
- Les acheteurs peuvent désormais ajouter un produit à leur panier dont le prix minimum annoncé (MAP) dépasse son prix normal.
- Les acheteurs peuvent désormais modifier leur adresse de facturation à partir du workflow de passage en caisse lors de la paiement avec plusieurs adresses.
- Toutes les transactions de paiement créées par les invités sont maintenant enregistrées dans la base de données et visibles dans l'administrateur comme prévu. Auparavant, seul un petit sous-ensemble d’ordres simultanés était enregistré dans la base de données, et la plupart des ordres étaient perdus en raison des dépassements de délai résultant des verrous de la base de données. GitHub-25862
- L’application affiche désormais correctement les messages de bienvenue intégrés qui contiennent des caractères spéciaux lorsqu’un invité place un produit dans le mini panier. Auparavant, l’application n’ajoutait pas le produit au mini panier ou n’affichait pas le message de bienvenue. GitHub-32250
- La page d’expédition du workflow de passage en caisse se charge désormais correctement lorsque la diffusion en magasin est activée. Auparavant, l’application générait une erreur JavaScript et la page de passage en caisse d’expédition ne s’affichait pas complètement.
- Ajout de l’argument
itemResolvers
au fichier dedi.xml
du catalogue. Par conséquent, l’extraction n’est plus interrompue si les modules de produit configurables et groupés sont désactivés. GitHub-30860
- L’application affiche désormais les boutons radio dans la section Informations sur le paiement et l’expédition comme prévu lors du workflow de réorganisation de l’administrateur. GitHub-30257
- L’application applique désormais correctement les règles de prix de panier avec une remise fixe au niveau du panier lorsque le panier contient un produit groupé avec plusieurs options. Auparavant, la règle de prix de panier n’était pas complètement appliquée à la commande. GitHub-30952
- Le bouton Ajouter au panier dans la vue Liste des catégories fonctionne désormais comme prévu. GitHub-32232
- Vous pouvez désormais utiliser les
/V1/carts/mine/items
POST pour ajouter une quantité personnalisée de produits regroupés à un panier. GitHub-26909
- L’application ne renseigne plus la zone des adresses de facturation du workflow de passage en caisse avec l’adresse d’expédition. Auparavant, lorsque le champ État/Province de l’adresse de facturation était vide et que les adresses d’expédition et de facturation différaient, l’application renseignait le champ Adresse de facturation État/Province avec les informations provenant de l’adresse d’expédition. GitHub-31608
Catalogue
- La mise à jour en masse des attributs Activer les incréments de quantité et Incréments de quantité fonctionne désormais comme prévu. GitHub-29544
- Vous pouvez désormais dupliquer un catalogue partagé qui contient des SKU numériques uniquement. Auparavant, l’application générait une erreur lorsque vous tentiez de dupliquer un catalogue partagé, car la classe
\Magento\Catalog\Model\ProductIdLocator
ne fonctionnait pas correctement avec les SKU numériques uniquement.
- L’application ne renvoie plus d’erreur JavaScript après l’activation de la synchronisation de produits récents avec l’administrateur. Auparavant, l’application affichait cette erreur JavaScript :
Cannot read property 'status' of undefined
.
- Les mises à jour de la disposition du thème personnalisé sont désormais appliquées comme prévu. Auparavant, les mises à jour de la disposition des thèmes personnalisés étaient ignorées.
- Le cache de catégorie de produits est maintenant effacé comme prévu par
cron
lors de l’exécution duindexer_update_all_views
. Auparavant, les décomptes de produits sur la page Catégorie après la réindexation étaient incorrects.
- Les valeurs d’attribut restent désormais inchangées lorsqu’un attribut n’est pas spécifié dans une requête d’API REST de mise à jour de produit pour une vue de magasin. Auparavant, si aucun attribut n’était spécifié, l’application réinitialisait la valeur de l’attribut à sa valeur d’étendue par défaut.
- La grille de produits d’administration (Admin Catalogue > Produits) affiche désormais le nombre correct de produits lorsque les produits sont filtrés par SKU.
- L’application affiche désormais un statut de stock précis lorsqu’un produit est ajouté à une page CMS lorsque les autorisations de catégorie sont activées et empêche l’affichage du prix pour le groupe du client spécifié. Auparavant, tous les produits s’affichaient comme en rupture de stock, quel que soit le statut du stock réel.
- Le champ de saisie de prix de bloc de prix du groupe de clients Tarification avancée comporte désormais une largeur minimale de cinq chiffres. Auparavant, seuls deux symboles étaient visibles dans ce champ sur les affichages basse résolution.
- L’application supprime désormais correctement une image de média de produit après la suppression d’un produit. Auparavant, l’image du média produit restait dans le dossier après la suppression réussie du produit.
- La mise en page se met désormais à jour comme prévu lorsque vous créez ou modifiez un produit dans l’administration, puis créez une mise à jour de conception de planification. GitHub-32007
- Un attribut de produit personnalisé avec une valeur de zéro peut désormais être enregistré en tant que vide. Auparavant, l’application ne mettait pas à jour cette valeur sur vide.
- Les fichiers de mise à jour de la mise en page de catégorie personnalisée s’appliquent désormais aux produits comme prévu. Auparavant, le handle du fichier de mise à jour (
catalog_category_view_*
) ne correspondait pas au handle du produit. GitHub-27285
- Le tri a été désactivé pour la colonne Taxe fixe sur les produits (FPT) de la liste des produits d’administration. Auparavant, la page Products ne pouvait pas être rechargée une fois la colonne FPT triée.
- L’aperçu du widget de produits Page Builder fonctionne désormais comme prévu dans un déploiement multisite lorsque les produits correspondants ont un prix différent sur chaque site web.
- Le tri par position dans la recherche de produits à l’aide de GET
/rest/V1/products/?searchCriteria[filterGroups]
fonctionne désormais comme prévu. Auparavant, la collection de produits ne comportait pas de champposition
de valeur pour le tri. GitHub-31591
- Les utilisateurs administrateurs peuvent désormais voir des espaces doubles dans les champs Nom et SKU dans la grille de produit. Auparavant, l’application réduisait plusieurs espaces en un seul espace.
- Les produits s’affichent désormais comme étant en rupture de stock sur le storefront lorsque la quantité vendable sur l’administrateur est de 0. Auparavant, ces produits étaient répertoriés comme étant en stock sur le storefront et l’application affichait un bouton Ajouter au panier actif. GitHub-31117
- Les administrateurs peuvent désormais ajouter des produits dotés d’options personnalisables
(File)
à la grille Articles commandés de la section Panier (colonne Activités du client) de la page Admin de Client. Auparavant, l’application n’ajoutait pas l’élément à la liste, car la valeur n’était pas correctement formatée avant d’être insérée dans\Magento\Catalog\Model\Product\Type\AbstractType::_prepareOptions
.
- L’application n’invite plus les acheteurs à sélectionner une option de produit pour un produit groupé qui ne comporte qu’une seule option.
- L’application affiche désormais toutes les sous-catégories dans les mises à jour de la mise en page (catégories d’ancrage et autres) lors de la création d’un widget.
- La requête
product
ne remplace plus les valeurs par défaut de toutes les vues de magasin dans un déploiement multi-magasin lorsqu’un nom de produit est mis à jour pour une seule vue de magasin uniquement. GitHub-31083
- Adobe Commerce met à jour le nombre total de pages comme prévu lorsque vous modifiez la valeur par page de la liste de produits associés à l’administration, de ventes incitatives et de ventes croisées. GitHub-31059
- Les administrateurs peuvent désormais ajouter des produits avec plusieurs options personnalisables
(File)
à une commande par SKU.
- L’application ne renvoie plus d’erreur lorsqu’un administrateur disposant d’autorisations restreintes ajoute un widget Produit à une page CMS dans l’interface d’administration. Auparavant, l’application générait cette erreur lorsque l’administrateur cliquait sur le bouton Enregistrer :
We are sorry, an error has occurred while generating the content
.
- Les pages Détails du produit s’ouvrent désormais avec l’option de personnalisation de la date renseignée avec la date de la commande précédente lorsque l’option Utiliser le calendrier JavaScript est activée. Le programme de résolution de valeur d’option de date personnalisée revient désormais à un autre format si la valeur n’est pas formatée en fonction de la configuration actuelle. Auparavant, la valeur de l’option de date personnalisée était vide.
- L’application affiche désormais une seule erreur dans le panier lorsque le produit est en rupture de stock. Auparavant, l’application affichait des messages redondants. GitHub-27469
- Les administrateurs peuvent désormais ajouter un produit avec une option personnalisable
(File)
à une commande par SKU. GitHub-30285
- Vous pouvez désormais enregistrer un produit et un prix sans spécifier de
type_id
. GitHub-13639
- Les produits du groupe sont désormais disponibles sur le storefront comme prévu lorsqu’une requête de
PUT /V1/products/:sku/links
REST est utilisée pour associer un nouveau produit enfant à un nouveau produit du groupe. Auparavant, les produits n’étaient pas correctement indexés après l’exécution debin/magento cron:run
.
- Vous ne pouvez plus créer de produit avec une valeur de SKU
NULL
. Auparavant, vous pouviez créer un produit sans valeur de SKU par le biais d’un importateur personnalisé ou directement dans la base de données, mais lorsque vous avez tenté de le modifier à partir de l’Administration, l’application a généré une erreur. GitHub-27411, GitHub-32525
- L’ajout d’options personnalisées requises à un produit simple ne le supprime plus des produits composites parents sans avertissement. L’application affiche désormais un avertissement informatif et n’enregistre pas le produit. Auparavant, l’application enregistrait les modifications du produit et n’affichait pas d’avertissement. GitHub-30492
Règle de catalogue
- La requête
products
renvoie désormais les valeurs actuelles lorsqu’une règle de prix de catalogue s’applique à un article. GitHub-26738
- Les tables temporaires commençant par
catalogrule_product__temp
sont désormais supprimées comme prévu lorsque la réindexation échoue après l’expiration, la désactivation ou la désactivation d’une règle de panier ou de catalogue. GitHub-22273
- Les fuseaux horaires sont désormais appliqués de la même manière dans
\Magento\CatalogRule\Model\Indexer\IndexBuilder::reindexById
et\Magento\CatalogRule\Model\Indexer\IndexBuilder::reindexByIds
. GitHub-29549
Contenu CMS
- Les images volumineuses sont désormais redimensionnées comme prévu lors du chargement lorsque le paramètre de configuration Activer le redimensionnement front-end est activé.
- Correction de la gestion des erreurs pour le contrôleur d’enregistrement de page CMS. Auparavant, lorsqu’un objet
Error
était généré sur l’événementcms_page_prepare_save
, l’application transmettait cet objet à la fonctionaddExceptionMessage
, rompant son contrat, car cette fonction attend unException
. Ce problème a été résolu en ajoutant un message d’erreur à l’aide de la fonctionaddErrorMessage
. GitHub-30149
- Vous pouvez désormais affecter une nouvelle page à plusieurs nœuds à partir de l’onglet Hiérarchie de la page Modifier de CMS . Auparavant, une violation de contrainte unique se produisait lorsque vous tentiez d’affecter la page à un nœud. GitHub-363
Produits configurables
- L’application ne duplique plus les miniatures de produit dans la galerie d’images d’un produit lorsque vous cliquez sur les options configurables d’un produit.
- Le pop-up de configuration que l’application affiche lorsque vous modifiez un produit configurable d’une liste de souhaits se ferme désormais comme prévu lorsque vous cliquez sur le bouton OK.
- L’application génère désormais correctement des factures pour les commandes qui ne contiennent qu’un seul produit configurable. GitHub-31143
- Les acheteurs peuvent désormais ajouter des produits configurables à leur panier à partir d’une vue de magasin autre que celle par défaut. Auparavant, lorsque l’acheteur dans une vue de magasin autre que la vue par défaut tentait d’ajouter un produit configurable, l’application affichait cette erreur :
Could not add item to cart. Please check required options and try again
. GitHub-31660
Politique de sécurité du contenu (CSP)
- La politique de sécurité du contenu prend désormais en charge le chargement d’images et de polices codées en base64 via
data: scheme
.
cron
- Les requêtes de nettoyage du cron ont été restructurées afin de réduire ou d’éliminer les problèmes de performances suivants :
cron
tâches restées bloquées en attente, requêtes MySQL de plus en plus lentes et une utilisation accrue de CPU. GitHub-26507
- Les
cronjobs
dont le statut est défini surrunning
depuis plus de 24 heures sont désormais automatiquement changées en statuterror
. Par conséquent, une nouvelle instance de cette tâche peut s’exécuter à nouveau et vous n’avez pas besoin de modifier manuellement le statut de la tâche lorsqu’une tâche reste incorrectement définie sur le statutrunning
. Auparavant, si uncronjob
était bloqué au statutrunning
, l’application empêchait le démarrage de nouvelles instances du même traitement et vous deviez modifier manuellement le statut du traitement. GitHub-8933
cron
tâches se terminent maintenant comme prévu et ne génèrent plus cette erreur de sérialisation :[Magento\Framework\DB\Adapter\DeadlockException]SQLSTATE[40001]: Serialization failure: 1213 Deadlock found when trying to get lock; try restarting transaction, query was: DELETE FROM cron_schedule WHERE (status = 'missed') AND (job_code in ('indexer_reindex_all_invalid', 'indexer_update_all_views', 'indexer_clean_all_changelogs')) AND (created_at < '2018-09-28 18:32:28')
. GitHub-18409
indexer_update_all_views
tâches cron s’exécutent désormais comme prévu après un échec précédent. L’exécution ayant échoué est marquée comme un échec dans lecron_schedule schedule
et l’exécution suivante n’échoue pas automatiquement. Auparavant, le tableaucron_schedule
contenait des tâches en attente etindexer_update_all_views
tâche cron ne s’exécutait pas. GitHub-23054
cron
interblocages ne se produisent plus lorsquecron
tentez de définir un verrou dans les déploiements volumineux où les groupes se chevauchent. GitHub-8933
cron
interblocages ne se produisent plus sur la tablecron_schedule
après l’exécution de seulement quelques tâchescron
. GitHub-22438
Attributs de client personnalisés
- Le champ State du carnet d’adresses du compte client storefront est désormais chargé sous la forme et reste un élément de page de liste déroulante. Le bouton Envoyer est maintenant désactivé jusqu’à ce que tous les éléments de page aient été complètement chargés. Auparavant, l’application chargeait ce champ en tant que zone de texte avant de le rendre en tant qu’élément de liste déroulante. Les acheteurs pouvaient alors saisir et enregistrer des valeurs dans le champ de texte, ce qui provoquait par la suite une erreur lors du passage en caisse.
- L’application affiche désormais correctement les attributs d’adresse client personnalisés sur les pages de commande de storefront et d’admin. Auparavant, l’option sélectionnée de l’attribut de liste déroulante était absente de la section Informations sur l’adresse et la valeur de l’attribut d’entrée contenait le code d’attribut. GitHub-508
- L’application ne renvoie plus d’erreur lorsque vous enregistrez un attribut d’adresse de client avec une pièce jointe dans le champ Adresse du client administrateur lors du chargement de fichiers. Cela est dû à une instruction de retour manquante dans l'action du contrôleur. Auparavant, l’application générait cette erreur :
Something went wrong while saving the file
.
- Les appels d’API de panier REST GET renvoient désormais des valeurs d’attribut personnalisé correctes pour les adresses de facturation et d’expédition. Auparavant, les attributs d’adresse personnalisés s’affichaient incorrectement dans la page des détails de la commande dans la page storefront de Mon compte et dans la page Admin.
- L’application gère désormais correctement les fichiers contenant des attributs d’adresse du client avec le type d’entrée
file (attachment)
. Auparavant, l’application générait cette erreur lors du chargement du fichier joint :Something went wrong while saving the file
.
Client
- L’e-mail de crédit de magasin prend désormais en compte la portée sélectionnée et est envoyé à partir de l’adresse e-mail correcte.
- Le filtrage par date de création de compte génère désormais des résultats conformes aux paramètres de fuseau horaire configurés et qui capturent tous les comptes créés pertinents.
- Le filtre de grille client utilise désormais une option de site web correcte pour un utilisateur restreint si les données ont été précédemment mises en cache. Auparavant, le filtre de grille client récupérait les paramètres du site web du cache et incluait des données incorrectes pour les utilisateurs restreints.
- L’application ne renvoie plus d’exception à la page Admin Customers lorsqu’un site web est supprimé dans un déploiement multi-sites web. Auparavant, lorsqu’un administrateur tentait d’accéder à la liste complète des clients, l’application n’affichait pas tous les clients et affichait cette erreur :
The website with id 2 that was requested wasn't found. Verify the website and try again
.
- Les administrateurs autorisés peuvent désormais réaffecter des clients à différents sites web à partir de l’onglet Informations du compte du client.
- Vous pouvez désormais charger un fichier avec succès lors de la création d’un attribut d’adresse de client avec un type d’entrée
(File)
. Auparavant, lorsque vous tentiez de charger et d’enregistrer un fichier, l’application générait l’erreur suivante :Something went wrong while saving the file
.
Segment client
- L’application affiche désormais les produits associés en fonction des segments des clients sur le storefront comme prévu. Auparavant, l’application n’affichait pas cette section lorsqu’une règle de produits associés était créée pour des segments de clients spécifiques.
- Les blocs dynamiques s’affichent désormais pour les clients enregistrés dans leur panier lorsque le segment client correspondant est appliqué à la fois aux invités et aux clients enregistrés. Auparavant, l’application affichait le bloc uniquement pour les invités.
- Les segments de clients sont désormais automatiquement mis à jour après qu’une commande est passée depuis l’administration. Auparavant, après la création d’une commande d’administration, l’utilisateur administrateur devait actualiser manuellement les données de segment associées en accédant aux segments de clients associés et en cliquant sur le bouton Actualiser les données de segment.
- L’application affiche désormais des blocs dynamiques dans le panier pour tous les clients des segments de clientèle pertinents. Auparavant, les invités ne voyaient pas de blocage même lorsque le segment de clients incluait à la fois des invités et des clients enregistrés.
- Les problèmes de performances de la base de données résultant des règles de segmentation client utilisant la condition
Product was Ordered
ont été résolus.
- Ajout d’un observateur d’événement de segment client pour l’API REST/SOAP. Par conséquent, les segments clients sont désormais automatiquement mis à jour comme prévu si les critères définis dans les segments sont respectés lorsque les commandes sont passées via l’API REST/SOAP.
- Un processeur d’événements de segment client a été ajouté pour les requêtes GraphQL. Auparavant, les remises liées aux règles de prix de panier n’étaient pas appliquées au panier lorsqu’un segment client était utilisé dans une condition de règle de prix de panier. GitHub-371
Répertoire
- L’application ne renvoie plus d’exception lorsqu’un acheteur saisit un code postal non valide pendant la section d’expédition du workflow de passage en caisse. GitHub-23371
Téléchargeable
- L’application affiche désormais des liens vers des produits téléchargeables dans l’e-mail Nouvelle commande lorsque la commande contient à la fois un produit téléchargeable et un produit configurable avec une option téléchargeable. Auparavant, l’application affichait le lien vers le produit téléchargeable autonome, mais pas le lien vers le produit configurable avec une option téléchargeable.
Bloc dynamique (anciennement bannière)
- Les blocs dynamiques s’affichent désormais uniquement sur la page spécifiée. Auparavant, l’application affichait toutes les bannières affectées au widget sur toutes les pages si aucun bloc dynamique n’était spécifié.
- Vous pouvez désormais enregistrer des blocs dynamiques avec du contenu vide.
VAE
- Les valeurs de date d’attribut d’adresse du client sont désormais enregistrées dans un format à quatre chiffres au lieu de deux.
- Le lien de réinitialisation du mot de passe sur la page Mot de passe de réinitialisation administrateur fonctionne désormais comme prévu. Auparavant, lorsqu’un modèle personnalisé était utilisé pour la page Réinitialiser le mot de passe administrateur , l’application affichait ce message lorsqu’un administrateur cliquait sur le lien contenu dans l’e-mail :
Your password reset link has expired
. Ce problème se produisait car le modèle d’e-mail personnalisé contenait une variable incorrecte pour l’ID utilisateur.
- L’envoi d’e-mails client à partir de l’administrateur fonctionne désormais correctement lorsqu’il est activé au niveau de la vue du magasin. Auparavant, l’application n’envoyait pas d’e-mails aux clients lorsque les paramètres de notification par e-mail étaient activés au niveau du magasin-vue, mais pas au niveau global.
- L’application envoie désormais les e-mails comme prévu dans les déploiements multisites où tous les sites web n’ont pas activé l’envoi asynchrone de messages. Auparavant, si ce paramètre était désactivé pour au moins un site web, les e-mails n’étaient envoyés depuis aucun site web, même lorsqu’ils étaient activés. Les e-mails de facture, d’expédition et d’avoir présentaient des problèmes similaires. Toutefois, les e-mails de commentaires de commande, de commentaires de facture, de commentaires d’expédition et de commentaires d’avoir ont été envoyés avec succès. GitHub-31950
- L’e-mail que l’application envoie lorsque vous partagez un registre des cadeaux avec l’administrateur contient désormais un lien valide vers l’emplacement du registre. Auparavant, la prise de ce lien entraînait une erreur 404. GitHub-504
- Les factures et les fichiers PDF de factures incluent désormais les mêmes prix pour les produits groupés que prévu. Auparavant, les fichiers PDF de facture incluaient un prix incorrect pour les produits groupés. GitHub-12856
- Un casting de chaîne a été ajouté à la méthode de filtrage des modèles d’e-mail pour s’assurer que la valeur renvoyée est une
string
. Auparavant, lorsqu’une exception était capturée alors qu’elle n’était pas en mode développeur, l’application renvoyait un objetphrase
. Cela a déclenché uneUncaught TypeError
fatale. GitHub-32671
- Les e-mails de confirmation de commande sont désormais envoyés comme prévu lorsque l’envoi asynchrone est activé (Magasins > Configuration > Ventes > E-mails de vente > Paramètres généraux > Envoi asynchrone) sur un site web dans un déploiement multisite. GitHub-31950
- L’application consigne désormais une erreur comme prévu lorsqu’une exception se produit lorsqu’un client tente d’envoyer un e-mail à partir du formulaire Nous contacter . GitHub-23645
Frameworks
- Les classes parentes dans l’Admin sont désormais vérifiées pour l’annotation docblock, ainsi que la classe d’origine et les interfaces héritées. Auparavant, comme les classes parentes n’étaient pas vérifiées, l’exécution d’actions liées aux clients dans l’Administration qui déclenchait un événement entraînait une erreur. L’application a consigné cette erreur dans le journal des exceptions :
report.CRITICAL: Method's return type must be specified using @return annotation.
.
- L’application ne renvoie plus d’erreur fatale lorsque le serveur Redis est arrêté dans un déploiement dans lequel la mise en cache de page Redis est activée.
- L’application respecte désormais le paramètre Exclure le dossier de médias de la sauvegarde lorsque la sauvegarde est activée avec
bin/magento config:set system/backup/functionality_enabled 1
. Auparavant, le dossier de médias était sauvegardé malgré ce paramètre, car le chemin d’accès à/magento
était incorrectement formé avec un double //.
- L’application traduit désormais toutes les chaînes traduisibles comme prévu pour la page Panier d’administration. Auparavant, le chargement de traduction se produisait trop tard et ignorait tous les observateurs abonnés à l'action de contrôleur avant l'envoi. GitHub-31849
- La validation du formulaire sur la page Créer un compte client fonctionne désormais correctement lorsque le paramètre d’extension Se connecter en tant que client activer est désactivé. Auparavant, l’application générait une erreur JavaScript.
- L'utilisation de
bin/magento setup:db-schema:split-sales
pour déplacer les tables de la base de données fonctionne désormais comme prévu. Les tables sont maintenant créées et renseignées correctement avec les données. Auparavant, comme la vérification de l’existence de la table était incorrecte, l’application générait des erreursSQLSTATE
lorsque vous l’bin/magento setup:db-schema:split-sales
.
- La gestion des exceptions pour les processus enfants dupliqués par
ProcessManager
a été améliorée. Lorsqu’une exception se produit maintenant, le processus principal se ferme et un message d’erreur s’affiche une seule fois. Auparavant, plusieurs échecs de l’indexeur étaient consignés et plusieurs messages s’affichaient. GitHub-30622
- Les modules externes globaux d’Adobe Commerce (par exemple,
webapi_rest
etgraphql
) ne sont plus déclenchés pour un nouveau type de zone personnalisée lorsque ladi.xml
de ce fichier de zone ne contient aucun module externe enregistré.
- Les exceptions qui se produisent pendant l’initialisation ne sont plus mises en cache et déclenchent désormais un code de réponse 500.
- Les commerçants peuvent désormais affecter ou supprimer une image d’un événement de catalogue à un événement de catalogue par vue de magasin. Auparavant, lorsque vous changiez la vue du magasin lors de la modification d’un événement de catalogue, la case à cocher Supprimer l’image n’était pas active et l’application affichait cette erreur :
Uncaught ReferenceError: toggleValueElements is not defined at HTMLInputElement.onclick
. GitHub-364
- Le dernier gestionnaire fusionné dans un fichier
communication.xml
ne remplace plus tous les gestionnaires créés précédemment. GitHub-29528
Correctifs généraux
- L'application affiche désormais le nombre correct d'étoiles sur la page Mes avis de produits et sur la page Mon compte des avis récents. Auparavant, l’application appliquait les étoiles de révision uniquement à la première révision et laissait les autres révisions de la page sans étoile.
- Les liens de compte dans les en-têtes suivent désormais les normes WCAG. Auparavant, les liens de compte dans les en-têtes contenaient des identifiants dupliqués, ce qui entraînait l’échec de la validation de WCAG.
- L’application enregistre désormais les dates des événements de catalogue dans les fuseaux horaires UTC. Auparavant, l’application enregistrait les dates des événements de catalogue dans le fuseau horaire de l’utilisateur.
- L’application ne renvoie plus d’erreurs générées par le journal système lorsqu’un client invité utilise une adresse non valide. Auparavant, l’application affichait cette erreur par intermittence au lieu de rendre la page :
No such entity with addressId
. GitHub-15115
- Le processus de redimensionnement de l’image ne s’arrête plus pour les images dans un format non pris en charge. Auparavant, lorsque
catalog:images:resize
rencontriez un format d’image non pris en charge, le processus s’arrêtait et l’application affichait cette erreur :bin/magento catalog:images:resize Unsupported image format
.
- La prise en charge WEBP et AVIF des images de logo a été ajoutée à l’administration. GitHub-32495
- Vous ne pouvez plus modifier la portée de l’attribut
media_gallery
. Auparavant, lorsque vous repositionniez la portée de l’attributmedia_gallery
surglobal
, l’application générait une erreur.
- Les produits associés qui ont été ajoutés dans le cadre d’une mise à jour planifiée ne s’affichent plus sur la page produit d’un storefront après la date de fin de la mise à jour. GitHub-469
- L'application affiche désormais un message précis et informatif lorsque vous cliquez sur Gérer les articles sur la page Mon compte - Registre des cadeaux et que les produits du Registre sont en rupture de stock. Auparavant, l’application générait cette erreur :
Error: Call to a member function getId() …
. GitHub-490
- Vous pouvez désormais ajouter une page CMS à partir de la page Ajouter une nouvelle page à la hiérarchie racine du site web comme prévu.
- Le filtrage fonctionne désormais comme prévu sur la liste des exportations planifiées lorsque le type d’entité est sélectionné. Auparavant, le filtre ne fonctionnait pas et l’application générait une erreur JavaScript. GitHub-361
- Les images de catégorie sont désormais copiées comme prévu du répertoire
catalog/tmp/category
vers le répertoirecatalog/category
lorsque des catégories sont enregistrées à l’aide de la méthode de stockage de la base de données. Désormais, la ligne d’image du tableau demedia_storage_file_storage
comporte également ladirectory_id
correcte. GitHub-11995
- Les commerçants sont désormais avertis comme prévu des caches invalidés après l’envoi de modifications à la hiérarchie CMS. Auparavant, l’application n’invalidait pas les caches lors de l’enregistrement de la hiérarchie CMS.
- Les requêtes AJAX redondantes à la section Panier du panier ont été réduites. Auparavant, l’application ne chargeait pas correctement le sous-total du panier, ce qui déclenchait un rechargement du panier.
- Ajout de la validation des URL pour empêcher l’inclusion de mots réservés dans les clés d’URL. Voir Définition des URI (Uniform Resource Identifiers) connus
- Sur les déploiements exécutant PHP 7.4, l’application renvoie désormais une erreur 404 lorsque le paramètre Générer les réécritures d’URL « catégorie/produit » est défini sur Non et qu’un acheteur tente d’accéder à un chemin de catégorie inexistant. Auparavant, l’application renvoyait une erreur 500 indiquant :
Trying to access array offset on value of type bool
. GitHub-31984
- Vous pouvez désormais modifier un produit créé à l’aide d’un jeu d’attributs à partir duquel les groupes Groupe de conception et Planifier la mise à jour de conception ont été supprimés. Auparavant, lorsque vous tentiez de modifier un produit créé à partir de ce jeu d’attributs, l’application générait une erreur fatale. GitHub-44
nowdoc
a remplacéheredoc
dans le sélecteur de magasinMagento_Backend
. GitHub-32262
- Les administrateurs sont désormais directement redirigés vers la page d’administration demandée après la connexion. Auparavant, lorsqu’un administrateur se connectait, il était redirigé vers le tableau de bord d’administration (ou vers la page configurée comme page de démarrage) et devait accéder manuellement à sa destination. GitHub-31042
- Ajout de l’Argentine, de la Bolivie, du Chili, de l’Équateur, du Guyana, du Paraguay, du Pérou, du Suriname et du Venezuela à la table
directory_country_region
. GitHub-31169
- Ajout de l'Albanie, du Danemark, de la Grèce, de l'Islande, du Portugal et de la Suède au tableau
directory_country_region
. GitHub-31040
- Les messages sont désormais marqués comme des erreurs dans la file d’attente de messages MysqlMQ lorsque des exceptions se produisent. GitHub-18140
- L'application fait désormais référence à l'objet de classe correct lors du chargement des informations fiscales pour les pages Avoir et Facture de l'administrateur. GitHub-31197
- L’intégration Royal Mail Click & Drop fonctionne désormais comme prévu. Auparavant, l’application générait cette erreur lorsque vous tentiez d’activer cette intégration :
Sorry! Something went wrong. Please try again later
. GitHub-28996
- L’application affiche désormais un message d’erreur informatif lorsqu’une expédition, un avoir ou un identifiant de facture incorrect est transmis dans une URL. Auparavant, l’application générait une erreur fatale. GitHub-30424
- La récursivité à l'emplacement des fichiers statiques a été supprimée. L’application affiche désormais une page 404 au lieu d’une erreur 500. Auparavant, un bug dans la configuration par défaut de NGINX entraînait une récursivité infinie. GitHub-31530
- Le nom du fichier
cms_index_noroute.xml
a été corrigé encms_noroute_index.xml
. GitHub-31300
- Le fichier
.editorconfig
a été refactorisé pour corriger la mise en forme automatique des fichiersdb_schema_whitelist.json
. GitHub-31171
- Le redimensionnement d’une fenêtre de navigateur ne déclenche plus les événements de loupe de liaison en double. GitHub-30788
- L’application ne renvoie plus d’exception SQL lors du filtrage des
Magento\Users\Model\ResourceModel\Users\Collection
paruser_id
. GitHub-31216
Cartes cadeaux
- Les frais de paiement en attente sont maintenant supprimés d'une carte cadeau comme prévu lorsqu'une carte cadeau est annulée. Auparavant, l’application générait une erreur lorsque
cron
s’exécutait après la suppression de la carte cadeau.
- Les acheteurs peuvent désormais supprimer les cartes-cadeaux d’une commande sur la page Vérifier la commande lors d’un passage en caisse avec plusieurs adresses. Auparavant, l’application ne supprimait pas la carte cadeau de la commande lorsque l’acheteur la sélectionnait, puis cliquait sur Supprimer.
- L’application affiche désormais le nouveau prix d’une carte cadeau dans le panier lorsque vous modifiez la valeur de la carte cadeau après l’avoir ajoutée au panier.
- La logique de validation de la plage de prix a été ajoutée à la page de création de la carte cadeau. Auparavant, un administrateur pouvait créer une carte dont la valeur minimale dépassait la valeur maximale. GitHub-493
- La requête
addRequisitionListItemsToCart
renvoie désormais le montant d’une carte cadeau personnalisée comme prévu lorsque la requête ne contient pas de valeur pourallow_open_amount
.
Message de cadeau
- La mutation
setGiftOptionsOnCart
crée désormais correctement des messages cadeaux. GitHub-388
Registre des cadeaux
- Date de l’événement les valeurs sont désormais identiques sur le storefront et l’administrateur lors de la création ou de la modification du registre des cadeaux. Auparavant, chaque fois que vous modifiiez et enregistriez le registre des cadeaux, l’application ajustait la date de l’événement un jour en arrière sur le storefront et l’administrateur. GitHub-466
- L'application n'affiche plus les produits désactivés dans les registres cadeaux. Auparavant, si un produit était désactivé après avoir été ajouté à un registre des cadeaux, l’application affichait ce message lorsqu’un acheteur accédait au registre :
Error: Call to a member function getId() …
. GitHub-510
Emballage cadeau
- La traduction des étiquettes d'emballage-cadeau pour les vues de magasin fonctionne désormais comme prévu.
- L’emballage du cadeau est désormais appliqué comme prévu aux commandes expédiées à plusieurs adresses.
- L’application supprime désormais les frais d’emballage des cadeaux du panier une fois tous les produits supprimés.
- Les totaux des avoirs sont désormais corrects lorsque l'avoir contient un emballage cadeau et des frais de produit configurables. Auparavant, le montant de taxe sur les emballages-cadeaux n'était pas toujours inclus dans le total de l'avoir. GitHub-34
Google Analytics
- L’application ne renvoie plus d’erreur lorsqu’un administrateur tente de charger une page sur le storefront lorsque Google Analytics est activé. Une entrée CSP pour
connect-src
a été ajoutée pour autoriser les requêtes AJAX à www.google-analytics.com. GitHub-30880
Google Tag Manager
- Le composant d’interface utilisateur de l’adresse de facturation sur la page de paiement du workflow de passage en caisse utilise désormais correctement l’adresse de devis lorsque le gestionnaire de balises Google est activé. Auparavant, une erreur JavaScript s’était produite sur la page de paiement.
GraphQL
- La requête
products
GraphQL renvoie désormais des options d’attribut triées dans le même ordre de tri que celui utilisé sur la page de modification des attributs.
- La réponse à la requête
{ category(id: 2){ children { name children { name } } } }
GraphQL comprend désormais une arborescence de catégories correctement triée.
- L’objet
CartItemPrices
contient désormais la nouvellefixed_product_taxes
de champ GraphQL, qui renvoie un tableau des taxes sur les produits fixes appliquées à un article du panier. Auparavant, les taxes fixes sur les produits appliquées à un article de panier n’étaient pas incluses dans la requête de panier.
- Les requêtes vides envoyées à GraphQL renvoient désormais le code de réponse 200 au lieu de 500. Auparavant, l’analyseur GraphQL renvoyait une exception avant la génération du résultat de la requête.
- La mutation
applyRewardPointsToCart
met désormais à jour le total général d’un panier pour refléter précisément la valeur des points de récompense déduits. GitHub-486
- Les produits désactivés ne sont plus inclus dans la réponse GraphQL lorsque GraphQL est utilisé pour lier des produits de montée en gamme.
- Les commerçants peuvent désormais utiliser la méthode de
setShippingAddressesOnCart
GraphQL pour définir les adresses de facturation et d’expédition d’un panier d’achat lorsque le passage en caisse du client est désactivé.
- La requête
categoryList
ne renvoie plus d’exception lorsqu’elle contient plusieurs fragments sur l’objetCategoryTree
. GitHub-31086
- La requête
product
GraphQL renvoie désormais les prix corrects du groupe de clients.
- La réponse à la requête
products
de GraphQL trie désormais les agrégations en fonction de la position des attributs de produit.
- L’application ne renvoie plus d’erreurs de type lors des requêtes GraphQL lorsque les suffixes d’URL de produit et de catégorie contiennent des valeurs nulles. GitHub-30909
- L’objet
CustomizableDateValue
contient désormais l’attributtype
. Sa valeur est une énumération qui peut être définie sur DATE, DATE_TIME ou TIME.
- La requête
dynamicBlocks
renvoiecontenu des blocs dynamiques correspondant aux filtres spécifiés.
- La demande de
V1/products/special-price-delete
POST supprime désormais uniquement le prix avec unstore_id
spécifié comme prévu. Auparavant, l’appel supprimait tous les prix spéciaux pour le SKU spécifié de tous les magasins. GitHub-25907
- Correction d’une erreur avec l’attribut
country_code
dans la mutationcreateGiftRegistry
.
- Correction de problèmes liés à l’attribut
giftRegistryUid
de la mutationupdateGiftRegistryItems
.
- Ajout d'une vérification supplémentaire pour empêcher que la mutation
updateGiftRegistryRegistrants
ne soit utilisée pour ajouter des personnes aléatoires en tant qu'inscrits à un registre de cadeaux.
- La mutation
addConfigurableProductsToCart
renvoie désormais la miniature correcte du produit spécifié. Auparavant, elle renvoyait la miniature du produit parent.
- La requête
products
n'expose plus le prix spécial d'un produit lorsque la période de prix spécial est définie pour une date ultérieure. GitHub-30210, GitHub-29631
- La réponse à la requête
customer
inclut désormais l’attributtotal_giftcard
dans le cadre de l’objetOrderTotal
.
- Correction d'un problème en raison duquel la requête
products
renvoyait des informations erronées sur les niveaux de prix des articles pour lesquels aucun niveau de prix n'était défini. GitHub-32279
Image
- Vous pouvez désormais définir les attributs de bundle required_options et has_options comme prévu lors de la création ou de la mise à jour d’un produit groupé à l’aide du point d’entrée de
/V1/product/:sku
POST. Auparavant, ces attributs personnalisés étaient définis sur 0 (zéro) malgré les efforts pour le définir sur 1 (un).
Importer/exporter
- Le filtre ID de catégorie pour les entités de produit dans la grille Exporter les attributs d’entité de la page fonctionne désormais comme prévu.
- Le statut du stock de produits groupés est désormais mis à jour comme prévu vers Rupture de stock lorsque tous les produits enfants sont en Rupture de stock. GitHub-32647
- Le statut du stock de produits configurable est désormais automatiquement mis à jour comme prévu lorsque le statut du stock de produits enfants est mis à jour par l’importation. Auparavant, le statut du stock de produits n’était pas automatiquement mis à jour lorsque le statut du stock de produits enfants était mis à jour par l’importation.
- Vous pouvez désormais enregistrer des valeurs vides dans une exportation planifiée. Auparavant, l’application mettait à jour les valeurs de filtre vides après la création ou l’enregistrement de l’exportation. Les valeurs
no
etnot specified
étaient représentées par zéro dans la base de données et une valeur denot selected
était remplacée parno
.
- Le processus d’exportation prend désormais en compte la portée du rôle utilisateur lors de l’exportation de produits, de sources de stock et d’entités client. Auparavant, le processus d’exportation ignorait la portée du rôle d’utilisateur, ce qui permettait d’exporter des entités d’exportation de rôle d’utilisateur privé.
- L'application définit désormais la classe de taxe du produit sur
None
si un produit est importé avec des valeurstax_class_name
None
ou0
. Auparavant, siproduct tax_class_name
étaitNone
dans le fichier CSV, l’application créait une classe de taxeNone
, qui dupliquait la classe de taxe existante. Siproduct tax_class_name
était0
dans le fichier CSV, l’application ignorait cette valeur et la classe de taxe du produit ne changeait pas après l’importation.
- Les administrateurs peuvent désormais modifier le
name
dubundle_values
d’un bundle de produits à partir de l’administrateur. Auparavant, l’application affichait le produit comme étant en rupture de stock sur le storefront après que vous ayez modifié le nom à partir de Admin. Les produits ont également été fusionnés avec le même SKU dans une seule section d’option de lot.
- L’application prend désormais en compte la portée de l’utilisateur lors de l’exportation des données client. Auparavant, lorsque vous tentiez d’exporter des clients, l’application exportait les données client de tous les sites web.
- L’application supprime désormais les relations de produit entre la vente incitative, la vente croisée et les produits associés lors de l’importation d’un fichier CSV, comme prévu lorsque la
__EMPTY__VALUE__
est spécifiée dans le fichier CSV.
- L’exportation de données d’adresses personnalisées pour de nombreux clients (Admin System > Export) n’entraîne plus d’erreur de mémoire systématique. Auparavant, lors de l’exportation de données d’adresse personnalisées, l’application tentait de charger toutes les données client, ce qui entraînait une déplétion de la mémoire, et l’application générait une erreur d’échec d’allocation de la mémoire.
- Les prix de niveau en double ne sont plus importés pendant le processus d’importation CSV par défaut. Auparavant, la validation était manquante pour empêcher l'importation de prix de niveau en double, et lorsque des prix de niveau en double se produisaient, les commerçants ne pouvaient pas enregistrer les produits. Les commerçants ont également vu cette erreur lorsqu’ils ont tenté de planifier un changement de produit :
SQLSTATE[23000]: Integrity constraint violation: 1062 Duplicate entry…
.
- Toutes les images des produits sont désormais validées lors de l’importation. Auparavant, l’application ne validait que la première image lorsqu’un produit avait plusieurs images. GitHub-28236
- Vous pouvez désormais supprimer une région d’une adresse de client comme prévu lors de l’importation. Auparavant, la région affectée ne changeait pas lorsqu’une adresse de client était importée avec une région vide.
- Les produits avec du contenu JSON ou HTML en tant qu’attributs de produit supplémentaires sont désormais correctement exportés vers un fichier CSV. Auparavant, le fichier CSV contenait des chaînes de données chevauchées dans des champs incorrects.
Index
- Process Manager se ferme désormais avec une erreur lorsqu’un processus enfant échoue. Auparavant, Process Manager se quittait toujours avec succès si le nombre de fonctions qui lui étaient transmises (par exemple, les dimensions de l’indexeur) était inférieur à la valeur de la variable d’environnement
MAGE_INDEXER_THREADS_COUNT
. GitHub-30964
- Les produits sont désormais disponibles comme prévu dans les résultats de recherche de storefront lors de la liaison de produits à l’aide d’une demande de
/V1/products/:sku/links
REST PUT lorsque le mode indexeur est défini sur Mise à jour lors de l’enregistrement.
- L’indexeur de règles de prix de catalogue fonctionne désormais comme prévu lorsque le mode d’indexeur est défini sur Mise à jour lors de l’enregistrement. GitHub-370
- La suppression d’une catégorie désactivée qui n’inclut pas de produit n’a désormais aucun effet sur la recherche catalogue et les tables d’index plat de catégories. Auparavant, la suppression d’une catégorie inactive déclenchait une réindexation complète. GitHub-23297
- Les indexeurs personnalisés peuvent désormais utiliser différents noms de colonne d’entité pour les abonnements. Auparavant, le déclencheur de base de données utilisait le nom de colonne du dernier indexeur défini sur Mettre à jour selon le calendrier plutôt que l’indexeur désigné. GitHub-21853
- L’application n’envoie plus de requêtes AJAX pour recharger les sections de données client (
Magento_Customer/js/section-config
) qui ne sont pas affectées par la requête. GitHub-31948
- Les indexeurs suivants ne sont plus invalidés après l’ajout, la suppression ou la réorganisation de produits dans une catégorie :
catalog_category_product
etcatalogsearch_fulltext
(et leurs personnes à charge). Auparavant, ces suppressions accidentelles déclenchaient une réindexation complète des sites. Une réindexation complète est désormais impossible dans ces conditions lorsque le catalogue plat n’est pas activé.
Infrastructure
- Le
pelago/emogrifier
de dépendance a été mis à jour de la version 3.1.0 à la version 5.0.0. Cette mise à jour a entraîné l’introduction de modifications non rétrocompatibles dans la classeMagento\Email\Model\Template\Filter
. Le code modifié est exécuté lors du rendu des modèles d’e-mail. Voir Référence BIC.
- Correction d’un problème lié à
\Magento\CatalogInventory\Model\Indexer\Stock\CacheCleaner::getCategoryIdsByProductIds
qui empêchait l’enregistrement d’un nouveau produit.
- La bibliothèque TinyMCE v3 obsolète a été supprimée. Le module
Magento_Tinymce3Banner
et les tests MFTF relatifs à TinyMCE v3.x ont été supprimés d’Adobe Commerce.
- L’application ne renvoie plus d’erreur
Invalid header value detected
dans le formulaire Nous contacter lorsqu’un acheteur saisit une adresse e-mail qui contient des signes diacritiques français (par exemple « é », « è »). L’application convertit désormais les lettres UTF-8 du nom d’utilisateur en codage ASCII. Auparavant, les lettres UTF-8 n’étaient pas converties en codage ASCII dans la section unique de l’adresse e-mail.
- L’application ne renvoie plus d’erreur fatale PHP lorsqu’un module externe est ajouté à une classe parente. GitHub-31291
- Mise à jour des fichiers README.md pour ces modules :
Magento_Msrp
,Magento_MsrpConfigurableProduct
,Magento_MsrpGroupedProduct
,Magento_Multishipping
,Magento_MysqlMq
. GitHub-32577
phpcpd
a été mis à jour vers la version 6.0.3 pour la compatibilité avec PHP 8.
ramsey/uuid
a été mis à jour pour la compatibilité avec PHP 8.0. GitHub-31777, GitHub-826
colinmollenhour/php-redis-session-abstract
a été mis à jour vers la version 1.4.4 pour la compatibilité avec PHP 8. GitHub-32709
- Correction d’une combinaison non valide d’onglets et d’espaces dans le fichier
phpstan.neon
. GitHub-31239
- Suppression de l’utilisation de
$_isScopePrivate
de propriété obsolètes dans toute la base de code. GitHub-30506
- Les mises en page ne sont plus codées en dur dans
Magento\Widget\Block\Adminhtml\Widget\Instance\Edit\Chooser\Container
. Par conséquent, la fonctiongetPageLayouts()
renvoie désormais la liste réelle des mises en page déclarées par les différents modules comme prévu. Auparavant, elle renvoyait uniquement des dispositions codées en dur. GitHub-31168
- Le fichier
composer.lock
a été mis à jour vers la dernière version de la norme de codage. GitHub-31152
- Ajout d’une dépendance manquante sur le package
web-token/jwt-framework
à lamagento/module-jwt-framework-adapter
. GitHub-32578
- Des écouteurs passifs ont été ajoutés à la bibliothèque
fotorama.js
pour améliorer le score des mesures lighthouse. GitHub-31140
- Le fichier README.md du module Google Analytics a été mis à jour. GitHub-32616
- Process Manager gère désormais correctement les exceptions dans les processus dupliqués. Le processus principal se ferme et l’application n’affiche désormais qu’un seul message d’erreur. En outre, les exceptions des processus dupliqués sont désormais gérées lorsqu’elles sont levées dans le processus principal. Auparavant, l’application consignait plusieurs échecs d’indexeur et affichait plusieurs messages d’erreur. GitHub-30622
- L’application ne renvoie plus d’erreur lorsqu’un module externe est ajouté à une classe parente. (Le paramètre
optionsProvider
est désormais déclaré aprèsgetContentIdentities
dansAssest.php
.) Auparavant, l’application générait cette erreur :Error: Cannot instantiate interface Magento\Framework\Data\OptionSourceInterface
. GitHub-31291
- L’exécution de
Magento\Framework\Filesystem\Io\Ftp::ls()
sur un dossier vide renvoie désormais un tableau vide comme prévu. Auparavant, l’application générait cette exception :Invalid argument supplied for foreach() in vendor/magento/framework/Filesystem/Io/Ftp.php…
. GitHub-31288
- La méthode
update
pour Rôle et Règles a été marquée comme obsolète dansapp/code/Magento/Authorization/Model/Role.php
. GitHub-30756
- La concaténation des paramètres de cookie SameSite a été corrigée. Auparavant, une concaténation incorrecte ajoutait le suffixe
lex
àvalue
,domain
et d’autres paramètres. GitHub-26377, GitHub-32440
allure-framework/allure-phpunit
a été mis à niveau vers la version 1.3.1 dans toute la base de code. Auparavant, l’application affichait cette erreur :Warning: Use of undefined constant GLOB_BRACE - assumed 'GLOB_BRACE' (this will throw an Error in a future version of PHP) in /var/www/html/src/vendor/allure-framework/allure-phpunit/src/Yandex/Allure/Adapter/AllureAdapter.php:74.
GitHub-24635
- L’application affiche désormais plus d’erreurs informatives lorsque des erreurs se produisent lors de l’exécution de commandes
bin/magento
en mode production. Auparavant, l’application n’affichait aucun message d’erreur ou affichait des messages ne contenant pas d’informations. GitHub-32786
- L'objet PHP
ArrayIterator
a été mis à jour pour fonctionner comme prévu avec PHP 7.4. GitHub-32088
- L’application ne renvoie plus d’erreur lorsqu’un client tente de terminer une commande alors qu’aucun transporteur n’est disponible. Au lieu de cela, elle affiche la page de passage en caisse et ce message :
Sorry, no quotes are available for this order at this time
. Auparavant, l’application affichait une page de passage en caisse vierge et enregistrait ce message dans le journal des exceptions :array_keys() expects parameter 1 to be array, null given
. GitHub-30830
- L’application ne consigne plus chaque cookie en tant que contexte distinct. Le tableau
$_COOKIE
a également été converti en chaîne. Auparavant, comme chaque cookie était enregistré en tant que contexte distinct, lorsque le nombre de cookies dépassait 50, l’application enregistrait le message suivant :Unable to send the cookie. Maximum number of cookies would be exceeded
. GitHub-31334
Facture
- Lors de la création de factures dans Admin, la case Copie d’e-mail de fonctionne désormais comme prévu. Auparavant, la case à cocher était ignorée si le paramètre global d’envoi des e-mails de facture était activé dans E-mails de vente. Il est désormais cohérent et fonctionne de la même manière que les pages de création d'expédition et d'avoir. GitHub-28511
Galerie de médias
bin/magento media-gallery:sync
échoue désormais comme prévu lors du traitement des images PNG dépourvues d’informations XMP.
- Les entrées de la table
catalog_product_entity_media_gallery
sont supprimées comme prévu lorsque des produits associés sont supprimés. GitHub-17727
- Les détails des images peuvent désormais être mis à jour dans la Galerie de médias lorsque la minimisation de JavaScript est activée. Auparavant, les détails de l’image n’étaient pas enregistrés et l’application affichait cette erreur :
TypeError: Cannot read property 'call' of undefined in jquery.validate
. GitHub-31633
MFTF
Les nouvelles fonctionnalités et les correctifs de bogues principaux MFTF sont décrits dans le Journal des modifications du framework de tests fonctionnels.
- Les commandes
magento indexer:reindex
etcache:flush
, ainsi que le groupe d’actionsAdminReindexAndFlushCache
, ont été supprimés des tests afin d’améliorer l’exécution des modules suivants :Bundle
,Catalog
,CatalogRule
,CatalogRuleConfigurable
,CatalogUrlRewrite
,Downloadable
,Indexer
,Paypal
etSales
. GitHub-31031
AdminSubmitCategoriesPopupActionGroup
a été ajouté aux tests pour éviter l’échec du test. GitHub-31251
- Les tests ont été refactorisés avec
StorefrontCheckQuickSearchStringActionGroup
etStorefrontAssertProductNameOnProductMainPageActionGroup
(groupes d’action existants). GitHub-31251
Tests refactorisés
Les tests suivants ont été restructurés pour améliorer le temps d’exécution :
AddOutOfStockProductToCompareListTest
AdminApplyTierPriceToProductWithPercentageDiscountTest
AdminCheckingCreditMemoTotalsTest
AdminCheckDashboardWithChartsTest
AdminConfigDefaultProductLayoutFromConfigurationSettingTest
AdminCreateInvoiceTest
AdminCreateOrderAddProductCheckboxTest
AdminMassOrdersCancelCompleteAndClosedTest
AdminMassOrdersCancelProcessingAndClosedTest
AdminMassOrdersHoldOnCompleteTest
AdminMassOrdersHoldOnPendingAndProcessingTest
(remplacement des AdminMassOrdersHoldOnPendingAndProcessingTest
obsolètes)
AdminMassOrdersUpdateCancelPendingOrderTest
AdminMassProductPriceUpdateTest
AdminMassUpdateProductAttributesMissingRequiredFieldTest
AdminOrdersReleaseInUnholdStatusTest
AdminPanelIsFrozenIfStorefrontIsOpenedViaCustomerViewTest
AdminSortingByWebsitesTest
AdminUpdateSimpleProduct
AdminUpdateSimpleProductWithRegularPriceInStockEnabledFlatTest
AdminValidateShippingTrackingNumberTest
CancelOrdersInOrderSalesReportTest
ProductsQtyReturnAfterOrderCancelTest
StorefrontConfigurableProductBasicInfoTest
Groupes d'actions
Les actions répétitives ont été remplacées par des groupes d’actions dans ces tests :
AdminCheckConfigurableProductPriceWithDisabledChildProductTest
AdminConfigurableProductCreateTest
AdminConfigurableProductRemoveAnOptionTest
AdminCreateProductDuplicateUrlkeyTest
AdminCreateSimpleProductNegativePriceTest
AdminCreateSimpleProductZeroPriceTest
AdminCreateVirtualProductFillingRequiredFieldsOnlyTest
AdminUpdateSimpleProductWithRegularPriceInStockDisabledProductTest
AdminUpdateSimpleProductWithRegularPriceInStockNotVisibleIndividuallyTest
AdminUpdateSimpleProductWithRegularPriceInStockVisibleInCatalogOnlyTest
Nouveaux groupes d’action
AdminClearFiltersOnGridActionGroup
AdminClickAddNewPageOnPagesGridActionGroup
AdminClickInsertWidgetActionGroup
AdminClickRefundOfflineOnNewMemoPageActionGroup
AdminFillAccountInformationOnCreateOrderPageActionGroup
AdminGoToOrderStatusPageActionGroup
AdminOpenCMSPagesGridActionGroup
AdminSelectAttributeSetOnEditProductPageActionGroup
AssertAdminProductIsAssignedToCategoryActionGroup
(remplace le filtrage Grille de produits par SKU et le clic sur la première ligne (afin de réduire le temps d’exécution du test)
AssertLinkActionGroup
AssertStorefrontCartDiscountActionGroup
ClickPlaceOrderActionGroup
SaveCmsPageActionGroup
StorefrontAssertProductNameIsNotOnProductMainPageActionGroup
StorefrontGuestCheckoutProceedToPaymentStepActionGroup
StorefrontHoverProductOnCategoryPageActionGroup
StorefrontSelectCustomizeAndAddToTheCartButtonActionGroup
Groupes d’actions supprimés
- Suppression de la
CliIndexerReindexActionGroup
(ou modification de la valeur) des tests afin d’améliorer le temps d’exécution pour les modulesBackend
,Bundle
,BundleImportExport
,Catalog
,CatalogRule
,CatalogSearch
,Checkout
,Downloadable
,Elasticsearch
,Elasticsearch6
,Indexer
,LayeredNavigation
,LoginAsCustomer
,Newsletter
,Sales
,SalesRule
,Search
,Store
,Swatches
,UrlRewrite
,Weee
etWishlist
.
- Suppression de
CliCacheFlushActionGroup
des modulesCatalog
,CatalogUrlRewrite
,Checkout
,Config
,ConfigurableProduct
,Contact
,Cookie
,CurrencySymbol
,Customer
,Downloadable
,Elasticsearch
,Elasticsearch6
,Fedex
,Indexer
,LayeredNavigation
,LoginAsCustomer
,Msrp
,Multishipping
,Sales
,Swatches
,Translation
,UrlRewrite
,Vault
,Weee
,Wishlist
, et.
Newsletter
- L’application n’envoie plus d’e-mail de newsletter à un client qui a été désabonné de la newsletter entre la création de la file d’attente de la newsletter et l’envoi de la newsletter. GitHub-32116
- L’application respecte désormais les paramètres d’activation de la newsletter (Magasins > Paramètres > Configuration > Clients > Newsletter > Options générales). Auparavant, ces paramètres étaient toujours récupérés à partir de la portée par défaut dans les déploiements multi-magasin. GitHub-31188
- L’appel REST GET
/V1/customers/search
renvoie désormais des informations correctes pour les clients abonnés à plusieurs newsletters. GitHub-31168
- Le statut d’abonnement à la mise en cache a été supprimé du plug-in de newsletter. GitHub-19345
Ordre
- L'application calcule désormais correctement un solde client facturé lors du retour d'un crédit de magasin à un compte client pour une commande partiellement facturée.
- L’application enregistre désormais une commande modifiée comme prévu lorsqu’elle enregistre un solde client remboursé. GitHub-393
Modes de paiement
- L’application effectue désormais le rendu des blocs de paiement sur
frontend
, quelle que soit la zone à partir de laquelle l’e-mail a été envoyé. (La zone actuelle est maintenant émulée commefrontend
avant que le bloc de paiement ne soit rendu.) Auparavant, les blocs de paiement étaient rendus dans la zone à partir de laquelle l’e-mail était envoyé. Par conséquent, que l’e-mail de vente ait été déclenché par l’administrateur ou par l’API REST, les URL des ressources ont tenté de les charger à partir d’une zone incorrecte (webapi_rest
ouadminhtml
).
- L’application envoie désormais le lien d’un produit téléchargeable à l’adresse e-mail spécifiée lors du passage en caisse. Auparavant, lorsqu’un client invité utilisait PayPal Express Checkout et saisissait différentes adresses e-mail pour envoyer la commande et passer en caisse, l’application envoyait le lien de produit téléchargeable à la première adresse.
- L’application affiche désormais une valeur précise pour le crédit de magasin disponible sur la page Mode de paiement dans les déploiements qui prennent en charge plusieurs devises.
- La liste des modes de paiement est désormais mise à jour comme prévu lorsqu’un client invité modifie l’adresse de livraison d’une commande dans un autre pays au cours du passage en caisse. Auparavant, la modification de l’adresse de facturation ne déclenchait pas de mise à jour des modes de paiement possibles.
PayPal
- Les acheteurs peuvent désormais passer en caisse une commande PayPal Payflow Pro avec une adresse de livraison contenant des caractères spéciaux. Auparavant, l’application refusait le paiement de ces commandes.
- Les acheteurs sont maintenant redirigés vers la page de succès de la commande après un paiement réussi à l'aide de PayPal. Auparavant, les acheteurs étaient redirigés vers une page vierge en raison d’une perte de données de session.
Performances
- Les performances de la recherche de SKU d’administration sur les catalogues volumineux ont été améliorées. Les indications de Query Optimizer forcent désormais l’utilisation de l’index lors de l’exécution de la requête.
- Les performances du processus
catalog_product_alert
cron
lors de l'exécution sur des tables volumineuses (plusieurs millions de lignes) ont été améliorées. Auparavant,catalog_product_alert
chargeait toutes les alertes de produit, ce qui provoquait une exception de mémoire insuffisante.
- L’application ne charge plus toutes les pages CMS lorsqu’il ne faut qu’une seule page de modification pour générer un formulaire d’administration. Ces pages se chargent désormais plus rapidement. GitHub-30936
-
Les valeurs numériques dans les expressions
WHERE IN
sont désormais converties en nombre, et non en chaîne, ce qui améliore les performances des requêtes dans certaines versions de MariaDB. GitHub-31135 -
Le mode
use_application_lock
vous permet d’activer la réindexation soit en utilisant des variables d’environnement, soit en configurant le fichierapp/etc/env.php
. Vous n’avez plus besoin de réinitialiser manuellement l’indexeur après un échec lorsque ce mode est activé. Lorsque ce mode n’est pas activé, vous devez réinitialiser manuellement l’indexeur après l’échec. Voir Utilisation du mode de verrouillage de l’application pour les processus de réindexation.
Tarification
- L’application met désormais correctement à jour le prix d’un produit avec des prix groupés lorsqu’un acheteur met à jour la quantité du produit sur le storefront. GitHub-32669
- Les produits groupés peuvent désormais être enregistrés lorsque des produits ont été dotés d’un prix de niveau et que
Magento\Framework\Api\ExtensibleDataObjectConverter
est utilisé pour convertir les données des produits. Auparavant, lorsqueMagento\Framework\Api\ExtensibleDataObjectConverter
était utilisé pour convertir les données de produit en tableau lorsqu’un produit était enregistré, l’application n’enregistrait pas le produit et affichait cette erreur :Notice: Undefined index: price in app/code/Magento/Catalog/Model/Product/Type/Price.php on line 382.
- Les mises à jour de prix planifiées sont désormais appliquées aux produits figurant déjà dans le panier d’un acheteur. GitHub-356
- Le prix de niveau est désormais appliqué à un produit comme prévu lorsque des incréments de quantité sont activés et que le stock décimal est inférieur à 1. Auparavant, la quantité de prix de niveau minimal était définie sur 1.
Vidéo du produit
- Vous pouvez désormais utiliser le bouton Ajouter une vidéo (Admin Catalogue > Produits) pour ajouter plusieurs vidéos de manière consécutive. Auparavant, les champs vidéo conservaient les détails de la vidéo précédente.
- Le passage en mode plein écran pour une vidéo de produit sur une page de produit fonctionne désormais comme prévu sur les appareils mobiles. Auparavant, l’activation du mode Plein écran entraînait une pause de la vidéo avant sa désactivation.
- Les boutons fléchés de navigation (Suivant et Précédent) sont désormais visibles comme prévu sur les vidéos des produits storefront.
- Les commerçants peuvent désormais ajouter des vidéos Vimeo à l’aide du bouton Insérer une vidéo sur la page du produit comme prévu. Auparavant, l’application affichait une erreur 404. GitHub-31753
Citation
- L’appel
/V1/guest-carts/examplecartid/items
renvoie désormais la vue de magasin demandée. Auparavant, il renvoyait la première vue de magasin dans le magasin, et non celle demandée.
- L’envoi de factures peut désormais être configuré. Auparavant, l'envoi de factures n'était pas configurable et l'application envoyait toujours une facture après sa création. Les courriels de facture et de commande ont tous deux été envoyés par un observateur. Des observateurs distincts régissent désormais l’envoi des e-mails de commande et de facture. GitHub-27656
Rapports
- Tous les rapports système peuvent désormais être affichés et téléchargés à partir du projet d’infrastructure cloud d’Adobe Commerce. Auparavant, vous ne pouviez pas télécharger les rapports système pour les journaux, les données, la conception ou les magasins.
- La date de dernière révision dans Admin Reports > Reviews > By Products affiche désormais la date de révision correcte. Auparavant, l’application affichait la date de création du produit au lieu de la date de révision.
Autorisations de retour de marchandises (RMA)
- L'attribut
resolution
RMA n'est plus affiché comme requis lorsque la valeur du champ d'attributrequired
est définie sur non.
- Vous pouvez désormais sélectionner plusieurs commandes à renvoyer à partir de l’administrateur. Auparavant, l’application générait une erreur lorsque vous cliquiez sur Envoyer après avoir sélectionné plusieurs retours et avoir cliqué sur Fermer dans le menu déroulant Actions.
- L’application envoie désormais une notification par e-mail aux clients comme prévu après que vous avez modifié le statut d’un retour à l’aide de l’API REST.
- L’application filtre désormais les enregistrements en fonction des valeurs de filtre dans la grille de retours client Admin . Auparavant, l’application vous redirigeait vers la page Admin - Tous les clients et le fait de cliquer sur le bouton Réinitialiser le filtre était également redirigé vers cette page. GitHub-436
Examens
- Les étoiles d’évaluation de révision de produit sont désormais correctement calculées dans la section Détails de la révision de la page Mon compte .
- Les sections Note de produit moyenne et Note de produit de la page de détails de la révision du produit s’affichent désormais correctement. Auparavant, l’ID de révision n’était pas défini lorsque l’application calculait la note de storefront et le modèle de révision du produit n’était pas correctement rendu.
- Le lien Soyez le premier à examiner ce produit est désormais remplacé comme prévu par un nombre d’examens après l’approbation d’un examen par un administrateur.
- Les administrateurs peuvent désormais trier les avis de produits dans la section Avis des produits de la page d’édition du produit comme prévu. GitHub-30270
- Les révisions sont désormais enregistrées avec l’ID de magasin correct une fois qu’un administrateur a approuvé et enregistre la révision à partir d’un domaine différent de celui du magasin. GitHub-17510
Récompenses
- Les commerçants peuvent désormais annuler une commande passée en tout ou partie à l'aide de points de récompense une fois que le client qui a passé la commande a été retiré du système.
- Les commerçants peuvent désormais supprimer les points de récompense des règles de prix du panier. Auparavant, lorsqu’un commerçant tentait de définir Points de récompense sur 0 lors de la création d’une règle de prix de panier, la valeur précédente pour la quantité de point de récompense était conservée.
- Les points de récompense pour les évaluations de produit sont désormais associés au site web approprié lorsque plusieurs évaluations sont approuvées à partir de la grille Admin Marketing > Évaluations en attente. Auparavant, les points de récompense n’étaient pas affichés sur le storefront et n’étaient pas liés au site web approprié dans l’administrateur.
- L’application met désormais à jour la liste des méthodes de paiement lorsqu’un acheteur qui effectue une commande avec plusieurs adresses coche ou décoche l’option Crédit de la boutique (points de récompense).
Ventes
- Les utilisateurs administrateurs peuvent désormais passer des commandes pour des articles en rupture de stock lorsque le paramètre Les reliquats sont autorisés est activé (Magasins > Configuration > Catalogue > Inventaire > Options de stock de produit). Auparavant, l’application générait une erreur.
- Les acheteurs peuvent désormais trouver une commande sur la page Commandes et retours lorsque le nom de famille se termine par un espace.
- Les factures sont désormais créées avec le total général correct lorsqu'une règle de prix de panier attribuant une remise de 100 % est appliquée à une commande qui est également soumise aux taxes sur les produits du catalogue et les remises et qui est admissible pour une livraison gratuite. Auparavant, le prix de la commande était correct, mais pas celui de la facture. GitHub-30853
- Le filtrage des commandes par date renvoie désormais des résultats précis. Auparavant, l’application ne renvoyait pas une commande passée après 00 :00 UTC lorsque vous filtriez les commandes par date de commande.
- La grille d'avoir affiche désormais le symbole de devise correct lorsque la portée Website est utilisée pour un attribut Price dans un déploiement multi-magasin.
- Les boutons radio Modes de paiement ne disparaissent plus dans la section Informations sur le paiement et l’expédition du workflow de passage en caisse une fois la page Admin Créer une nouvelle commande rechargée. GitHub-32106
- Le texte arabe s’affiche désormais correctement dans les factures.
- L'application calcule désormais correctement les totaux de taxe des avoirs partiels pour les avoirs basés sur une commande ou une facture dans les magasins qui déploient PayPal Payment Pro comme passerelle de paiement. Auparavant, pour les commandes comportant plusieurs factures, l'application appliquait la taxe totale de cette commande pour l'annulation partielle de la facture dans l'avoir.
- L’application ne crée plus d’interblocages aléatoires de base de données lors de l’envoi de nouveaux e-mails de commande aux clients. Auparavant, les interblocages se produisaient car l’application enregistrait l’objet entier et ses objets associés au lieu des colonnes SQL mises à jour. L'application affichait le type d'erreur suivant :
SQLSTATE[40001]: Serialization failure: 1213 Deadlock found when trying to get lock; try restarting transaction
. GitHub-31090
- La page Détails de la commande du storefront affiche désormais la quantité de produit expédiée correcte. Auparavant, les quantités de produit étaient incorrectes, car le modèle de la page Expédition de commande affichait Qté expédiée sous forme de
int
. Ce champ a été remplacé parfloat
.
- L’application n’envoie plus de courrier électronique aux copies d’une facture de commande lorsque le bouton Envoyer une copie de facture par courrier électronique n’est pas coché. Auparavant, l’application envoyait un e-mail à Client et Envoyer la copie de l’e-mail de facture à. GitHub-28511
- L’application ne crée plus d’entrées d’adresse en double pour un compte client lors de la création d’une commande à partir de l’administrateur pour un client existant. La case à cocher Enregistrer dans le carnet d’adresses a été renommée Ajouter au carnet d’adresses et n’est désormais pas cochée dans l’administration par défaut.
- L’application utilise désormais le logo qui a été chargé dans les paramètres Logo pour l’affichage d’impression HTML lorsque les acheteurs impriment une commande à partir de leur compte. Auparavant, l’application affichait le logo LUMA au lieu du logo chargé.
- Le pager des articles de commande sur le storefront fonctionne désormais comme prévu lorsque le nombre d’articles dépasse 20. Auparavant, le pager prenait en compte les produits enfants, et le nombre total était incorrect.
- L'application affiche désormais les symboles de devise corrects pour le sous-total et les valeurs d'expédition et de gestion sur la page Commande et les grilles de page Avoir. GitHub-22662
- Les administrateurs qui utilisent Safari peuvent désormais ajouter un produit à une commande à partir de l’administrateur. Auparavant, lorsque l’administrateur cliquait sur le bouton Ajouter les produits sélectionnés à la commande, l’application affichait l’icône de charge tournante et la page était suspendue. GitHub-30265
Règle de vente
- L’application applique désormais correctement les règles de prix de panier avec les conditions La remise de quantité maximale est appliquée à ou Étape de quantité de remise (Acheter X) lorsque plusieurs règles de prix de panier sont appliquées au panier. Auparavant, si une règle de prix de panier avec Remise Qté maximale est appliquée à ou Étape Qté remise (Acheter X) était appliquée après une autre règle de prix de panier, la remise totale était réduite à la valeur configurée pour Remise Qté maximale est appliquée à ou Étape Qté remise (Acheter X) multiplié par le prix du produit.
- Le rapport Coupon reflète désormais précisément l’activité des coupons dans les déploiements où une base de données fractionnée est implémentée.
- Les règles de prix de panier qui contiennent la condition Catégorie N’EST PAS sont désormais appliquées comme prévu aux produits enfants/simples configurables qui ne sont pas affectés à une catégorie, mais dont les produits parents sont affectés.
- La requête
cart
GraphQL renvoie désormais le total général correct pour l’étape de facturation d’un panier lorsqu’un coupon est appliqué à la commande.
Rechercher search-heading
- La page de catégorie ne contient plus ces identifiants d’élément HTML en double :
modes-label
,mode-list
,toolbar-amount
,sorter
,limiter
.
- Les résultats de recherche par mots partiels n’incluent plus de correspondances inattendues ou non pertinentes et les recherches produisent des résultats cohérents sur le storefront et l’administrateur. L’application utilise désormais un analyseur différent sans système d’arrêt pour les recherches de mots partielles. Auparavant, les résultats de recherche affichaient des produits qui n’incluaient pas de mots-clés de recherche. (L’analyseur par défaut incluait auparavant un horodateur, et comme le même analyseur était utilisé au moment de la recherche pour la recherche de mots partielle, le résultat de la recherche pouvait produire des correspondances inattendues ou non pertinentes.)
- La recherche rapide renvoie désormais des résultats si la requête de recherche comporte plusieurs mots et que le nom du produit est configuré comme ne pouvant pas faire l’objet de recherches. Auparavant, si le nom du produit était configuré comme ne pouvant pas faire l’objet de recherches, l’application générait une exception de requête sur les requêtes comportant plusieurs mots.
- Les résultats de recherche incluent désormais l’attribut
weight
comme prévu lorsqu’il est configuré comme pouvant faire l’objet d’une recherche.
- L’application ne renvoie plus d’erreur lorsque vous affichez une page de catégorie vide avec Elasticsearch activé. Au lieu de cela, il effectue le rendu de la page comme prévu et affiche un message informatif. Auparavant, un index de texte intégral vide déclenchait une exception sur une page de catégorie.
- La fonction de saisie automatique des champs de recherche fonctionne désormais comme prévu si un acheteur clique en dehors du champ de recherche après avoir commencé sa recherche. Les suggestions de saisie semi-automatique réapparaissent désormais lorsque l’acheteur reprend la saisie. Auparavant, l’application n’affichait pas de suggestions de saisie semi-automatique et le fait de cliquer dans la zone de recherche ne rendait pas les suggestions de recherche visibles à nouveau (bien que la saisie de lettres supplémentaires le fût).
- La recherche d’un produit en fonction de son SKU complet ou partiel dans la recherche avancée renvoie désormais le produit attendu.
- Les filtres de navigation superposés affichent désormais un nombre précis de produits. Auparavant, les valeurs de nombre de produits d’Elasticsearch n’étaient pas filtrées par les autorisations de catalogue.
- Elasticsearch ne renvoie plus d’erreur lorsque le paramètre de page de l’URL de catégorie dépasse la pagination. GitHub-23843
- Vous pouvez désormais ajouter un mappeur de champs Elasticsearch personnalisé à
Magento\Elasticsearch\Model\Adapter\FieldMapper\Product\FieldProvider\FieldName\Resolver\CompositeResolver
. GitHub-24350
- Les développeurs peuvent désormais modifier les mappages Elasticsearch. Auparavant, les modèles dynamiques envoyés au serveur Elasticsearch dans les mappages par défaut étaient codés en dur, ce qui empêchait les développeurs et développeuses d’indexer dans Elasticsearch toute donnée supplémentaire associée à un module personnalisé. GitHub-24363
- Les champs de recherche (mini-recherche de formulaire) fonctionnent désormais comme prévu lorsque les suggestions de recherche sont désactivées. GitHub-30584
Expédition
- L’application met désormais à jour le prix d’expédition comme prévu lorsqu’un acheteur revient à la page du panier après avoir supprimé un produit lors du passage en caisse avec plusieurs adresses.
- L’application affiche désormais le prix d’expédition ajusté correct lorsque certains articles du panier sont qualifiés pour une livraison gratuite. Auparavant, lorsqu’un sous-ensemble d’articles du panier était admissible pour la livraison gratuite, l’application n’ajustait pas le prix d’expédition et affichait le prix d’expédition complet à l’acheteur.
- Les administrateurs limités à un site web spécifique peuvent désormais créer une expédition pour une commande passée sur le même site web. Auparavant, l’application générait cette exception lorsqu’un administrateur qui n’avait pas l’autorisation d’accéder à l’affichage de magasin par défaut tentait d’envoyer une commande placée dans un affichage de magasin auquel l’administrateur avait accès :
Notice: Undefined offset: 1 in /app/code/Magento/Catalog/Model/Product/Attribute/Backend/GroupPrice/AbstractGroupPrice.php on line 293
.
- L'application prend désormais en compte les remises de règle de prix de panier pertinentes pour déterminer si une commande remplit les conditions pour une livraison gratuite de DHL.
- Les étiquettes d’expédition utilisent désormais la devise de base comme prévu au lieu de la devise de commande pour les magasins qui prennent en charge plusieurs devises lorsqu’une commande est passée dans une devise autre que la devise de base. GitHub-31891
- L’application affiche désormais le sous-total de commande correct lorsqu’un acheteur revient sur la page du panier lors du passage en caisse après avoir quitté la page d’expédition multiple. GitHub-31889
- La modification des informations de facturation lors de la création de la commande administrateur ne modifie plus les informations d’expédition pour les clients ayant des adresses d’expédition et de facturation par défaut différentes. GitHub-31786
- L’application ne décoche plus la case Ajouter des commentaires lorsqu’un acheteur clique sur Obtenir les méthodes et les tarifs d’expédition et sélectionne une méthode d’expédition lors de la création d’une commande auprès de l’administrateur. GitHub-30256
- Les acheteurs peuvent désormais utiliser le bouton Précédent du navigateur pour revenir à la page Sélectionner le mode d’expédition lors de la vérification d’une commande avec plusieurs adresses. Auparavant, l’application affichait une page Sélectionner le mode d’expédition corrompue. GitHub-30268
- La quantité de produits reste désormais inchangée comme prévu après qu’un acheteur a modifié la quantité sur la page Adresse d’expédition multiple et cliqué sur le bouton Précédent du navigateur. GitHub-31956
- Les frais de méthode d’expédition à taux forfaitaire ne deviennent plus nuls lorsqu’une règle de prix de panier est appliquée lors du passage en caisse. GitHub-21832
- L’application ne renvoie plus d’erreur lorsqu’un commerçant tente d’expédier une commande à l’aide de DHL lorsque la case Créer une étiquette d’expédition est cochée et que le nom du produit contient des caractères Unicode. Auparavant, l’application affichait cette erreur lors de la demande de création de libellé :
The response is in wrong format
. GitHub-31032
- Vous pouvez passer une commande auprès de l’administrateur dans un déploiement multisite dans lequel
United States
est activé sur un site web etDisable all countries
est activé par défaut sur l’autre site web. Auparavant, l’application ne passait pas de commande et affichait cette erreur :Please check the shipping address information. "regionId" is required. Enter and try again
. GitHub-30577
Évaluation
- La fonction Planifier la mise à jour des blocs fonctionne désormais comme prévu dans les déploiements implémentant Fastly. Auparavant, l’application ne mettait pas à jour le contenu du bloc, car les balises du cache Fastly n’étaient pas invalidées et Fastly continuait à diffuser du contenu obsolète.
- L’aperçu d’évaluation des règles de prix du panier est désormais chargé dans le site web approprié lorsqu’il est affecté à plusieurs vues de magasin de sites web. Auparavant, l’aperçu d’évaluation des règles de prix du panier était chargé dans l’affichage par défaut du magasin, quels que soient les sites web affectés.
- Les prix spéciaux des produits dans la vue de magasin autre que celle par défaut sont désormais définis sur la valeur par défaut comme prévu après la fin d’une mise à jour planifiée.
- Les commerçants peuvent désormais enregistrer un produit téléchargeable avec un exemple lié à partir de la page produit téléchargeable après avoir créé une mise à jour d’évaluation ultérieure avec une date de fin. Auparavant, l’application n’enregistrait pas le produit et affichait le message suivant :
The downloadable sample isn't related to the product. Verify the link and try again
. GitHub-488
- L’application n’exécute plus de requêtes de base de données volumineuses qui incluent tous les identifiants de produit lors de la prévisualisation d’une mise à jour de planning d’une catégorie. Au lieu de cela, le filtre de catégorie est appliqué à la collection de produits afin de créer un tableau temporaire pour les aperçus intermédiaires de la catégorie. Auparavant, l’application insérait tous les produits dans une table temporaire pour l’aperçu de l’évaluation, ce qui dégradait les performances.
- Le module
Magento_SalesRuleStaging
ne déclenche plus d’erreurs lors de la mise à niveau à partir de la version 2.3.x.
- L’application affiche désormais les conditions des règles de catalogue avec les données correctes lorsque vous affichez une mise à jour de planification. Auparavant, si vous affichiez une mise à jour de planification créée avec des conditions, l’application n’affichait pas de conditions ou affichait des conditions avec des données incorrectes.
- La case Utiliser la valeur par défaut d’un produit reste cochée lorsqu’une mise à jour planifiée est décochée avant la mise à jour.
- Les règles de prix de catalogue s’appliquent désormais comme prévu aux produits avec des valeurs d’attribut non définies. Auparavant, les remises créées par le biais d'une règle de prix de catalogue n'étaient pas appliquées aux produits dotés d'attributs non définis. GitHub-461
- Les règles de catalogue fonctionnent désormais comme prévu dans les déploiements multi-sites web avec des magasins situés dans différents fuseaux horaires. Auparavant, l’application appliquait ou désactivait les règles de catalogue sur tous les sites web en même temps.
- Les prix de niveau ne sont plus supprimés lorsqu’une mise à jour de planification est créée pour un site web spécifique.
- Vous pouvez désormais enregistrer un produit à partir de la page Produit téléchargeable après avoir créé une mise à jour d’évaluation ultérieure avec une date de fin. Auparavant, l’application n’enregistrait pas le produit et affichait le message suivant :
The downloadable link isn't related to the product. Verify the link and try again
. GitHub-474
Stocker
- L’application ne traite plus une chaîne de
0
comme une valeur vide lors de l’affichage de la page d’accueil d’un magasin. Auparavant, l’application traitait une valeur entière au début d’un chemin de requête en tant qu’ID de magasin, ce qui avait des effets inattendus sur l’optimisation pour les moteurs de recherche.
- Les modules externes pour les
\Magento\Framework\App\ActionInterface
souslib/internal/Magento/Framework/App/Action/Plugin
ont été supprimés afin de respecter la directive selon laquelle les modules externes doivent être utilisés pour personnaliser le comportement d’un module à partir d’un autre module. GitHub-28050
- L’application affiche désormais ce message lorsque vous essayez de sélectionner
Website
par défaut lorsqueStore View
est désactivé lors de la création du site web :Please enable your Store View before using this Web Site as Default
. Auparavant, le site web s’était bloqué et l’application n’avait pas affiché d’alerte.
Taxe
- L'application prend désormais en compte la taxe cachée lors de la validation du montant minimum de la commande.
- L’application affiche désormais les Taxes fixes sur les produits (FPT) comme prévu lorsqu’un acheteur revient à son panier et passe en caisse après l’ajout de produits groupés au panier. GitHub-30250
- L'application préremplit désormais les champs d'entrée Numéro de TVA pour les adresses de facturation et d'expédition de la section Informations sur l'adresse de la page Admin - Nouvelle commande avec des numéros de TVA enregistrés lorsqu'un administrateur crée une commande pour un client existant. GitHub-31846
- L'application affiche désormais un champ Numéro de TVA sur la page d'enregistrement des clients lorsque l'
customer/create_account/vat_frontend_visibility
est activée. GitHub-31326
Test
- Les environnements de test ont été mis à niveau vers Redis 6.0.12.
- Suppression de
CacheCleaner::cleanAll();
des tests d’intégration. GitHub-31074
- Ajout d’un test pour ce scénario : les utilisateurs administrateurs peuvent modifier un compte client lorsque le client est abonné à une newsletter mise en file d’attente. GitHub-30645
- Suppression de la commande
cache:flush
des tests afin d’améliorer le temps d’exécution pour les modulesCatalog
,CatalogUrlRewrite
etLoginAsCustomer
. GitHub-31056
- Les paramètres redondants ont été supprimés et l’instruction POST a été remplacée par GET si nécessaire dans
\Magento\Logging\Model\ProcessorTest::testLoggingProcessorLogsActionShipping
.
Thème
- La page de connexion du client n’affiche plus ce message lorsque le paramètre Déplacer le code JS au bas de la page (Store > Configurations > Advance > Developer > Paramètres JavaScript) et les cookies sont tous deux activés :
The store will not work correctly in the case when cookies are disabled
.
- Les liens de compte dans les en-têtes suivent désormais les normes WCAG. Auparavant, les liens de compte dans les en-têtes contenaient des identifiants dupliqués, ce qui entraînait l’échec de la validation de WCAG.
- L’application donne désormais la priorité à la configuration du magasin pour une image de logo de magasin sur la configuration de la disposition. Auparavant, la taille des images de logo était fixe et ne variait pas selon le magasin.
- L’application affiche désormais de manière cohérente les éléments de page sur les pages de storefront qui utilisent des thèmes Adobe Commerce standard. Auparavant, tous les styles n’étaient pas appliqués dans le thème Vide . Par conséquent, tous les éléments de page n’étaient pas affichés dans les pages utilisant ce thème. (Par exemple, aucune icône de loupe n’était présente dans le champ de recherche de la page Mes commandes .)
Traduction et paramètres régionaux
- Les crochets ajoutés aux chaînes ne sont plus placés dans un échappement lorsque la traduction en ligne est configurée. Auparavant, la méthode
escapeHtmlAttr
convertissait les crochets en codes d’entité HTML. GitHub-32000
- Les phrases non traduisibles dans l’interface d’administration peuvent désormais être traduites. (Cette demande d’extraction contribue aux efforts en cours pour rendre toutes les chaînes d’administration localisables.) GitHub-11175
- Les chaînes de texte du modèle utilisées pour gérer les modes de paiement stockés (Mon compte > Modes de paiement stockés ) peuvent désormais être traduites. GitHub-31211
- Les e-mails de commande envoyés à partir de l’administrateur utilisent désormais les paramètres régionaux du magasin et non pas les paramètres régionaux associés au compte de l’administrateur. GitHub-26521
Interface utilisateur
- Le pied de page Administrateur affiche désormais la version correcte du produit.
- La pagination des sources est désormais présente comme prévu lors de la création de l’expédition Admin.
- Le filtre de grille de produits fonctionne désormais correctement lorsque vous utilisez des attributs de date personnalisés pour filtrer les produits et que les paramètres régionaux de l’utilisateur administrateur sont
en_GB
.
- Les mouvements de pincement pour zoomer fonctionnent désormais comme prévu dans le agrandisseur de la galerie d’images de la page produit sur les appareils iOS.
- La pagination des résultats de recherche de la grille de produits d’administration commence désormais à la page un pour chaque recherche comme prévu.
- Les anomalies avec l’affichage du panier en cas de zoom ont été résolues. Auparavant, les éléments d’affichage se chevauchaient lors du zoom de cette page.
- Les problèmes d’alignement avec les onglets de la page d’invitation de l’administrateur (Admin Marketing > Ventes privées > Invitations) ont été résolus. Auparavant, l’affichage de l’onglet pour les invitations acceptées par un client n’était pas aligné correctement. GitHub-333
- La page de révision de commande affichée lors du passage en caisse avec PayPal Express Checkout se charge désormais correctement. Auparavant, le modèle contenait le bouton inutilisé Mettre à jour la méthode de diffusion, qui n’était que partiellement masqué par le script lors du rendu de la page. GitHub-32006
- Les étoiles d’évaluation et le texte d’évaluation dans la section Avis des clients de la page produit sont désormais correctement espacés lorsque de longs noms d’évaluation sont présents. GitHub-31890
- Les options s'affichent désormais comme prévu dans la liste déroulante Actions des pages Archiver les factures, les livraisons et les avoirs.
- L’application affiche désormais une valeur temporelle correcte lorsque l’option
datetime
du composanttimeOnly
est définie sur oui. GitHub-23157
- Vous pouvez désormais supprimer une mise à jour de disposition après la création d’un widget dans Admin Content > Widgets. GitHub-29936
- Le bouton Supprimer la mise à jour de la disposition fonctionne désormais comme prévu sur toute disposition que vous avez ajoutée à partir de Admin Contenu > Widgets. Auparavant, ce bouton ne fonctionnait sur aucune mise en page autre que la première sélectionnée lors de l’ajout de plusieurs mises en page. GitHub-30286
- L’application utilise désormais le titre de page défini dans le fichier de mise en page comme titre de page du navigateur pour le fichier de modification du compte client. Auparavant, l’action du contrôleur de
Magento\Customer\Controller\Account\Edit
appliquait la valeur du titre de la page àAccount Information
. GitHub-30724
-
Des cases à cocher qui permettent aux commerçants d’afficher ou de masquer les mots de passe ont été ajoutées à ces pages :
- Connexion client
- Enregistrement des clients
- Modification du client (section Modifier le mot de passe)
- Mot de passe défini par le client GitHub-31557
- Suppression d’un en-tête redondant dans les cellules de la grille qui s’affichait lorsqu’un administrateur ajoutait un produit à un ensemble de produits groupés après avoir modifié l’ensemble d’attributs. GitHub-30911
- L’application affiche désormais un filtre
DateRange
dans la zone Connecté de la page Client > Connexion. Auparavant, l’application affichait un filtreText
. GitHub-30328
- JavaScript a été supprimé des fichiers de modèle et déplacé dans des fichiers distincts afin de réduire les problèmes de rendu sur les pages d’administration. Auparavant, les pages d’administration ne s’affichaient pas correctement dans les déploiements dans lesquels la minimisation d’HTML avait été activée. L’application affichait cette erreur :
An error has happened during application run. See exception log for details
. GitHub-32454
- Le widget
dropdownDialog
charge désormais uniquement les blocs dejquery-ui
glissables et redimensionnables dont il a besoin. Auparavant, il chargeait de grandes quantités de code inutile, ce qui gonflait le temps de chargement et réduisait les performances. GitHub-32810
Réécritures d’URL
- Les réécritures d’URL de produit pour un site web spécifique dans un déploiement multisite sont désormais générées comme prévu une fois que les produits ont été affectés à un site web par une mise à jour en bloc.
- L’application génère désormais correctement le chemin d’URL pour les catégories enfants lorsque la case Utiliser la valeur par défaut de la clé d’URL est activée pour la catégorie parent. Auparavant, le déplacement d’une catégorie dans la hiérarchie entraînait une valeur de
url_path
incorrecte lors de l’utilisation de différentes clés d’URL dans un déploiement d’affichage multi-magasin. GitHub-16202
- L’application met désormais à jour la
url_path
de la catégorie affectée à l’ensemble de la portée du magasin lorsque vous déplacez une catégorie dans la hiérarchie de catégories. Auparavant, le déplacement d’une catégorie dans la hiérarchie entraînait uneurl_path
incorrecte.
- Les redirections d’URL créées à partir de l’administration à l’aide d’une URL personnalisée fonctionnent désormais correctement. Auparavant, GraphQL mettait en cache la réponse d’une requête de
urlResolver
GraphQL et renvoyait l’ancienne valeur après la mise à jour de la réécriture de l’URL.
- Les réécritures d’URL de produit sont désormais supprimées comme prévu lorsqu’un produit est supprimé d’un site web. GitHub-24184
- Ajout d'une référence
main_table
à lastore_id
dans la fonctionaddStoreFilter
de la collectionapp/code/Magento/UrlRewrite/Model/ResourceModel/UrlRewriteCollection.php
. Auparavant, les problèmes survenaient chaque fois qu’unjoin
était ajouté à la collection sur un tableau qui contient également une colonnestore_id
. GitHub-31853
- Le point d’entrée REST
PUT /V1/products/:sku
génère désormais à nouveau les réécritures d’URL de produit comme prévu. Auparavant, le point d’entrée regénérait les valeurs deurl_key
de produit, mais pas les réécritures d’URL. GitHub-30316
Utilisateur
- Vous pouvez désormais enregistrer un nouveau rôle d’utilisateur effectif (Admin System > Permissions > User Roles) avec l’arborescence de
Catalog
entière sélectionnée, à l’exclusion deEdit Product Design
( Catalog > Inventory > Products > Edit Product Design). Auparavant, l’application n’enregistrait pas les modifications de produit effectuées par un utilisateur ayant ce rôle et affichait cette erreur :Not allowed to edit the product's design attributes
. GitHub-31973
- L’application utilise désormais le modèle d’e-mail personnalisé correct lors de la génération d’e-mails pour les nouveaux administrateurs. Auparavant, l’application utilisait l’ancien modèle par défaut, qui omettait les nom et prénom de l’administrateur.
- L’application utilise désormais le modèle d’e-mail correct lors de l’envoi d’e-mails aux nouveaux utilisateurs. Auparavant, l’application utilisait le modèle par défaut même lorsqu’un modèle personnalisé était sélectionné.
VersionCMS
- L’application applique désormais le thème correct à une page CMS après avoir modifié sa disposition. Auparavant, l’application modifiait le thème affecté à Luma après l’enregistrement des modifications de disposition, quel que soit le thème affecté à la page.
- Les administrateurs disposant de rôles restreints peuvent désormais ajouter, mettre à jour ou dupliquer les pages auxquelles ils ont accès et qui sont affectées à un nœud de hiérarchie. Auparavant, l’application générait une erreur fatale dans ces conditions.
Vidéo
- Les vidéos sont désormais disponibles dans la galerie de produits comme prévu lorsque le regroupement JavaScript avancé est activé et utilisé. GitHub-32501
- Les vidéos YouTube pour les produits simples qui appartiennent à un produit configurable fonctionnent désormais comme prévu. Auparavant, les images étaient classées par identifiant plutôt que par position. Par conséquent, certaines vidéos ont été traitées comme des images. GitHub-29690
Marchandiseur visuel
- Les performances du chargement des pages de catégories d’administration avec Visual Merchandiser ont été améliorées. Le chargement des pages de catégorie Admin ne génère plus de requêtes de base de données volumineuses.
Framework d’API web
- L’API Catalog met désormais correctement à jour les valeurs d’option personnalisées d’un produit en ajoutant de nouvelles valeurs et en supprimant les anciennes. Auparavant, l’API ne supprimait pas les anciennes valeurs.
- La
/V1/guest-carts/:cartId/billing-address
POST renvoie désormais l’ID d’adresse sous la forme d’un entier, et non d’une chaîne.
Restriction de site web
- Les acheteurs sont maintenant redirigés vers la page à laquelle ils tentaient d’accéder avant qu’on ne leur demande de se connecter. Auparavant, dans les déploiements où les restrictions de site web étaient activées et le mode de restriction défini sur Ventes privées : connexion uniquement, les acheteurs étaient redirigés vers la page d’accueil du magasin.
Widget
- Un administrateur peut désormais supprimer toutes les mises à jour de disposition d’un widget. Auparavant, lorsqu’un widget disposait de plusieurs mises à jour de disposition, un administrateur ne pouvait supprimer que la première.
- Cliquer sur le bouton Ajouter au panier sur le widget de produit n’entraîne plus le rechargement de la page. Auparavant, le fait de cliquer sur le bouton Ajouter au panier sur un widget de produit rechargeait une page active avant l’ajout du produit au panier.
- Le widget de lien du nœud de hiérarchie CMS dans TinyMCE effectue désormais le rendu des liens de hiérarchie comme prévu lorsque le champ Ancrer le texte personnalisé est vide.
Liste de souhaits
- L’application ne réinitialise plus les paramètres de configuration d’un produit configurable lorsque vous cliquez sur le bouton Modifier l’élément pour le produit d’une liste de souhaits. GitHub-32119
- L’application affiche désormais le prix correct du produit lorsque vous mettez à jour un produit avec une option de fichier personnalisable dans la liste de souhaits. Auparavant, l’application affichait le mauvais prix de produit et n’affichait pas de lien vers le fichier chargé.
- Le nombre total de produits d’une liste de souhaits pour un client avec plusieurs listes de souhaits correspond désormais au nombre d’éléments de la liste de souhaits. Auparavant, les produits en rupture de stock étaient inclus dans le nombre total de produits.
- L’application supprime désormais un produit d’une liste de souhaits après l’avoir ajouté à une commande. GitHub-30260
- Les acheteurs peuvent désormais ajouter des produits associés à leur panier à partir d’une liste de souhaits. Auparavant, l’application ajoutait uniquement le produit configurable, et non le produit configurable et ses produits associés lorsqu’un acheteur cliquait sur le lien Tout sélectionner de la section Produits associés. GitHub-32274
Problèmes connus
Problème : erreur JavaScript lorsque reCAPTCHA est désactivé. Si reCAPTCHA est désactivé pour l’extraction, l’extraction se poursuit, mais l’application affiche une erreur Uncaught TypeError
dans le journal de la console. Ce problème sera corrigé dans une version ultérieure.
Problème : Erreur de politique de sécurité du contenu. Le storefront affiche l’erreur suivante dans le journal de la console : The Content-Security-Policy directive frame-ancestors does not support the source expression unsafe-inline
. Les performances du storefront ne sont pas affectées.
Problème : Anomalies de l’affichage des montants des cartes-cadeaux avec le crédit PayPal. Lorsque le crédit PayPal est activé et que plusieurs montants de carte cadeau sont configurés, si un acheteur modifie le montant de la valeur d'une carte cadeau, le storefront ne met pas à jour le montant des paiements échelonnés. Un correctif sera inclus dans Adobe Commerce 2.4.4 et Magento Open Source 2.4.4.
Problème : Le bouton Ajouter à la commande ne fonctionne pas pour les produits ajoutés au panier par SKU. l’application affiche ce message d’erreur lorsque vous cliquez sur le bouton Ajouter à la commande après avoir ajouté des produits à la commande par SKU : An error has happened during application run
. Les produits ne sont pas ajoutés au panier. Solution : utilisez la fonction Ajouter des produits .
Problème : les requêtes category
et categoryList
de GraphQL ignorent les autorisations de catégorie qui déterminent si les catégories d’un catalogue partagé sont masquées ou exposées. Le storefront affiche actuellement toutes les catégories qui ont été affectées ou non affectées au catalogue partagé. Cela affecte les déploiements d’Adobe Commerce 2.4.3 qui implémentent un storefront PWA pour lequel les catalogues partagés B2B ont été activés.
Contributions de la Communauté
Nous sommes reconnaissants envers l’ensemble de la communauté Magento Open Source et souhaitons saluer leurs contributions à cette version.
L’équipe d’ingénierie de communauté Magento Contributors tient à jour une liste des principaux contributeurs individuels et partenaires par mois, trimestre et année. Depuis cette page Contributeurs, vous pouvez suivre les liens vers leurs relations publiques fusionnées sur GitHub.
Contributions des partenaires
Le tableau suivant présente les contributions des partenaires. Ce tableau répertorie le partenaire qui a contribué à la demande d’extraction, la demande d’extraction externe et le numéro de problème GitHub qui lui est associé (le cas échéant).
Contributions des contributeurs individuels
Le tableau suivant identifie les contributions des membres de notre communauté. Ce tableau répertorie les demandes d’extraction externes, le numéro de problème GitHub qui lui est associé (le cas échéant) et le membre de la communauté qui a contribué à la demande d’extraction.
Configuration requise
Notre pile technologique est construite sur PHP et MySQL. Pour plus d'informations, voir Configuration requise.
Instructions d’installation et de mise à niveau
Vous pouvez installer Adobe Commerce 2.4.3 à l’aide du compositeur.
Kits d’outils de migration
L’outil de migration de données permet de transférer les données de stockage Magento 1.x vers Magento 2.x. Cette interface de ligne de commande comprend des fonctions de vérification, de suivi de la progression, de journalisation et de test. Pour obtenir des instructions d’installation, voir Installation de l’outil de migration des données. Envisagez d’explorer le référentiel de migration de données ou d’y contribuer.
Le kit de migration du code permet de transférer les extensions et personnalisations de magasin Magento 1.x existantes vers Magento 2.x. L’interface de ligne de commande comprend des scripts permettant de convertir des modules et des mises en page Magento 1.x.