Notes de mise à jour d’Adobe Commerce 2.4.2
Adobe Commerce 2.4.2 apporte des améliorations aux performances et à la sécurité, ainsi que des améliorations significatives de la plateforme. Les améliorations de la sécurité incluent une prise en charge accrue de l’attribut SameSite
pour tous les cookies. Les améliorations B2B se concentrent sur la prise en charge des paiements en ligne pour les bons de commande. Elasticsearch 7.9.x et Redis 6.x sont désormais pris en charge.
Cette version comprend plus de 280 nouveaux correctifs du code principal et 35 améliorations de la sécurité. Il comprend la résolution de près de 290 problèmes GitHub par les membres de notre communauté. Ces contributions de la communauté vont du nettoyage mineur du code principal à des améliorations significatives dans GraphQL.
Tous les problèmes connus identifiés dans la version 2.4.1 ont été résolus dans cette version.
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.
Correctif de sécurité disponible
Les commerçants peuvent désormais installer des correctifs de sécurité sensibles au temps sans appliquer les centaines de correctifs et améliorations fonctionnels fournis par une version trimestrielle complète (par exemple, 2.4.1-p1). Le correctif 2.4.0.12 (package Compositeur 2.4.1-p1) est un correctif de sécurité qui fournit des correctifs pour les vulnérabilités qui ont été identifiées dans notre version trimestrielle précédente, la version 2.4.1. Tous les correctifs appliqués à la version 2.4.1 de sont inclus dans ce correctif de sécurité. (Un correctif fournit un correctif à une version publiée qui résout un problème ou un bug spécifique.)
Pour obtenir des informations générales sur les correctifs de sécurité, voir Présentation de la nouvelle version des correctifs de sécurité. Pour obtenir des instructions sur le téléchargement et l’application de correctifs de sécurité (y compris le correctif 2.4.1-p1), consultez Démarrage rapide de l’installation sur site. Les correctifs de sécurité incluent uniquement des correctifs de sécurité, et non les améliorations de sécurité supplémentaires incluses dans le correctif complet.
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.
Faits saillants
Recherchez les points forts suivants dans cette version.
Améliorations substantielles de la sécurité
Cette version comprend plus de 35 correctifs de sécurité et améliorations de la sécurité de la plateforme. Tous les correctifs de sécurité ont été rétroportés dans 2.4.1-p1 et 2.3.6-p1.
Plus de 35 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 sont les suivantes :
-
Tous les cookies principaux prennent désormais en charge l’attribut
SameSite
. -
L’application affiche désormais des messages qui identifient le contenu potentiellement malveillant dans les champs de description de produit et de catégorie lorsque l’utilisateur ou l’utilisatrice tente d’enregistrer des valeurs dans ces champs.
-
Les opérations du système de fichiers sur les composants ont été normalisées et renforcées pour empêcher les chargements malveillants.
-
Les violations de la politique de sécurité du contenu principal (CSP) ont été corrigées.
Améliorations de l’infrastructure
Cette version comprend des améliorations de la qualité principale, qui améliorent la qualité du framework et ces domaines fonctionnels : compte client, catalogue, CMS, OMS, import/export, promotions et ciblage, panier et passage en caisse, B2B, évaluation et prévisualisation.
Améliorations de Platform
-
Elasticsearch 7.9.x est désormais pris en charge. Bien que nous vous recommandions d’exécuter Elasticsearch 7.9.x, la version 2.4.x reste compatible avec Elasticsearch 7.4.x.
-
2.4.2 a été testé avec Varnish 6.4. La version 2.4.x reste compatible avec Varnish 6.x.
-
Redis 6.x est désormais pris en charge. La version 2.4.x reste compatible avec Redis 5.x.
-
2.4.2 est désormais compatible avec Composer 2.x. Nous recommandons aux commerçants de migrer vers Composer 2.x. Bien que vous puissiez installer cette version à l’aide du compositeur 1.x, le compositeur 1.x atteindra bientôt sa fin de vie. Pour une présentation des fonctionnalités du compositeur 2.x, voir Le compositeur 2.0 est désormais disponible !
Cette version ne permet plus de configurer une installation pour utiliser une base de données fractionnée. Les commerçants qui utilisent actuellement une base de données fractionnée doivent commencer à planifier le retour ou la migration vers une seule base de données ou utiliser une autre approche. Pour un aperçu de ce problème, consultez l’article Obsolescence de la fonctionnalité de base de données fractionnée dans Adobe Commerce DevBlog . Pour obtenir des instructions sur la migration voirRétablir une base de données fractionnée en une seule base de données.
Améliorations des performances
Cette version comprend des améliorations du code qui améliorent les performances des API et le temps de réponse de l’administrateur pour les déploiements avec des catalogues volumineux. Plusieurs améliorations d’évolutivité permettent à la version 2.4.2 de prendre en charge en mode natif des catalogues complexes jusqu’à 20 fois plus volumineux que dans les versions précédentes.
GraphQL
Cette version ajoute une couverture GraphQL pour les fonctionnalités suivantes :
-
Ajout de la prise en charge de plusieurs listes de souhaits. Vous pouvez utiliser GraphQL pour créer, supprimer et renommer des listes de souhaits, ainsi que pour déplacer ou copier des éléments entre elles.
-
Ajout de la prise en charge des autorisations de retour de marchandises (RMA). Les acheteurs peuvent demander un retour. Si le commerçant accepte la demande, l’acheteur peut effectuer des tâches telles que ajouter un commentaire et ajouter des informations de suivi.
-
Ajout de la prise en charge des fonctionnalités B2B suivantes :
- Entreprises. Vous pouvez ajouter la société administrateurs, utilisateurs, rôles et équipes.
- Crédit de la société. La requête d’entreprise inclut des détails sur l’historique de crédit de l’entreprise.
- Listes des demandes internes. Vous pouvez créer, supprimer et mettre à jour des listes de demandes d'approvisionnement. La prise en charge inclut également la possibilité d'ajouter, mettre à jour, supprimer, copier et déplacer des articles dans une liste de demandes d'approvisionnement ainsi que d'ajouter des articles de liste de demandes d'approvisionnement dans le panier.
-
Ajout de la prise en charge des unions dans GraphQL. GitHub-29425
-
Ajout de la prise en charge de listes de comparaison. Les acheteurs peuvent créer et supprimer des listes de comparaison et ajouter et supprimer des éléments aux listes de comparaison. En outre, les acheteurs qui créent une liste de comparaison en tant qu’invité peuvent se connecter en tant que client et conserver leurs listes de comparaison.
-
Ajout de la mutation
generateCustomerTokenAsAdmin
et mise à jour de l’objetCustomer
pour prendre en charge l’assistance aux achats à distance. -
Ajout de la localisation dans les magasins pour prendre en charge des tâches telles que le changement de langue, de panier et de devise.
-
Le schéma GraphQL a été amélioré afin d’optimiser la récupération des données de produit pour les produits configurables avec de nombreuses variantes.
-
Les ID d’objet de type entier ont été abandonnés au profit d’attributs
uid
de type ID. -
Ajout de l’attribut
staging
auxProductInterface
etCategoryInterface
pour déterminer si un produit est en cours d’évaluation et pour afficher les informations de campagne associées.
Consultez le Guide du développeur de GraphQL pour plus d’informations sur ces améliorations.
B2B
La version 2.4.2 introduit la version 1.3.1 de B2B. Cette version comprend la prise en charge des paiements en ligne pour les bons de commande ainsi que plusieurs correctifs de bugs.
Les commandes peuvent désormais être exécutées à l'aide de modes de paiement en ligne. Les acheteurs B2B sont invités à sélectionner leur mode de paiement préféré pour chaque bon de commande lors de la première commande. Une fois la commande approuvée, les acheteurs sont invités à saisir les détails de paiement pour convertir la commande en commande finale.
Pour prendre en charge un workflow complet d’acceptation des paiements en ligne, cette fonctionnalité permet également de :
-
Il remplace les modèles de mode de paiement existants lors du passage en caisse initial pour maintenir la conformité PCI.
-
Maintient la compatibilité avec les méthodes de paiement tierces, personnalisées et développées par la communauté.
-
Avertit les acheteurs par e-mail lorsqu'ils doivent ajouter des détails de paiement à une commande fournisseur approuvée.
-
Permet de personnaliser les e-mails de l’administrateur, ce qui permet aux commerçants d’utiliser des modèles conformes à leur marque.
-
Introduit un état
Approved – Pending Payment
pour les commandes fournisseur afin d'indiquer clairement quand une action est requise. -
Empêche l'ajout ou la suppression de codes remise lors de l'étape de paiement final, ce qui garantit que le montant total de la commande reste inchangé pour les commandes fournisseur approuvées.
-
Permet aux acheteurs de modifier le mode de paiement au cours de l'étape de paiement final afin de maintenir la flexibilité et d'augmenter la conversion.
Cette version comprend également plusieurs correctifs. Voir Notes De Mise À Jour B2B.
PWA Studio
Cette version de PWA Studio comprend les éléments suivants :
-
Internationalisation et localisation. Venia prend désormais en charge plusieurs langues et devises.
-
Amélioration du framework d’extensibilité pour prendre en charge les modifications de code par le biais d’extensions.
-
Composants initiaux des fonctionnalités liées à Mon compte, telles que la liste de souhaits, les paiements enregistrés, le carnet d’adresses et l’historique des commandes.
-
Diverses optimisations des performances et correctifs de bugs.
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.
Page Builder
Cette version comprend des améliorations de la migration du contenu de Page Builder et de la personnalisation de Page Builder CSS :
-
L’équipe de développement peut désormais appliquer un style différent à la sortie de type de contenu par fenêtre d’affichage sans utiliser la directive
!important
. -
Le contenu migré vers Page Builder n’est plus complété avec le style intégré par défaut.
-
Page Builder n’exige plus que tous les types de contenu soient placés dans une ligne. L’étape Page Builder est maintenant initialement vierge et prend en charge l’ajout direct des types de contenu suivants à l’étape : Lignes, Colonnes, Onglets, Code HTML, Blocs, Blocs dynamiques.
-
Les marges et les marges intérieures prédéfinies ne sont plus nécessaires pour les types de contenu.
-
Le nouveau mobile sélecteur de fenêtre d’affichage et la portée de la fenêtre d’affichage pour les valeurs de champ de formulaire permettent aux utilisateurs et aux développeurs d’effectuer les actions suivantes :
-
Affichez le contenu sur différents ports d’affichage lors de la création.
-
Optimisez le paramètre de champ de hauteur minimale sur différents types de contenu pour chaque fenêtre d’affichage. (Un seul paramètre (hauteur minimale) est pris en charge prêt à l’emploi. Développement personnalisé requis pour activer l’optimisation mobile pour d’autres paramètres de contenu.)
-
Ajouter la portée du champ aux champs personnalisés et aux ensembles de champs (développeurs).
-
Conseils interactifs sur les produits
Le guide interactif intégré au produit fournit aux commerçants des conseils d’utilisation et des informations provenant de l’administration sur les annonces de nouvelles fonctionnalités, les guides pas à pas, les informations d’intégration et les info-bulles. Les administrateurs doivent souscrire à l’assistance d’administration pour recevoir des conseils intégrés au produit si cette fonctionnalité n’est pas activée. Voir Collecte de données d’utilisation et Utilisation par l’administrateur.
Intégration d’Adobe Stock
Cette version comprend l’intégration d’Adobe Stock v2.1.1.
Galerie de médias
Nouvelles ressources de rôle pour Media Gallery. Cette version offre aux commerçants la possibilité de limiter l’accès administrateur à la galerie de médias uniquement et de contrôler qui peut effectuer ces actions :
-
Insertion de ressources multimédias dans le contenu
-
Chargement de ressources
-
Modifier les détails des ressources
-
Suppression de ressources de la Galerie de médias
-
Gérer la structure des dossiers.
Images optimisées pour le web dans le contenu. Les commerçants peuvent désormais utiliser le rendu d’image optimisé pour le web dans le contenu au lieu des images haute résolution. L’image d’origine n’est pas modifiée dans la Galerie de médias et le rendu de l’image est généré dynamiquement lorsque l’image est insérée dans le contenu.
Améliorations de la prise en charge d’AWS S3
La prise en charge d’Amazon Simple Storage Service (AWS S3) a été améliorée afin d’inclure les éléments suivants :
-
Stockage d’objets et extensibilité future
-
Stockage des fichiers multimédias sur AWS S3
La prise en charge d’AWS S3 a été ajoutée à tous les modules, y compris l’intégration B2B, PageBuilder et Adobe Stock.
Functional Testing Framework (MFTF)
MFTF 3.2.1 est désormais disponible. Cette version introduit une tolérance d’erreur dans les tests et la génération de suites de tests. D’autres améliorations et correctifs sont décrits dans le Journal des modifications de la structure de tests fonctionnels.
Order Management System (OMS)
Le connecteur MCOM est entièrement compatible avec la version 2.4.2. Les correctifs de bugs et les améliorations apportées au connecteur sont décrits dans Notes de mise à jour pour le connecteur. Cette version comprend des améliorations de l’interface de ligne de commande d’OMS, qui fournit désormais des informations détaillées que les partenaires et les équipes d’assistance peuvent utiliser pour résoudre les problèmes liés aux processus retry
, queue_prune
, order_sync
, message process
et catalog export
.
Extensions développées par le fournisseur
Consultez les articles suivants pour obtenir des mises à jour sur les fonctionnalités et les modifications de cette version :
-
Amazon Pay. Amazon Pay est obsolète dans cette version et sera supprimé dans Magento 2.5.0. 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.2.
Installation, mise à niveau, déploiement
- Cette version ne permet plus de configurer une installation pour utiliser une base de données fractionnée. Reportez-vous à l’article Obsolescence de la fonctionnalité de base de données fractionnée dans Adobe Commerce DevBlog .
- Les commerçants peuvent désormais mettre à niveau un déploiement Open Source qui exécute MySQL 8.x vers un déploiement Commerce. Auparavant, l’application générait une exception lorsque les valeurs
AUTO_INCREMENT
revenaient aux valeurs initiales pour toutes les tables oùrow_id
avait été ajouté lors de la mise à niveau.
- L’application affiche désormais un message d’erreur qui identifie le chemin d’accès utilisé pour créer le correctif si une erreur se produit lors de l’exécution de
bin/magento/setup:db:generate-patch
. GitHub-27523
- Les caches
block_html
,full_page
etlayout
sont désormais désactivés comme prévu après l’exécution dubin/magento/setup:upgrade
. GitHub-28186
- La version PHP minimale requise dans
bootstrap.php
a été mise à jour. GitHub-30004
- Vous pouvez désormais exécuter
bin/magento/setup:upgrade
après l’installation des données d’exemple. Auparavant, lorsque vous tentiez d’exécuterbin/magento/setup:upgrade
, l’application affichait cette erreur :unable to apply data patch magento\catalogrulesampledata\setup\patch\data\installcatalogrulesampledata for module magento_catalogrulesampledata
. L’application a également affiché cette erreur dans le journal système :main.ERROR: Sample Data error: Unable to unserialize value. Error: Syntax error
. GitHub-30685
- Vous pouvez désormais définir une clé API YouTube à partir de la ligne de commande comme prévu. Auparavant, l’application renvoyait cette erreur lorsque vous tentiez d’exécuter
bin/magento config:sensitive:set catalog/product_video/youtube_api_key
:There are no sensitive configurations to fill
.
- L’application respecte désormais les valeurs
maxMessages
définies dansqueue_consumer.xml
. Auparavant, l’application utilisait uniquement les valeurs de configuration de déploiement. GitHub-29522
- La génération d’URL pour un nouveau magasin fonctionne désormais comme prévu lorsque le magasin est créé à l’aide de
bin/magento setup:config:import
. Auparavant, les réécritures d’URL n’étaient pas générées dans les environnements de production. GitHub-30025
- L'application n'affiche plus cette question lorsque vous exécutez
bin/magento setup:install
pour vous connecter à la base de données existante :Overwrite the existing configuration for db-ssl-verify?[Y/n]
. GitHub-29612
AdminGWS
- Le bouton Ajouter une nouvelle évaluation et les boutons Enregistrer, Supprimer Réinitialiser ne sont plus disponibles sur la page Magasins > Attribute > Rating pour un administrateur disposant d’autorisations limitées.
- L’administrateur affiche désormais les données uniquement des sites web pour lesquels l’administrateur connecté dispose d’autorisations. Auparavant, l’administrateur affichait les données de tous les sites web dans le déploiement .
- Tous les sites web sélectionnés sont désormais stockés dans
gws_websites
, quelle que soit la taille de l’identifiant du site web. Auparavant, les identifiants de site web étaient tronqués et la liste des sites web sélectionnés n’était pas stockée dans la base de données. Les rôles utilisateur n'ont pas été correctement enregistrés et l'application affichait cette erreur lorsqu'un commerçant tentait de modifier et d'enregistrer un rôle :The "X" store ID is incorrect. Verify the store ID and try again
.
- L’application affiche désormais le nombre correct d’éléments dans les grilles d’administration pour les utilisateurs administrateurs restreints. Auparavant, les nombres affichés pour ces grilles reflétaient les données de tous les pays, tandis que les grilles elles-mêmes affichaient uniquement les données de pays spécifiques. (Ce correctif corrige un problème lié aux grilles Segments clients, Règles de prix de catalogue, Règles de prix de panier, Tous les utilisateurs, Utilisateurs verrouillés et Rôles utilisateur.)
- Les administrateurs dont les autorisations excluent
Magento_Catalog::edit_product_design
(Modifier la conception du produit) peuvent désormais créer un produit en enregistrant un produit existant avec un nouveau nom dans la vue de magasin sélectionnée. Auparavant, l’application affichait cette erreur :Not allowed to edit the product's design attributes
. GitHub-28106
- L’application n’affiche plus le bouton Ajouter un attribut sur les pages sous Magasins > Attributs lorsqu’un administrateur ne dispose pas des autorisations appropriées pour créer ces entités. Auparavant, l’application générait une erreur 404 lorsqu’un administrateur de site web qui ne disposait pas des autorisations appropriées tentait de créer un attribut Jeu d’attributs ou Client.
- L’application ne renvoie plus d’erreur lorsque vous tentez de modifier des
backend-frontname
à l’aide du conteneur dessh
après avoir installé Adobe Commerce. GitHub-26762
Intégration d’Adobe Stock
- Ajout de la prise en charge de la lecture de métadonnées
exif_image.png
ouexif-image.jpeg
. GitHub-1449
- Le contenu affiché lorsque vous cliquez sur le signet Affichage par défaut pour la Galerie de médias n’est plus filtré. Auparavant, la vue par défaut contenait un filtre appliqué à partir de
url-filter
’applicateur. GitHub-1813, GitHub-1789, GitHub-1780
- La logique a été supprimée du contrôleur OnInsert de WYSIWYG (
Magento\Cms\Controller\Adminhtml\Wysiwyg\Images\OnInsert::execute()
) et ajoutée au modèleModel\Wysiwyg\Images\PrepareImage::execute()
. GitHub-1504
- L’émulation de zone a été supprimée de la commande
media-content:sync
(\Magento\MediaContentSynchronization\Console\Command\Synchronize::execute
). GitHub-1784
Analytics
- Les rapports avancés fonctionnent désormais comme prévu pour plusieurs environnements dans le même domaine. Auparavant, les fichiers CSV générés par les rapports avancés échouaient, car les guillemets doubles étaient précédés de barres obliques inverses plutôt qu’avec un autre guillemet double, comme l’exigeait la norme CSV RFC4180.
- La tâche
analytics_collect_data
s’exécute désormais correctement lors de l’utilisation du port par défaut ou d’un port autre que le port par défaut pour se connecter à MySQL dansenv.php
. Auparavant,analytics_collect_data
générait une erreur lorsque vous utilisiez le port autre que le port par défaut.
- Les fichiers CSV générés par
analytics_collect_data
sont désormais correctement protégés. Auparavant, ces fichiers n’étaient pas générés avec l’échappement correct, ce qui empêchait la génération de rapports d’inventaire.
Braintree
-
Les acheteurs peuvent désormais utiliser Apple Pay pour passer une commande de produits virtuels. Auparavant, l’application générait cette erreur :
There are no shipping methods available for you right now. Please try again or use an alternative payment method
. -
Le mode de paiement par défaut de PayPal Express Checkout fonctionne désormais comme prévu avec le mode de paiement par carte de crédit Braintree. Auparavant, l’application n’affichait pas le bouton PayPal lorsque le mode de paiement par carte de crédit Braintree était activé.
Lots de produits
- L'application ne définit plus de prix pour les articles enfants de produits groupés à prix fixe dans les devis.
- Le tri par prix fonctionne désormais comme prévu lorsque les produits groupés incluent des produits en rupture de stock. Auparavant, le prix de tri par ordre décroissant n’affichait pas les produits par ordre décroissant de prix.
- L’application applique désormais automatiquement une quantité par défaut de 1 pour les options de produit groupé lorsque de nombreuses options existent. Auparavant, les commerçants devaient attribuer manuellement une quantité par défaut à chaque option.
- La page de création des factures de commande affiche désormais les produits enfants pour les produits groupés comme prévu. GitHub-27350
- L’application attribue désormais des prix de produit corrects lorsque vous commandez à nouveau des produits simples qui font partie d’un lot de produits avec un prix personnalisé. Auparavant, la définition d’un prix personnalisé sur un produit groupé entraînait des prix incorrects sur les produits simples joints lors de la réorganisation. GitHub-30343
- L’appel de POST
/V1/order/{orderId}/ship
pour envoyer une commande contenant un produit groupé marque désormais la commande comme terminée. Auparavant, l’application affichait le message d’erreur suivant :You can't create a shipment without products
. GitHub-9762
Panier et passer en caisse
- L’estimateur de méthode d’expédition fonctionne désormais comme prévu lorsque des attributs d’adresse personnalisés sont présents à l’étape d’expédition du workflow de passage en caisse. Auparavant, l’application affichait le message d’erreur suivant :
{"message":"Error occurred during \"custom_attributes\" processing. A custom attribute is specified with a missing attribute code. Verify the code and try again."}
GitHub-27505
- L’application affiche désormais le message
You have no items in your shopping cart
dans le mini panier comme prévu lorsqu’un acheteur supprime le seul article de son panier. Auparavant, les données du panier n’étaient pas mises à jour pour lescheckout/cart/removeFailed
lorsqu’un acheteur supprimait l’article unique et l’application affichait le message suivant :1 product requires your attention
.
- L’application n’affiche plus les coûts d’expédition d’une commande pour un mode d’expédition non applicable. Auparavant, l’application affichait un prix de 0 pour une méthode d’expédition non applicable dans le workflow de passage en caisse.
- L’adresse de facturation par défaut d’un client est désormais sélectionnée lorsque la case Mes adresses de facturation et d’expédition sont les mêmes du workflow de passage en caisse est décochée.
- Les administrateurs peuvent ajouter un produit à un panier en fonction du SKU de l’administrateur sans être redirigés loin de celui-ci. L’administrateur n’est plus redirigé vers une page de storefront et l’application affiche le produit dans la section Admin des articles de panier comme prévu.
- L’application affiche désormais des messages d’erreur informatifs lorsque vous chargez un fichier CSV contenant plusieurs types d’erreurs lors de l’ajout de produits au panier par SKU. Auparavant, l’application affichait une page vierge et un message d’erreur générique lorsque vous cliquiez sur Choisir un fichier dans Gérer le panier > Ajouter au panier en fonction du SKU.
- Le contenu du panier n’est plus perdu lorsqu’un acheteur passe d’un magasin à un autre dans un autre domaine.
- Les acheteurs peuvent désormais terminer une commande à l’aide de l’option Extraire avec plusieurs adresses lors de l’utilisation de plusieurs méthodes d’expédition. Auparavant, l’application affichait cette erreur :
There has been an error processing your request
. GitHub-30197
- L’application affiche désormais le pays par défaut correct sur la page d’expédition du workflow de passage en caisse lorsque l’acheteur modifie la vue du magasin à partir du panier.
- L’application exclut désormais la session en cours lors du nettoyage des sessions client après la réinitialisation d’un mot de passe après la déconnexion lorsqu’un client invité est connecté. Auparavant, l’application vidait le panier lorsque l’acheteur réinitialisait son mot de passe.
- L’application affiche désormais le pays par défaut correct pour une vue de magasin lorsqu’un acheteur modifie la vue du magasin dans le panier. Auparavant, lorsque l’affichage du magasin était modifié dans le panier, le pays par défaut était incorrect.
- L’ordre dans lequel les autorisations de catalogue sont configurées n’empêche plus les administrateurs disposant des autorisations appropriées d’ajouter des produits au panier. Auparavant, l’application ne vérifiait pas les paramètres de configuration
addToCart
pour le groupe de clients actuel. Par conséquent, lorsqu’un administrateur a tenté d’ajouter un produit au panier, l’application a généré une erreur.
- Les appels redondants vers le point d’entrée
/rest/V1/guest-carts/cart_id/totals-information
sur le panier ont été supprimés, ce qui a amélioré les performances du panier. Auparavant, lorsqu’un acheteur ajoutait un produit au panier, puis affichait le panier, l’application appelait la méthodecollectAddressTotals
plusieurs fois.
- L’application n’affiche plus le champ Région pour un pays dans le workflow de passage en caisse lorsque le paramètre Autoriser à choisir l’état s’il est facultatif pour le pays est désactivé. GitHub-30747
- L’application ne répète plus une adresse d’expédition dans le workflow de passage en caisse de storefront lorsqu’une commande est commandée à nouveau auprès de l’administrateur.
- Correction de problèmes de conception de
AdminMediaGalleryInsertLargeImageFileSizeTest
.
- Tous les nouveaux enregistrements de la table
quote
pour les invités se voient maintenant attribuer une valeur de 1 dans lacustomer_is_guest field
. Auparavant, pour chaque nouvel invité qui ajoutait un produit au panier, l’enregistrement se voyait attribuer un 0 dans le champquote.customer_is_guest
.
- Le bouton Envoyer de la section Révision et paiements du workflow de passage en caisse a été déplacé vers le
<form id="purchaseorder-form"...></form>
interne, ce qui rend possible l’envoi de formulaire implicite sans modifier les JavaScript. GitHub-27925
- L’application n’affiche plus le champ Région dans le workflow de passage en caisse lorsque le paramètre Autoriser à choisir l’état s’il est facultatif pour le pays est désactivé. GitHub-30747
- L’application met désormais correctement à jour le sous-total d’articles d’un panier lorsqu’un acheteur clique sur Mettre à jour le panier lors de la commande avec plusieurs adresses. GitHub-30408
- L’application ne renvoie plus d’exception lorsque des nœuds
config.xml
existent pour des modes de paiement qui ne sont pas actuellement installés. Auparavant, l’application générait une exception lors de l’extraction. GitHub-29555
- L’application effectue désormais le rendu des noms de produits qui contiennent correctement des caractères spéciaux dans le mini panier. GitHub-29075
- L'application définit désormais le bon package de remise pour le taux de table. Auparavant, l’application n’appliquait pas de règle de panier définissant une remise sur le panier lors du calcul du taux de la table. GitHub-30169
Règle de prix du panier
- Les règles de prix du panier sont désormais appliquées comme prévu lorsque les sous-totaux de commande sont calculés sans inclure la taxe. La nouvelle option
Subtotal (Incl. Tax)
a été ajoutée en tant que condition de règle de prix de panier.
- L’application d’une règle de prix avec un coupon à l’aide de GraphQL fonctionne désormais comme prévu lorsque l’action Remise de montant fixe pour l’ensemble du panier est utilisée.
Catalogue
- L’application affiche désormais tous les produits réactivés dans le storefront comme prévu. Auparavant, lorsqu’un produit était désactivé puis réactivé, l’application n’affichait pas le produit tant que le cache de page du vernis n’était pas effacé ou que le magasin n’était pas réindexé, car le cache de page n’était pas invalidé après la réactivation d’un produit.
- La réindexation partielle des catalogues volumineux fonctionne désormais comme prévu. Auparavant, les produits disparaissaient de manière aléatoire de la page de catégorie du storefront lors de la réindexation avec l’indexeur partiel
catalogsearch_fulltext
.
- Les acheteurs peuvent désormais commander à nouveau une commande facturée d’un produit avec des options personnalisables comme prévu. Auparavant, l’application générait cette erreur lorsqu’un acheteur tentait de commander à nouveau :
{"0":"The product's required option(s) weren't entered. Make sure the options are entered and try again
.
- Vous pouvez maintenant définir le paramètre Disposition sur la page de conception de catégorie sur Aucune mise à jour de la disposition. Auparavant, l’application revenait à Catégorie - Pleine largeur lorsque vous affectiez la valeur Aucune mise à jour de disposition.
- Les problèmes liés à l’ordre de tri des produits sur le storefront ont été résolus. Auparavant, lorsque l’application indexait les prix des produits, elle définissait parfois la
min_price
et lamax_price
d’un produit configurable sur 0 dans le tableaucatalog_product_index_price
, ce qui affectait l’ordre de tri des prix sur le storefront.
- L’application met désormais à jour les attributs libellés
Product Type
. Auparavant, comme l’attributproduct_type
était réservé dans le code, l’application affichait ce message lorsque vous tentiez de mettre à jour un attributProduct Type
:An attribute with the same code (product_type) already exists.
- L’application ne modifie plus la position d’une vidéo chargée dans la section Images et vidéos de la page des détails du produit lorsque vous enregistrez le produit. Auparavant, la nouvelle position de l’image se voyait attribuer une valeur d’index (position dans la liste) et, si les positions des images existantes n’étaient pas alignées avec leurs valeurs d’index, la nouvelle image était placée à tort dans la liste.
- La fonctionnalité Ajouter au panier fonctionne désormais comme prévu chaque fois que vous pouvez cliquer sur le bouton Ajouter au panier. Auparavant, si vous cliquiez plusieurs fois sur ce bouton en attendant le chargement d’une page produit, l’application générait l’erreur suivante :
Invalid Form Key. Please refresh the page
.
- L’application ne vide plus le cache de catégorie lorsqu’un commerçant ajoute ou supprime des produits désactivés d’une catégorie ou en ajoute. Auparavant, l’application vidait le cache pour les catégories associées malgré le statut du produit. L’affectation de catégories était également annulée lors de l’enregistrement d’une catégorie, ce qui entraînait le vidage du cache de catégorie.
- Le filtrage des produits du catalogue dans la portée Toutes les vues de la boutique fonctionne désormais correctement. Auparavant, les produits dont l’état était soit
Enabled
soitDisabled
s’affichaient dans la grille lors du filtrage des produits activés ou désactivés uniquement.
- La réindexation partielle n’entraîne plus la perte de produits et de catégories vides.
- La réorganisation fonctionne désormais comme prévu lorsque l’option Utiliser le calendrier JavaScript est activée (Magasins > Configuration > Catalogue > Options personnalisées de date et d’heure). Auparavant, lorsque ce paramètre était activé, l’application affichait cette erreur lorsque vous tentiez de réorganiser la commande précédemment passée auprès de l’administrateur :
Please specify date required option(s)
.
- L’application affiche désormais la devise correcte dans les déploiements multisites lors de la création du prix de niveau.
- Les attributs personnalisés de l’image du produit sont désormais correctement placés dans une séquence d’échappement. L’attribut
data-src
a la même valeur quesrc
attribut, comme prévu. Auparavant, les symboles spéciaux des URL étaient placés dans une séquence d’échappement.
- La mise à jour d’une catégorie par le biais de l’API REST ne désactive plus le paramètre Utiliser la valeur par défaut dans les attributs Activer la catégorie, Inclure dans le menu et Clé d’URL.
- L’activation des autorisations de catégorie par l’administrateur n’entraîne plus l’échec de la mise en cache des pages de catégorie dans le cache de pages complet lors de visites répétées sur la page de catégorie. Auparavant, les visites ultérieures de la page n’étaient pas diffusées à partir du cache comme prévu, et les performances se dégradaient.
- L’enregistrement d’une catégorie vide uniquement le cache de bloc associé à cette catégorie. Auparavant, l’application vidait le cache de tous les blocs de catégorie.
- Le prix d’une option personnalisée avec un prix en pourcentage est désormais converti comme prévu dans la devise de base du magasin actif dans les déploiements multi-magasins. Auparavant, le prix d’une option personnalisée avec un pourcentage de prix était converti de manière incorrecte. GitHub-26432
- L’application recrée désormais les images avec succès, et ces images sont visibles dans l’administration comme prévu chaque fois qu’un commerçant envoie des données de galerie multimédia à l’aide de
rest/all/V1/products
POST. Auparavant, l’application recréait les images, mais les supprimait lorsqu’un commerçant envoyait des données de galerie de médias via POSTrest/all/V1/products
si les images étaient supprimées danspub/media
, mais qu’il y avait encore des enregistrements dans les médias qui contenaient toujours des enregistrements pour ces images. Par conséquent, le commerçant n’a vu que les espaces réservés dans l’administrateur, car les images ont été créées et supprimées pendant le processus de mise à jour.
- Les enregistrements sont désormais supprimés comme prévu lorsque vous avez annulé l’affectation d’un élément d’un site web. Auparavant, les images étaient dupliquées lors de l’exécution de POST
rest/all/V1/products
.
- L’appel
/V1/categories/{categoryId}/products
renvoie désormais une liste de tous les produits appartenant à la catégorie parente comme prévu. Auparavant, si un produit appartenait à plusieurs sous-catégories de la catégorie parent, l’application générait ce type d’erreur :Internal Error. Details are available in the application log file. Report ID: webapi-5f8579e37db54
. GitHub-30461
- Le point d’entrée REST
/V1/products/attributes/:attributeCode/options
prend désormais en charge la mise à jour d’une option d’attribut existante.
- Le prix d’une option personnalisée avec un prix en pourcentage est désormais converti comme prévu dans la devise de base du magasin actif dans les déploiements multi-magasins. Auparavant, le prix d’une option personnalisée avec un pourcentage de prix était converti de manière incorrecte. GitHub-26432
- Les commerçants peuvent désormais enregistrer un nouvel attribut lors de la création du produit. Auparavant, l’application n’enregistrait pas l’attribut et redirigeait le commerçant vers la page d’accueil des vues du magasin lorsqu’il tentait d’enregistrer l’attribut. GitHub-30362
- Les grilles de produits des pages Ventes > Commandes et Catalogue > Produits répertorient désormais tous les magasins pertinents, et pas seulement le magasin le plus récemment créé. GitHub-29267
- Le référentiel de produit utilise désormais
store_id
lorsqu’il est disponible pour enregistrer les valeurs d’attribut d’un produit existant. Auparavant, la classe de référentiel de produit remplaçait l’ID de magasin de produits et lui affectait toujours l’ID de magasin par défaut. GitHub-29933
Règle de catalogue
- Les règles de prix de catalogue fonctionnent désormais comme prévu avec les options personnalisées sur les pages de détails du produit. Auparavant, les prix des produits sur cette page ne reflétaient pas les règles de prix de catalogue applicables. GitHub-22856
- Les caches de produits et de catalogues expirent désormais comme prévu. Auparavant, les caches expiraient tous les jours, car
сron
exécutions la tâchecatalogrule_apply_all
une fois par jour, ce qui réindexait toutes les règles de catalogue et tous les indexeurs dépendants, et effaçait le cache pour tous les produits et catégories.
Nettoyage
Nettoyage des fautes de frappe et de la grammaire
- Le titre de la page Echec de la commande a été révisé pour en garantir l’exactitude. Auparavant, cette page s’intitulait : Nous avons reçu votre commande !. GitHub-29416
- Suppression des espaces inutiles dans
app/code/Magento/Contact/view/frontend/templates/form.phtml
. GitHub-29779
- Correction d'une faute de frappe dans le message d'aide de la sous-commande
bin/magento/setup:config:set
. GitHub-28802
- Correction de la grammaire dans le fichier PHPDoc pour le fichier
framework/Registry.php
. GitHub-29661
- Suppression des espaces superflus dans
app/code/Magento/Catalog/Helper/Product/View.php
. GitHub-30601
- Correction d’une faute de frappe dans le nom d’une fonction dans
app/code/Magento/Ui/view/base/web/js/form/element/ui-select.js
. GitHub-29987
- Correction de la pluralisation de « article » dans le mini panier et le résumé de l’ordre de passage en caisse. GitHub-29920
- Suppression des espaces blancs dans les éléments intégrés dans les filtres de navigation superposés aux balises. GitHub-30448
rl
a été corrigé enurl
dans\Magento\Framework\Filter\Template\Tokenizer\Parameter
. GitHub-29185
Nettoyage du code
- Une balise
<br>
HTML superflue a été supprimée de la zone Message de vérification des données de la page Système > Importer.
ChangeQuoteControl
a été refactorisé. GitHub-29673
AccessChangeQuoteControl
et ses tests unitaires ont été restructurés. GitHub-29672
- Correction du style de code de la déclaration de type de retour dans
app/code/Magento/Captcha/CustomerData/Captcha.php
. GitHub-29712
- Correction de la position de la liste de boutons sur la page Nouvel attribut .
- Ajout de la classe de bloc appropriée pour l’exemple de référence de
viewModel
front-end pour la classe\Magento\Framework\View\Element\Template
. GitHub-30450
- Un jeu de champs redondant dans le formulaire de règle de vente a été supprimé. GitHub-29599
- Le code inutile a été supprimé du modèle de
hierarchy/edit.phtml
.
- Commentaire PHPdoc corrigé dans
app/code/Magento/CatalogImportExport/Model/Export/Product.php
. GitHub-30833
- L'annotation docblock pour le message
PublisherInterface
a été corrigée. GitHub-30190
- Arguments corrigés dans la méthode
getStatusByState
. GitHub-30173
- Description de la méthode corrigée dans
app/code/Magento/Quote/Model/Cart/Totals/ItemConverter.php
. GitHub-30125
- Suppression des affectations de variables redondantes sur la même ligne dans plusieurs fichiers. GitHub-30133
- Modification de la
@param string $attribute
en@param AbstractAttribute|string[]|string $attribute
dansEntityAbstract.php
. GitHub-30191
- Les balises non valides (par exemple,
@package
et@subpackage
) ont été supprimées des docblocs dans toute la base de code. GitHub-30061
- Les paramètres inutilisés dans le concept de la classe
AdvancedPricing
ont été supprimés. GitHub-29531
Produits configurables
- Le filtrage par prix des produits configurables en rupture de stock affiche désormais les résultats dans la plage de prix appropriée.
- Un produit virtuel ne change plus de type lorsque son statut passe de activé à désactivé (ou inversement). Auparavant, l’application modifiait le type d’un produit de virtuel à simple lorsque son état changeait.
- La méthode
getValue()
ne déclenche plus d’erreur fatale lors de la mise à jour des paniers.
- Les produits configurables disponibles sur plusieurs sites web n’affichent plus de produits enfants simples qui ne sont pas affectés au site web spécifique. GitHub-28291
- Les pages de produits Storefront affichent désormais les prix de niveau sans taxe comme prévu. GitHub-12225
- Les prix PDSF des produits configurables sont maintenant correctement convertis dans la devise choisie. Auparavant, l’application affichait les prix dans la mauvaise devise et générait cette erreur :
Call to a member function setAppliedTaxes() on null
. GitHub-26526, GitHub-29603
- Les commerçants peuvent désormais enregistrer un libellé d’option d’attribut d’échantillon de texte spécifique au magasin avec une valeur de 0 (zéro). Auparavant, une valeur de 0 était remplacée par la valeur de l’option Libellé d’administration . GitHub-30073
- Les paramètres inutilisés dans le concept de la classe
AdvancedPricing
ont été supprimés. GitHub-29531
cron
- La liste des messages système reflète désormais précisément les mises à jour des produits après l’exécution d’
cron
et après que l’application a mis à jour les produits comme prévu.
- Un index basé sur
schedule_id
etstatus
a été ajouté à la tablecron_schedule
. GitHub-29601
Attributs de client personnalisés
- L’application affiche désormais les attributs du client de type
file
sur la page Informations du compte après la création. Auparavant, lorsque vous tentiez d’enregistrer un nouvel attribut de ce type, l’application affichait les erreurs suivantes :The "newAttribute" attribute value is empty. Set the attribute and try again
etValidation is failed
.
- L’application affiche désormais correctement les valeurs d’attribut du client personnalisé multiligne. Auparavant, toutes les données n’étaient pas affichées.
- L’application avertit désormais les acheteurs lorsqu’ils saisissent une date de naissance non valide lors de la création d’un compte. Auparavant, le programme de validation ignorait les paramètres régionaux et les acheteurs étaient redirigés vers la page Créer un compte client avec une erreur de date non valide.
- Les attributs d’adresse personnalisés sont désormais inclus comme prévu dans l’étape Paiement du workflow de passage en caisse.
- Les attributs multi-sélection d’adresse personnalisée s’affichent désormais correctement lors du passage en caisse des invités et sur la page Admin et Mes détails de commande de compte .
- Les attributs d’adresse personnalisés s’affichent désormais correctement dans la zone Mon compte et dans la page Détails de la commande de l’administrateur.
- Vous pouvez désormais supprimer un zéro au début dans un attribut client personnalisé lorsque
Input Type
est défini surText
etInput Validation
surNumeric Only
.
- L’application exporte désormais correctement les données client qui incluent une valeur d’attribut de genre personnalisée.
- L’application enregistre désormais les valeurs d’attribut client personnalisées pour les utilisateurs B2B comme prévu. Auparavant, les attributs personnalisés créés pour ajouter ou modifier des utilisateurs de l’entreprise n’étaient pas liés au formulaire Ajouter un nouvel utilisateur et, par conséquent, les valeurs d’attribut n’étaient pas enregistrées. En outre, l’attribut de date personnalisé a été dérivé de la base de données sous la forme d’une chaîne et n’a pas été converti au format de date approprié pour l’affichage du storefront.
Client
- Le widget Calendrier du champ de date de naissance de la page du compte client de storefront utilise désormais les paramètres régionaux du magasin désigné.
- L’application n’enregistre plus les entrées en double d’une adresse de client lors du passage en caisse d’une nouvelle commande d’un client existant auprès de l’administrateur.
- La suppression de toutes les adresses de plusieurs clients de l’administration supprime désormais toutes les adresses de la liste des adresses des clients et supprime les adresses de facturation et d’expédition par défaut. Auparavant, l’application supprimait l’adresse de la liste des adresses du client, mais ne supprimait pas les adresses de facturation et d’expédition par défaut.
- L’onglet Admin des adresses client affiche désormais correctement le nombre d’adresses une fois qu’un administrateur a effectué une suppression en masse d’adresses. Auparavant, l’application incluait les adresses supprimées dans son nombre.
- Le format DateTime du champ Date de naissance de la page d’enregistrement des clients a été corrigé. Auparavant, le zéro initial qui précédait un jour à un seul chiffre était manquant.
- La validation du format de date pour le champ Date de naissance fonctionne désormais avant que l’acheteur ne clique sur le bouton Créer un compte. Auparavant, un acheteur pouvait saisir une valeur dans un format non valide et, lorsqu’il cliquait sur le bouton Créer un compte, il était redirigé vers la page Créer un compte client avec une erreur de date non valide.
- L’application ne renvoie plus d’erreur fatale lorsqu’un administrateur tente d’enregistrer un nouveau compte client contenant des données non valides pour un attribut.
- L’application ne renvoie plus d’erreur 400 lorsqu’un client ou une cliente tente d’accéder à son panier dans un déploiement où Magento Shipping était précédemment installé et où le thème Luma par défaut est actuellement déployé. Auparavant, l’application ne filtrait pas les noms de section créés par des modules installés/activés précédemment qui n’étaient pas pris en charge dans l’administration avant d’envoyer les requêtes au serveur, ce qui générait des erreurs.
- L’application affiche désormais un message comme prévu lorsqu’un acheteur crée un compte invité lorsque le paramètre Exiger une confirmation par e-mail est activé et
Magento\Customer\Controller\Account\CreatePost
a été remplacé. Auparavant, l’application ne permettait pas ce type de personnalisation du processus d’enregistrement des utilisateurs. Dans ces conditions, le statut de confirmation par e-mail d’un utilisateur était considéré comme terminé, le nouvel utilisateur était automatiquement connecté et aucun message d’erreur ne s’affichait.
- L'application affecte désormais un acheteur au groupe de clients approprié lorsque l'acheteur passe une commande avec un groupe de clients non par défaut dans un magasin où l'option Activer l'affectation automatique au groupe de clients est activée. GitHub-26976
- La grille Clients administrateurs est désormais disponible comme prévu lorsque le site web autre que celui par défaut est supprimé dans un déploiement multisite lorsque les index sont définis sur Mettre à jour selon le calendrier. Auparavant, l’application n’affichait pas la grille et générait cette erreur :
[2020-12-09 11:31:54] report.CRITICAL: The website with id 2 that was requested wasn't found. Verify the website and try again. \{"exception":"[object] (Magento\\Framework\\Exception\\NoSuchEntityException(code: 0): The website with id 2 that was requested wasn't found. Verify the website and try again. at /var/www/html/magento24ee/vendor/magento/module-store/Model/WebsiteRepository.php:110)"}
dotdigital
-
La gestion des erreurs a été améliorée lors de la récupération de listes de programmes de dotdigital Engagement Cloud.
-
La valeur synchronisée dans la colonne du nom du magasin lors de la synchronisation des invités correspond désormais au nom d’affichage du magasin comme prévu. Auparavant, le nom du site web était inclus dans cette colonne.
-
Ajout d’une vérification de la baie avant de passer en revue les automatisations de statut des commandes après l’enregistrement d’une commande.
-
Correction de problèmes liés aux mises à niveau du compositeur qui étaient le résultat de la dépendance du module dotdigital sur
magento/module-authorization
.
Téléchargeable
- L'application ne répertorie plus un produit téléchargeable dans l'onglet Mes produits téléchargeables une fois que le produit téléchargeable a été partiellement remboursé. GitHub-28388
Bloc dynamique (anciennement bannière)
- L’application n’affiche plus de bloc dynamique sur le storefront après la suppression du segment client associé au bloc.
- L’application prend désormais correctement en compte les règles de prix de catalogue pour déterminer s’il faut afficher un bloc dynamique.
VAE
- Les attributs personnalisés qui utilisent
\Magento\Eav\Model\Entity\Attribute\Backend\ArrayBackend
utilisent désormais des valeurs par défaut si aucune valeur n’est fournie dans la payload lorsqu’un produit est créé par appel API.
\Magento\Config\Model\Config\Source\Email\Template::toOptionArray
ne renvoie plus d’erreur lorsquesetPath()
n’est pas appelé avant latoOptionArray()
. GitHub-29315
- L’application convertit désormais correctement du texte brut en HTML lorsque vous cliquez sur Renvoyer la version HTML lors du chargement d’un modèle d’e-mail.
- Les e-mails envoyés aux clients qui contiennent des factures partielles incluent désormais des sous-totaux d’articles précis. Auparavant, le sous-total dans cet e-mail était le total de la quantité commandée, et non le montant total de la quantité facturée.
- L’application envoie désormais des rappels par e-mail à tous les clients concernés avec des adresses e-mail valides. Auparavant, l’application arrêtait l’envoi d’e-mails de rappel aux clients après avoir rencontré une adresse non valide.
- L’envoi d’e-mails de vente en mode asynchrone fonctionne désormais comme prévu après la suppression d’un produit d’un catalogue. Auparavant, l’envoi asynchrone d’e-mails était bloqué et l’application affichait cette erreur :
main.ERROR: Cron Job sales_send_order_invoice_emails has an error: Call to a member function getData() on null. Statistics: {"sum":0,"count":1,"realmem":0,"emalloc":0,"realmem_start":73400320,"emalloc_start":37177640} [] []main.CRITICAL: Error when running a cron job {"exception":"[object] (RuntimeException(code: 0): Error when running a cron job at /var/www/html/vendor/magento/module-cron/Observer/ProcessCronQueueObserver.php:327, Error(code: 0): Call to a member function getData() on null at /var/www/html/vendor/magento/module-catalog/Helper/Image.php:502)"} []
. GitHub-26878
- L’application ne copie plus l’e-mail de confirmation de commande d’un client lorsque
sales_email/order_comment/enabled
est désactivé et quesales_email/order_comment/copy_method
est défini surbcc
. GitHub-29915
Frameworks
- Les groupes de filtres personnalisés sont désormais correctement appliqués lors de la recherche de clients. Auparavant, la fonction
afterSearch
n’appliquait pas les filtres OU comme prévu. GitHub-24576
- Les images sur la page d’accueil d’un magasin sont désormais rendues correctement. Auparavant, la source de la page HTML était corrompue, car les trois barres obliques consécutives dans le code base64 de l’image étaient interprétées à tort comme un commentaire.
- Le sélecteur de date fonctionne désormais correctement lors du filtrage des commandes de la liste Commandes d’administration dans les magasins à l’aide des paramètres régionaux arabes (
ar_SA - Saudi Arabia
).
- Le sélecteur de date affiche désormais la date correcte après qu’un commerçant a enregistré une règle de prix de panier dans un déploiement. GitHub-30382
- L’application représente désormais correctement le regroupement des milliers en arabe et les symboles séparateurs décimaux en arabe. Auparavant, les symboles arabes étaient rognés. GitHub-26676
- L’application supprime désormais les sessions de base de données expirées de la table de
session
de base de données comme prévu.
Correctifs généraux
- Vous pouvez désormais configurer un gestionnaire de sessions natif différent du gestionnaire défini dans
php.ini
. Auparavant,SessionManager
ne définissait pas le cache mémoire commesave_handler
, mais utilisait plutôt lesession_handler
du fichier. l’application a généré cette erreur :main.CRITICAL: Warning: SessionHandler::read(): open(127.0.0.1:11211/sess_0imeeaqmnvemdg4e3h57tat0ik, O_RDWR) failed: No such file or directory (2) in../vendor/magento/framework/Session/SaveHandler/Native.php on line 22 {"exception":"[object] (Exception(code: 0): Warning: SessionHandler::read(): open(127.0.0.1:11211/sess_0imeeaqmnvemdg4e3h57tat0ik, O_RDWR) failed: No such file or directory (2) in ../vendor/magento/framework/Session/SaveHandler/Native.php on line 22 at ../vendor/magento/framework/App/ErrorHandler.php:61)"}
. GitHub-24717
-
Les améliorations suivantes ont été apportées aux modules
LoginAsCustomer
:-
Remplacement du plug-in
around
parafter
-
Suppression du code redondant
-
A remplacé
(bool)->getValue()
parisSetFlag
. GitHub-29689
-
- Le rechargement de toutes les sections de données client par caractère générique (*) n’entraîne plus l’
customer/section/load
d’une erreur 400 par les requêtes. GitHub-28154
- L’application transmet désormais les exceptions qui se produisent lorsqu’une mise en page est rendue en mode de production à
var/report
. GitHub-29606
- L’application ne redirige plus les clients vers la page d’accueil lors du changement de la vue du magasin. La méthode
\Magento\VersionsCmsUrlRewrite\Model\StoreSwitcher::switch()
redirige désormais les acheteurs vers la page d’accueil uniquement lorsqu’$urlPath
est introuvable pour la deuxième vue de magasin.
- L’application renvoie désormais une exception lorsqu’un client qui n’existe pas demande une réinitialisation du mot de passe. GitHub-26288
- L’application affiche désormais un message d’erreur informatif lorsqu’un administrateur tente d’enregistrer un compte client contenant une valeur non valide pour un attribut du client lors du chargement d’un fichier contenant cette valeur d’attribut. Auparavant, l’application générait une erreur fatale. GitHub-30295
- L’application applique désormais le paramètre de configuration Logo pour l’affichage d’impression HTML aux PDF de facture de storefront comme prévu. GitHub-24730
static::
a été remplacé parself::
dans toute la base de code pour l'accès aux constantes privées. GitHub-30781
- L’application ouvre désormais la page Nouvel attribut comme prévu lorsqu’un commerçant clique deux fois sur le bouton Créer un nouvel attribut lors de la création du produit. Auparavant, l’application affichait une page vide et générait une erreur. GitHub-30361
- L’application n’affiche plus le message
The coupon code has been accepted
après la suppression d’un coupon. GitHub-30255
- Les administrateurs peuvent désormais affecter des widgets à des catégories spécifiques. GitHub-30009
- Le sélecteur d’attributs
input[type=datetime]
a été remplacé par un sélecteur de type entrée moins spécifique. GitHub-30064
- L’application affiche désormais les valeurs spécifiques au magasin associées aux attributs de catégorie personnalisés, comme prévu. GitHub-13440
- L’application affiche désormais une invite demandant si le groupe de clients doit être modifié lorsque vous cliquez sur le bouton Valider le numéro de TVA sur la page de création de la commande lorsque l’adresse du magasin et la destination d’expédition appartiennent à des pays de l’UE différents. GitHub-29652
- La classe
\Magento\Catalog\Model\ImageUploader
a été refactorisée pour utiliser la nouvelle méthodemoveFileFromTmp
. GitHub-29598
- L’application affiche désormais un message d’erreur plus informatif lorsqu’un commerçant tente de créer un attribut de produit avec des codes
product_type
ettype_id
pour être plus descriptif. GitHub-28479
- Correction de la logique de validation des champs Durée de vie du jeton client (heures) et Durée de vie du jeton d’administration (heures) de la page Admin Magasins > Configurations > Services > OAuth. GitHub-29502
- L’application analyse désormais correctement le texte contenant des
}}
dans le champ de contenu du widget. GitHub-12087
- Vous pouvez maintenant supprimer un filtre de la page Catégories de produits. Auparavant, lorsque vous tentiez de supprimer le filtre, l’application ne vous autorisait pas à supprimer le filtre et affichait cette erreur :
Something went wrong
. GitHub-8538
Magento\Framework\MessageQueue\ConfigInterface
peut désormais être instancié lorsque le module facultatifMagento_MessageQueue
est désactivé. Auparavant, l’application générait cette erreur :PHP Fatal error: Uncaught Error: Cannot instantiate interface Magento\Framework\MessageQueue\ConfigInterface in /var/www/magento2/magento2/lib/internal/Magento/Framework/ObjectManager/Factory/AbstractFactory.php:121
. GitHub-26080
- La logique qui détermine à quel moment l’application peut récupérer la valeur de l’e-mail à partir du stockage persistant a été améliorée. Auparavant, l’application affichait les champs de mot de passe renseignés sur la page de passage en caisse lorsqu’un utilisateur non enregistré revenait à la page de passage en caisse après avoir d’abord rempli le champ d’e-mail. GitHub-26903
- Un attribut
aclResource
manquant a été ajouté au bloc de barre d’outilsAdminNotification
d’en-tête Admin. Auparavant, l’entrée de la barre d’outils de notification de l’administrateur était visible même lorsque l’utilisateur administrateur ne dispose pas des autorisations de ressources du rôle pour la voir. GitHub-29067
- Les fonctions
framework/database/select
where
gèrent désormais correctement lestype
. GitHub-29590
- L’utilisation inefficace des
array_merge
dans les boucles a été améliorée dans toute la base de code, ce qui a amélioré les performances à plusieurs endroits, y compris dans le processus de déploiement de contenu statique. GitHub-30183
- La durée de vie de session d’administrateur par défaut a été déplacée du module de chiffrement vers le module de sécurité. GitHub-30859
- L’application recherche désormais les constantes privées dans une classe et affiche un avertissement si des appels de
static::
y sont associés. Auparavant, l’application générait cette erreur :Undefined class constant
.
- Ajout de règles aux
editorconfig
pour la prise en charge de la mise en retrait des fichiers JSON et YAML à deux espaces. GitHub-30066, GitHub-30063
- La classe
FlushCacheByTags
a été mise à jour afin d’utiliser les modules externes suivants au lieu des modules externes périphériques. GitHub-29558
MessageValidator
n’échoue plus sur les tableaux de hachage qui n’incluent pas d’élément0
. GitHub-30563
- Le code du fichier
checkout_index_index.xml
a été amélioré par la suppression desortOrder
des composantsmessages
,authentication
,progressBar
,estimation
etsidebar checkout
. GitHub-30550
- Le contenu dans
calc
est désormais placé dans une séquence d’échappement, ce qui entraîne des valeurs decalc
correctes dans le fichier de sortie CSS. Auparavant, l’application renvoyait une valeur decalc
incorrecte. GitHub-30542
- Le générateur de réécriture d’URL définit désormais les
url_key
,url_path
etstore_id
de l’objet de catégorie sur les valeurs de magasin par défaut lors de l’enregistrement des réécritures d’URL de catégorie pour la portée globale. Auparavant, il enregistraiturl_key
,url_path
etstore_id
avec les valeurs du dernier ID de magasin traité. GitHub-29585
\Magento\Widget\Controller\Adminhtml\Widget\Instance\Validate
reconnaît désormais une valeur de résultat d’expression comme un message d’erreur et la génère pour l’utilisateur ou l’utilisatrice lors de la validation du widget. GitHub-27397
- La liste codée en dur des attributs de catégorie dans
Magento\Catalog\Model\Category\DataProvider::getFieldsMap()
a été remplacée par une liste des attributs générés à partir du cache. GitHub-13440
- Le hachage redondant de
req.http.host/client.ip
a été supprimé et le hachage est géré par le VCL intégré de Varnish. GitHub-29988
- Ajout d’un rappel d’échec au téléchargeur de fichier
Magento_Ui
. GitHub-29557
- Correction d’une incohérence
acl.xml
qui se produisait lorsqueMagento_LoginAsCustomerAssistance
était activé mais queMagento_LoginAsCustomerAdminUi
ouMagento_LoginAsCustomerLog
étaient désactivés. Auparavant, lorsque l’administrateur disposant de ces informations d’identification tentait de se connecter à l’administrateur, l’application affichait une page vierge et générait cette erreur lorsque :Exception #0 (LogicException): Could not create an acl object: Invalid Document Element 'resource': The attribute 'title' is required but missing. Line: 13
. GitHub-30680
- L’application ne renvoie plus d’erreur de
Undefined class constant
lorsqu’uneInterceptor
est générée lors de la création du plug-in. GitHub-28981, GitHub-29879
- L’application gère désormais correctement la messagerie et la journalisation pour les opérations en bloc asynchrones. Auparavant, bien que les produits aient été mis à jour, les tableaux
magento_operation
etqueue_message_status
n’étaient pas correctement mis à jour et les messages système étaient incorrects. GitHub-29718
- Un acheteur est désormais redirigé vers la page Définir un nouveau mot de passe comme prévu lorsqu’il clique sur Définir un nouveau mot de passe dans l’e-mail Réinitialiser le mot de passe lorsque Exiger la confirmation des e-mails est activé pour le magasin. Auparavant, l’acheteur était redirigé vers le bouton Mot de passe oublié de la page de connexion. GitHub-27954
- Correction de l’erreur de conversion d’un tableau en chaîne lors de l’enregistrement de la configuration du système de lignes avec les valeurs par défaut. GitHub-30314
- Vous pouvez désormais définir des arguments pour les files d’attente de messages. GitHub-30216
- Le collecteur de fichiers de base respecte désormais
AppState->emulateAreaCode()
. GitHub-39656
- La nouvelle classe
BlockByIdentifier
prend en charge la récupération d’un bloc de mise en page en fonction de l’identifiant du bloc CMS. Par conséquent, lorsqu’un bloc CMS est supprimé du cache, l’application vide également le cache du bloc de disposition. GitHub-28309
- Correction des problèmes de conversion des arguments numériques dans les files d’attente. Auparavant, lorsque vous déclariez une file d’attente avec des arguments de
type
numérique dans laqueue_topology.xml
, la valeur de l’argument était convertie en chaîne. GitHub-29615
Cartes cadeaux
- Les e-mails contenant un code de carte cadeau ne sont désormais envoyés qu’une fois la commande enregistrée lorsque le paramètre de configuration Créer un compte de carte cadeau lors de la commande d’un article de commande est activé. Auparavant, un code de carte cadeau était réutilisé et envoyé à différents clients si un compte de carte cadeau était généré lors de la commande des articles, mais qu’une exception se produisait après l’envoi de la carte cadeau virtuelle.
- L’application ne duplique plus les commandes par carte cadeau. Auparavant, lorsqu’un acheteur commandait une carte cadeau, l’application fournissait deux codes cadeau. Cela est dû au fait que
cron
tâches appelées\Magento\GiftCard\Observer\GenerateGiftCardAccountsInvoice::execute()
, et cette méthode ne vérifiait pas si les codes de carte cadeau avaient déjà été générés lors de la création de la facture.
- Les commerçants peuvent désormais annuler l’affectation des produits des catégories comme prévu. Auparavant, l’application générait une erreur similaire à cette erreur :
Could not save product "4" with position 0 to category 3
.
- Ajout de la prise en charge des
root
liés par des symboles dans les pages d’erreurs et le mode de maintenance. Auparavant, si lesroot
ou lesmagento/pub
étaient liés par un lien symbolique dans un autre répertoire, le processeur d’erreurs (Magento\Framework\Error\Processor
) ne générait pas une URL de fichier d’affichage correcte. GitHub-30296
- Tableau de
order_data
manquant ajouté aux classesEmailSender
. Cela permet d’aligner ces classes sur la recommandation de Magento d’utiliser des variables scalaires au lieu d’objets dans les modèles d’e-mail. GitHub-29604
Google Tag Manager
- La fonction
productClick
du gestionnaire de balises Google fonctionne désormais comme prévu. Auparavant,productClick
n’était pas déclenché sur les produits des pages de liste et le Gestionnaire de balises Google ne pouvait pas capturer cet événement.
- Les options de produit configurables du Gestionnaire de balises de Google sont désormais mises à jour comme prévu dans la couche de données après la modification des options de produit configurables dans le panier. Auparavant, les données de l’événement
removeFromCart
étaient incorrectement réécrites lorsque l’option de produit était modifiée et la quantité restait la même.
GraphQL
- La requête
urlResolver
gère désormais correctement les paramètres de requête.
- La requête
urlResolver
ne renvoie plus la valeur NULL lorsqu’un nœud CMS et une page personnalisés sont spécifiés comme entrée. GitHub-30474
- La requête
category
ne renvoie plus les catégories enfants d’une catégorie parent qui a été désactivée. GitHub-30468
- La requête
category
renvoie désormais le chemin correct d’une image de catégorie lorsque les réécritures d’URL sont désactivées.
- La mutation
resetPassword
renvoie désormais un message plus informatif lorsqu’une erreur se produit. GitHub-30179
- Les résultats mis en cache de la requête
products
sont invalidés comme prévu lorsque les positions du produit changent. GitHub-30467
- La requête
products
renvoie désormais les résultats attendus lorsque le filtrecategory_id
est spécifié avec le mot-cléin
. GitHub-30349
- Les requêtes
categories
etcategoryList
prennent désormais en compte la disponibilité des catégories en fonction de la configuration des autorisations de catégorie et de l’ID de catégorie parent. GitHub-29880, GitHub-30624
- La mutation
updateProductsInWishList
valide désormais correctement les éléments de liste de souhaits. GitHub-30467
-
Obsolescence de plusieurs attributs dans les
ProductInterface
etCategoryInterface
pour empêcher leur utilisation sur le storefront. GitHub-30625 -
Les prix sont désormais masqués dans les résultats de la requête de produits lorsque les autorisations de catégorie sont définies pour les masquer. GitHub-29926
- Vous pouvez désormais utiliser la mutation
addProductsToWishList
pour ajouter à une liste de souhaits un lot de produits avec une quantité définie par l’utilisateur.
- Les mutations qui ajoutent des produits à un panier respectent désormais les autorisations de catalogue. GitHub-30179
- Le temps de réponse de GraphQL pour les opérations d’ajout au panier a été amélioré.
- La requête
products
renvoie désormais les valeurs de prix de niveau attendues. GitHub-29168
- Suppression d’un
getMappedNums
redondant d’une boucle danslib/internal/Magento/Framework/GraphQl/Query/EnumLookup.php
. GitHub-30031
- La requête
products
ne renvoie plus d’erreur lorsque le produit interrogé contient un produit associé désactivé. GitHub-28892
- La requête
cart
renvoie désormais les prix qui ont été convertis dans la devise correcte (la devise d’affichage par défaut). Auparavant, la requête renvoyait la valeur du prix de l’article dans la devise de base et le code de devise était renvoyé en tant que devise d’affichage par défaut.
- GraphQL respecte désormais les autorisations de catalogue. L’application limite les articles renvoyés pour une requête
products
en fonction du groupe de clients de l’acheteur.
- Ajout de l’attribut
customizable_option
à plusieurs types de données qui implémentent leCartItemInterface
.
- Ajout d’attributs pour la requête
storeConfig
afin de renvoyer des informations sur le magasin, le groupe de magasins et le site web.
- Restauration de l’attribut
SelectedCustomizableOption.type
. En outre, l’attributcustomizable_options
dans différentes implémentations de laCartItemInterface
est désormais non nul.
- La fonctionnalité de recherche de la requête
products
ne renvoie plus les éléments dans lesquels les autorisations de catégorie ont été activées.
- La requête
products
renvoie la devise correcte pour les vues de magasin comportant plusieurs devises.
- Les libellés des filtres de requête
products
renvoient désormais les valeurs traduites, le cas échéant pour les vues de magasin autres que celles par défaut.
- Fixez les montants en devise du magasin sur les cartes-cadeaux du panier.
- Ajout du type de données
ConfigurableProductOptionsSelection
, qui contient des métadonnées correspondant aux options configurables sélectionnables pour un produit. Utilisez cet objet dans une requêteproducts
pour réduire le nombre d’éléments de galerie de médias affichés lorsque l’acheteur sélectionne des options de produit configurables.
Produits groupés
- La requête de produits renvoie désormais toutes les données attendues pour les produits regroupés. Auparavant,
product_links
était un tableau vide.
- Un produit regroupé est désormais répertorié comme en rupture de stock sur la page de modification du produit lorsque tous les produits enfants simples sont en rupture de stock.
- Le statut d’un produit regroupé est désormais correctement mis à jour sur la page de modification du produit lorsque le statut de ses produits simples enfants passe à en rupture de stock. Auparavant, l'article stocké pour le parent du produit regroupé n'était pas mis à jour après que ses enfants aient modifié le statut du stock.
Images
- Les images sur la page d’accueil d’un magasin sont désormais rendues correctement. Auparavant, la source de la page HTML était corrompue car les trois barres obliques consécutives dans le code base64 de l’image étaient interprétées à tort comme un commentaire.
- La dépendance sur l’extension
fileinfo
a été supprimée du module CMS. Auparavant, l’application générait une erreur lorsque vous tentiez de charger une image à l’aide du chargeur d’images, qui s’affiche lorsque vous cliquez sur le bouton Insérer une image lors de l’ajout de contenu. GitHub-24332, GitHub-16531, GitHub-29852
- Ajout de la prise en charge de la lecture de métadonnées
exif_image.png
ouexif-image.jpeg
. GitHub-1449
- Les images sont désormais affichées par le widget Carrousel d’événements de catalogue après le chargement comme prévu. Auparavant, la tâche cron
catalog_event_status_checker
supprimait les images chargées.
- Les couleurs des images CMJN sont désormais correctement rendues. Lorsque l’adaptateur Imagick détecte désormais qu’une image ouverte a un espace colorimétrique CMJN, l’espace colorimétrique est converti en SRGB. Auparavant, ces images étaient rendues avec des couleurs inversées. GitHub-22375
- Les valeurs booléennes ne sont plus définies pour
image_with_border.phtml
. Les paramètresmax-width
etheight
redondants ont été supprimés d’.product-image-photo
. (Ces valeurs sont déjà définies globalement sur l’image via les styles de réinitialisation.) GitHub-30186
Importer/exporter
- Une valeur
region_id
n’est plus affectée à l’adresse du clientNULL
lorsque vous importez des adresses de clients à l’aide d’un fichier CSV (entity type = "customer address"
etimport behavior = "add/update"
) à partir duquel certaines valeurs de champ ont été supprimées.
- Vous pouvez désormais masquer les images du produit sur le storefront lors de l’importation.
- Un processus d’importation de produit planifié met désormais à jour les produits avec des champs de données corrects lorsque le fichier CSV contient également des entrées incorrectes. Auparavant, aucune entrée n’était mise à jour si le fichier CSV incluait des entrées incorrectes lorsque l’option En cas d’erreur : poursuivre le traitement était activée.
- Lorsqu’un produit importé a
qty
défini sur 0 maisis_in_stock set
sur 1 dans le fichier CSV, le produit n’est pas répertorié sur la page des catégories et la page des détails du produit l’identifie comme étant en rupture de stock. Auparavant, les produits disposant de ces valeurs étaient visibles sur le storefront après l’importation.
- L’importation CSV n’ignore plus les valeurs
dropdown
ettextarea
pour les attributs supplémentaires. Auparavant, ces valeurs d’attribut n’étaient pas mises à jour lors de l’importation.
- Le fichier CSV d’exportation de produit apparaît désormais comme prévu dans la liste des administrateurs des fichiers CSV d’exportation. Auparavant, l’application générait une erreur lorsque vous exécutiez cette commande :
bin/magento queue:consumers:start exportProcessor --single-thread --max-messages=10000
.
- L’application ne renvoie plus d’erreur lors de l’importation de données CSV contenant des caractères bengalis (bengali).
- L’application affiche désormais un message d’erreur informatif lorsqu’un administrateur clique sur Vérifier les données lors de l’importation d’un fichier qui a été modifié depuis l’exportation lors de l’utilisation de Chrome. Auparavant, l’application affichait une erreur de console, mais n’indiquait pas à l’utilisateur comment procéder.
- L’application ne duplique plus les images de produit lorsque vous importez les mêmes données CSV de produit plusieurs fois. GitHub-21885
- Suppression de la limite de 90 caractères pour les noms de fichiers image dans
vendor/magento/framework/File/Uploader.php
. Auparavant, la longueur du répertoire et du nom de fichier ne pouvait pas dépasser 255 caractères. L’application a importé des produits avec des images dont le nom de fichier dépassait cette limite, mais n’a pas importé le fichier image. GitHub-29377
- Les codes promotionnels peuvent désormais être exportés au format CSV ou XML. Auparavant, l’application affichait une erreur 404 lorsque vous cliquiez sur Exporter au format CSV ou Exporter au format XML lorsque vous tentiez d’exporter des coupons. GitHub-29277
- Les images de produit dupliquées sont désormais supprimées après l’importation d’un fichier CSV contenant des images. GitHub-14398, GitHub-21885
Index
- Nous avons amélioré les performances de l’indexeur partiel. L’application efface désormais les ID de cache qui ont été modifiés pour chaque itération par lots de 1 000 ID. Le contexte de cache n’accumule plus d’ID. Auparavant, le contexte de cache accumulait les ID de cache pour chaque itération de lot de 1 000 ID et effaçait le même ensemble d’ID à chaque itération.
- Les incohérences entre le système de réindexation partielle et le système de réindexation complet ont été corrigées. Les deux systèmes d’indexation utilisent désormais le même code, ce qui fonctionne correctement. Auparavant, les deux systèmes d’indexation utilisaient une logique différente en ce qui concerne les indexeurs partagés, ce qui entraînait potentiellement l’invalidation des indexeurs après chaque exécution du système de réindexation partielle. GitHub-29478, GitHub-29297
-
Nous avons résolu des problèmes avec l’indexeur manuel qui entraînaient soit des pages de catégorie vides, soit une réduction du nombre de produits sur les pages de catégorie. Des problèmes liés à des pages de catégorie ou à un nombre de produits incomplets se sont produits lorsque :
-
les indexeurs partiels
catalogsearch_fulltext
etcatalog_product_price
ont été exécutés sur un catalogue volumineux jusqu’à ce que ces indexeurs terminent leur exécution. -
l'indexeur partiel a été exécuté sur les index
catalog_category_product
oucatalog_product_category
, et en même temps une réindexation complète a été exécutée sur l'un de ces index. Ces deux processus d’indexation pouvaient entrer en conflit, ce qui entraînait l’absence de produits dans les pages de catégorie. -
bin/magento indexer:reindex inventory
a été exécuté sur un catalogue volumineux. Les produits étaient absents des pages de catégorie jusqu’à ce que l’indexeur partielcatalogsearch_fulltext
termine son exécution.
-
- Un indexeur a été ajouté à la table MySQL
Magento_Bulk
, ce qui a amélioré les performances des opérations en masse.
- Les commentaires dans les tables de base de données reflètent désormais précisément le statut de la table après réindexation (
bin/magento indexer:reindex
). Auparavant, les commentaires du tableau après la réindexation contenaient les mêmes valeurs que les commentaires laissés après une nouvelle installation.
- L’instruction
SELECT entity_id IN
a été améliorée dans les déploiements mettant en œuvre MariaDB v.10.3.18, ce qui a amélioré les performances de l’indexation des catégories de catalogue. GitHub-25199
- Adobe Commerce a amélioré les performances du cache en éliminant le vidage des balises plusieurs fois par instance d’indexeur. GitHub-29890
Infrastructure
- Vous pouvez désormais utiliser
app/etc/env.php
pour remplacer le courtier de messages MYSQL par AMQP.
- Les problèmes liés au calcul des restes pour les valeurs décimales des quantités de produits ont été corrigés dans la bibliothèque JavaScript appropriée. L’application calculait auparavant de manière incorrecte des fractions décimales de plus de deux chiffres et affichait ensuite un message incorrect.
- La méthode
\Magento\Authorization\Model\Rules::update
a été abandonnée. GitHub-29128
- L’application ne renvoie plus d’erreur fatale lors de la conversion d’un objet de date au format UTC. Auparavant, sous certaines conditions, la méthode
convertConfigTimeToUtc
générait une exception. GitHub-29525
DataObject
a été remplacé par le modèle de produit dans\Magento\MediaGalleryCatalogUi\Ui\Component\Listing\Columns\Thumbnail::prepareDataSource
.GitHub-1711
- Le résolveur
RequireJS
ne parvient plus à détecter les ressources bloquées. Auparavant, le programme de résolution ne détectait pas correctement si toutes les ressources d’une page étaient chargées ou traitées de manière appropriée et la page continuait à se charger. GitHub-28116
- La validation du code du référentiel d’attributs respecte désormais la
Magento\Eav\Model\Entity\Attribute::ATTRIBUTE_CODE_MAX_LENGTH
plutôt qu’une valeur codée en dur. GitHub-29017
- La minimisation d’HTML n’efface plus les barres obliques triples (https://experienceleague.adobe.com//?lang=fr) des chaînes HTML dans les fichiers HTML. Auparavant, les triples barres obliques étaient interprétées comme des commentaires lors de la minimisation, et le reste de la ligne était complètement supprimé dans le fichier HTML généré lors du déploiement.
- Les commerçants peuvent désormais configurer les abonnements de l’indexeur au niveau de la colonne du tableau plutôt qu’au niveau du tableau. Un nouvel argument a été ajouté à
\Magento\Framework\Mview\View\Subscription
pour permettre d'ignorer les colonnes pour une combinaison de vue ou de tableau spécifique. GitHub-30243
- Cliquer sur le bouton Ajouter au panier avant que le JavaScript de la page produit ne soit entièrement initialisé n’entraîne plus la duplication des valeurs de
form_key
. Auparavant, un produit pouvait être ajouté au panier avec une valeur deform_key
mise en cache qui déclenchait une exception. Lorsque l’utilisateur a cliqué sur Ajouter au panier avant l’initialisation complète du JavaScript, la valeur deform_key
envoyée dans les données de formulaire ne correspondait pas à la session des utilisateurs et utilisatrices, et le produit n’a pas été ajouté au panier. GitHub-13746
- Le client cURL actuel respecte désormais les noms d’en-tête insensibles à la casse. Auparavant, la comparaison des
Set-Cookie
était sensible à la casse, ce qui pouvait entraîner des problèmes avec certains serveurs HTTP. GitHub-29524
- Mise à jour du format d’URN XSD dans les fichiers XML de
api-functional
et de cas de test. GitHub-30552
- Un préfixe d’événement et un objet d’événement ont été ajoutés à la collection de valeurs d’options de produit du catalogue afin d’améliorer la personnalisation du chargement de la collection de
\Magento\Catalog\Model\ResourceModel\Product\Option\Value\Collection
. GitHub-29621
- Toutes les occurrences de
array_merge
ont été refactorisées pour utiliser le format recommandé dans la norme de codage. GitHub-30005
- Un bloc
head.additional
de type\Magento\Framework\View\Element\Text\ListText
a été ajouté à la mise en pageadminhtml
default
(parmagento2/module-base
). GitHub-29165
- Ajout de la méthode d’URL d’échappement manquante au widget du module de modèle de mise en page. GitHub-30036
- La méthode
\Magento\Framework\Filesystem\Io\File::read()
est désormais compatible avec\Magento\Framework\Filesystem\Io\IoInterface::read()
. GitHub-27866
Klarna
- Suppression de la dépendance sur le module PayPal. GitHub-29421
Journalisation
- Le module
Magento_Logging
a désormais correctement enregistré les nouvelles valeurs ainsi que les valeurs qui les ont précédées. Auparavant, les valeurs de la colonne Valeur avant modification affichaient les valeurs N/A, qu’il s’agisse de la première modification ou de la suivante, ou lorsque la valeur par défaut était renvoyée. GitHub-26943
Galerie de médias
- La page Admin Magasins > Configuration > Avancé > Système a été mise à jour afin d’afficher le nom correct du produit (Galerie de médias). Des modifications mineures ont été apportées à l’interface utilisateur d’. GitHub-1738
- Les liens de la section Utilisé(e) dans les descriptions d’image de la Galerie de médias affichent désormais une grille qui a été filtrée par l’image sélectionnée comme prévu. Auparavant, le titre de la grille affichée n’était pas correct et les entrées de liste n’étaient pas exactes. GitHub-1694
- Vous pouvez désormais modifier plusieurs images dans la Galerie de médias. Auparavant, vous ne pouviez pas ajouter de balises à une deuxième image après l’avoir fait sur une seule image. GitHub-1755
- Le menu déroulant Balises est désormais vide, comme prévu, après la suppression de balises d’une image dans la Galerie de médias. GitHub-1703
- Le traitement par lots des messages de file d’attente de synchronisation de Media Gallery est désormais pris en charge. GitHub-1724
- L’application affiche désormais une page 404 comme prévu lorsque vous essayez d’ouvrir la Galerie de médias lorsque la Galerie de médias améliorée est désactivée. GitHub-1760
MediaGalleryMetadata
ignore désormais le lecteur de segment si une exception se produit et analyse et affiche à la place les métadonnées d’image comme prévu. Auparavant, les métadonnées de l’image étaient vides en raison d’une exception du lecteur de segmentsexif_read_data
. GitHub-1782
- La longueur du nom du dossier n’empêche plus le chargement d’une image vers la Galerie de médias. Media Gallery définit désormais la colonne de chemin comme type
text
. GitHub-1778
- Le chargeur d’images affiche désormais la taille d’image correcte lorsqu’un rendu est inséré à partir de Media Gallery. GitHub-1806
- La vérification du chemin d’accès a été ajoutée au plug-in de téléchargement
Mediagallery
. Auparavant, la validation échouait et l’application n’importait pas de produits lorsque Activer l’ancienne galerie de médias était désactivé. GitHub-30649
-
Magento_Cms::media_gallery
sous-ressources ACL ont été ajoutées et appliquées pour que la nouvelle galerie de médias prenne en charge les autorisations configurées pour les opérations discrètes suivantes :- Chargement de ressources
- Insertion de ressources dans le contenu
- Suppression de ressources
- Créer des dossiers
- Supprimer des dossiers. GitHub-1487
- Les longues chaînes de texte et les noms de dossier de la Galerie de médias ne sont plus recadrés. Auparavant, l’application affichait du texte et des images recadrés et affichait le message suivant :
We couldn't find any records
. GitHub-1763, GitHub-1758
- L’application n’affiche plus le bouton Ajouter la sélection lorsqu’aucune image n’est sélectionnée lors de la modification du contenu d’une nouvelle page. GitHub-1769
- Les filtres sont désormais appliqués comme prévu sur la grille de catégories Contenu > Galerie de médias. GitHub-1763
- La configuration des options de multiplication de point d’arrêt de la Galerie fonctionne désormais comme prévu. Auparavant, la configuration des options de point d’arrêt ne fonctionnait pas correctement, car
mediaCheck
déclenchait la fonction de requête de média de sortie au chargement de la page. GitHub-29933
MFTF
- Remplacement des actions répétitives par des groupes d'actions dans
CheckStaticBlocksTest
. GitHub-30561
AdminUpdateCategoryAndMakeInactiveTest
etVerifyChildCategoriesShouldNotIncludeInMenuTest
ont été restructurés pour se conformer aux meilleures pratiques de la MFTF. GitHub-30058
- Suppression des
AdminOpenCMSBlocksGridActionGroup
dupliquées. GitHub-30896
- Remplacement de
AdminOpentCmsBlockActionGroup
par AdminOpenCmsBlockActionGroup. GitHub-29839
GoToAttributeGridPageActionGroup
obsolète. GitHub-30103
- Ajout de groupes d’actions au module
Analytics
. GitHub-29500
- Mise à jour des
CheckCheckoutSuccessPageAsRegisterCustomerTest
et desCheckCheckoutSuccessPageAsGuestTest
pour annuler les commandes créées après l’exécution des tests. GitHub-28324
- Suppression de
AdminNavigateToPageGridActionGroup
en raison d’une redondance. GitHub-29838
- Un problème lié à
StorefrontProductListWidgetWithSharedCatalogTest
en raison duquel le test était ignoré a été résolu. GitHub-322
- Implémentation de
ActionGroup
pour accéder à la page de passage en caisse. GitHub-29843
- Implémentation de
AdminOpenCreateNewCMSPageActionGroup
pour accéder à la création d’une page CMS. GitHub-29824
- Correction de problèmes liés à l’omission dans les tests MFTF pour la page CMS pour la galerie de médias. GitHub-30164
- Des titres et descriptions significatifs ont été ajoutés aux tests MFTF pour les modules
Company
,CompanyCredit
,CompanyPayment
,CompanyShipping
etConfigurableSharedCatalog
. GitHub-30164
Nouveaux tests
- Ajout d’un test pour activer l’envoi d’e-mails à un ami dans l’administrateur. GitHub-29145
- Ajout d’un test pour la suppression d’un bloc CMS d’une grille par un administrateur. GitHub-30372
- Ajout d’un test pour appliquer une règle de panier à un seul article groupé. GitHub-28921
- Ajout de tests pour vérifier si les informations Utilisé dans pour une image de la Galerie de médias s’affichent après la suppression de l’entité. GitHub-1774
Nouveaux groupes d’action
-
AssertStorefrontCustomerLogoutSuccessPageActionGroup
. GitHub-29841 -
AdminOpenConfigurationStoresPageActionGroup
. GitHub-29848 -
ReloadPageActionGroup
. GitHub-30683 -
StorefrontClickRefundTabCustomerOrderViewActionGroup
. GitHub-30032 -
AdminOpenAdminThreeDSecurePageActionGroup
. GitHub-29845 -
AdminCustomerClickFirstRowEditLinkActionGroup
. GitHub-29501 -
StorefrontClickAddToCartButtonActionGroup
. GitHub-29823 -
AdminDeleteTaxRateActionGroup
. GitHub-29940 -
AdminOpenWebConfigurationPageActionGroup
. GitHub-29846 -
AdminOpenGeneralConfigurationPageActionGroup
. GitHub-29847 -
AdminOrderClickSubmitOrderActionGroup
. GitHub-29649 -
AdminOpenCatalogProductPageActionGroup
. GitHub-29941 -
AdminClickInvoiceButtonIntoOrderActionGroup
. GitHub-25399 -
AdminGridBulkActionGroup
. GitHub-28324 -
AdminGridColumnShowActionGroup
. GitHub-28324 -
AdminOpenIndexManagementPageActionGroup
. GitHub-29825 -
AdminOpenCatalogSearchTermIndexPageActionGroup
. GitHub-29844 -
AdminClickAddProductToggleAndSelectProductTypeActionGroup
. GitHub-30917 -
StorefrontCheckoutClickSaveAddressButtonActionGroup
. GitHub-30916 -
AdminOpenCurrencyRatesPageActionGroup
. GitHub-30783 -
AdminClickGetShippingMethodsAndRatesActionGroup
. GitHub-30782 -
AdminSelectFixedShippingMethodActionGroup
. GitHub-30782 -
StorefrontClickProceedToCheckoutActionGroup
. GitHub-30926 -
StorefrontOpenMyAccountPageActionGroup
. GitHub-29842
Newsletter
- Les utilisateurs administrateurs peuvent désormais modifier un compte client comme prévu lorsque le client est abonné à une newsletter mise en file d’attente. GitHub-30645
- L’application envoie désormais à nouveau la confirmation d’inscription à la newsletter si l’acheteur ne confirme pas son inscription à la newsletter. GitHub-28422
- Vous pouvez désormais modifier un compte client comme prévu lorsqu’un client est abonné à une newsletter mise en file d’attente. GitHub-30645
Modes de paiement
- Les modes de paiement sont désormais chargés dans l’administration pour tous les sites web, comme prévu dans un déploiement multi-magasin.
- L’application n’affiche plus le message
Purchase Order number is a required field
au-dessus du champ du code de coupon avant que l’acheteur ne saisisse des informations dans les déploiements où la commande fournisseur a été configurée comme seule option de paiement disponible.
- L'application effectue désormais correctement les paiements Payflow Pro lorsque le nom de l'acheteur contient des lettres accentuées. Auparavant, le paiement n’était pas terminé et l’application a consigné cette erreur :
report.CRITICAL: String to be escaped was not valid UTF-8 or could not be converted
.
- Les acheteurs invités peuvent désormais passer des commandes PayPal lorsque l'option Affectation automatique au groupe de clients est activée. Le paiement est traité sur la passerelle PayPal, la commande est créée dans Magento et l’acheteur voit la page de remerciement de la commande. Auparavant, la commande était traitée avec succès sur la passerelle PayPal, mais elle n’était pas créée dans Adobe Commerce. L’acheteur a été redirigé vers la page de révision de la commande, où l’application affichait cette erreur :
Failed address validation: %1" error
. GitHub-25399
PayPal
- Les commerçants peuvent désormais passer une commande auprès de l’administrateur après être passés d’un mode de paiement par carte de crédit à un mode de paiement sans carte de crédit. Auparavant, lorsqu’un commerçant cliquait sur le bouton Soumettre la commande, le processus de chargement démarrait mais n’était jamais terminé et la commande n’était pas passée.
- L'application ne crée plus de commandes en double lorsqu'une commande est passée avec PayPal Express. Auparavant, lorsqu’un acheteur tentait de payer une commande avec PayPal Express, mais que PayPal renvoyait une erreur, l’application créait toujours la commande. Il en a résulté des commandes en double sur le site du commerçant. GitHub-13952
- Les rapports de règlement PayPal sont désormais disponibles à l’adresse Rapports > Ventes > Règlement PayPal comme prévu. Auparavant, l'application ne répertoriait pas ces rapports sur la grille de rapports de règlement PayPal et affichait le message suivant :
We couldn't find any records
.
- Cliquer sur le bouton PayPal lors du passage en caisse ne déclenche plus d’appel
web-api
redondant. Auparavant, deux demandes étaient déclenchées, ce qui doublait la facture du produit.
Performances
- Les problèmes de performance dans
module-catalog-import-export/Model/Import/Product/Option.php
ont été résolus. Le temps nécessaire pour exporter ou importer plus de 100 000 enregistrements a été réduit. Consultez l’article de la base de connaissances L’importation/exportation prend plus de temps que prévu avec un grand nombre d’options de produit
Magento_Csp/Model/BlockCache
a été refactorisé pour réduire à la fois la consommation de mémoire et la génération de chaînes mises en cache inutilement volumineuses. Auparavant, les pages qui incluaient des scripts et des styles placés dynamiquement sur la liste autorisée rencontraient souvent des problèmes de performances. GitHub-29964
- Nous avons amélioré la performance des exportations planifiées de catalogues qui incluent plus de 100 000 produits utilisant des consommateurs.
- L’application ne vide plus le cache de catégorie lorsque vous ajoutez ou enregistrez un produit désactivé dans une catégorie. Auparavant, l’application vidait le cache pour les catégories associées malgré l’état du produit, ce qui affectait les performances du serveur.
- Le temps de chargement des pages pour mettre à jour la quantité de produits dans le panier a été amélioré. Auparavant, l’application exécutait plusieurs requêtes distinctes pour chaque produit du panier, ce qui augmentait le temps de chargement des pages.
- Un indexeur a été ajouté à la table MySQL
Magento_Bulk
, ce qui a amélioré les performances des opérations en masse.
- L’application met désormais en cache les identifiants enfants des produits configurables. Cela a amélioré les performances de chargement des pages en réduisant le nombre de requêtes en base de données. GitHub-30585
- Le chargement du tableau de bord d’administration a été amélioré. Auparavant, l’application affichait les noms des onglets sous forme de liste avant que le chargement de la page ne soit terminé.
- La gestion du cache Redis a été améliorée grâce à l’ajout de limites d’expiration pour les caches de disposition. Auparavant, les caches Redis atteignaient rapidement la mémoire maximale allouée dans les déploiements importants et l’application générait des erreurs lors des opérations d’écriture.
- Les performances de l’extraction ont été améliorées par la suppression d’une requête de base de données redondante dans
app/code/Magento/Catalog/Model/CategoryLink.php
. GitHub-29453
Magento\Framework\DB\Adapter\Pdo\Mysql->isTableExists
a été refactorisé pour améliorer les performances. Les appels redondants àSHOW TABLE STATUS
pour vérifier l'existence d'une table ont été réduits. GitHub-29662
getPageLayoutsConfig
est désormais enregistré dans le cache, ce qui a amélioré les performances du créateur de configuration. GitHub-29546
- Les performances d’Adobe Commerce lors des opérations de modification et d’enregistrement pour les segments de clients qui contiennent plus de 3 000 000 clients ont été améliorées.
Persistant
- Les acheteurs ne peuvent plus passer de commande après l’expiration de leur cookie de session lorsque le panier persistant est activé. Au lieu de cela, l’application affiche la page de connexion afin que l’acheteur puisse se connecter. Auparavant, l’application passait la commande. L’application ne validait pas correctement le client persistant lorsque
PHPSESSID
avait expiré etcustomerSession
était recréé à partir des informations persistantes.
- L’application affiche désormais le message de bienvenue comme prévu lorsqu’un acheteur se connecte à un magasin où le panier persistant est activé. Auparavant, l’application affichait la mention Pas vous ? le message après la connexion.
- L’application n’affiche plus le Pas vous ? du texte lorsqu’un client sélectionne l’option Mémoriser mon nom lors de la connexion à un déploiement où le panier persistant est activé.
- L’application n’affiche plus le contenu du panier d’un client ou d’une cliente après l’expiration de la session cliente. Auparavant, l’application affichait cette erreur lorsqu’un client invité tentait de passer en caisse lorsqu’un panier persistant était activé :
No such entity with cartid = 0
.
Tarification
- Les mises à jour de prix asynchrones consécutives n’interfèrent plus les unes avec les autres et le statut correct est attribué à chaque opération. Auparavant, si une mise à jour de prix asynchrone échouait, toutes les mises à jour de prix asynchrones suivantes échouaient jusqu’à ce que le client de file d’attente correspondant soit redémarré. GitHub-27865
Rapports
- Rapports > Marketing > Produits dans les paniers affiche désormais uniquement l’enregistrement dans la portée autorisée de l’utilisateur qui génère le rapport. Auparavant, toutes les données étaient disponibles pour toutes les portées.
- L’application utilise désormais la devise spécifiée dans la portée du rôle du commerçant qui génère le rapport lors de l’affichage de la devise du produit dans le rapport Produits dans le panier .
- Les fonctionnalités de produit Récemment consultés et Récemment comparés affichent désormais des statistiques pour différents magasins et sites web dans l’administration, comme prévu dans un déploiement multi-magasin. Auparavant, ces fonctionnalités ne prenaient pas en compte tous les magasins ou sites web.
- Les prix dans les rapports de commande utilisent désormais le symbole de devise correct.
- L’application vérifie désormais l’existence d’un jeton lorsqu’un utilisateur clique sur le bouton Accéder au rapport avancé du tableau de bord d’administration. Si le jeton existe, l’application affiche la page Rapports avancés . Si le jeton n’est pas configuré, l’application affiche une page d’information dans le guide de l’utilisateur. GitHub-25411
Autorisations de retour de marchandises (RMA)
- Les options sélectionnées s'appliquent désormais aux lignes fractionnées lorsque vous fractionnez un retour client. Auparavant, les valeurs de Motif de retour, Condition d'article et Résolution n'étaient pas enregistrées.
- Vous pouvez désormais supprimer les informations de suivi et d’expédition d’une RMA lorsque le regroupement JavaScript est activé.
- Les administrateurs disposant d’un accès limité aux seuls produits d’une portée de site web spécifique peuvent désormais ajouter un élément à un retour même si cet élément ne se trouve plus dans la portée de leur site web.
Examens
- Le nombre d’évaluations affichées dans Magasins > Attribut > Évaluation correspond désormais au nombre d’évaluations dans un déploiement multisite. GitHub-30258
- La page Nouvelle révision se charge désormais comme prévu lorsque vous cliquez sur le bouton Nouvelle révision dans Admin Marketing > Toutes les révisions. Cliquez sur un produit sur cette page pour ouvrir le nouveau formulaire de révision attendu pour ce produit.
- L’application ne renvoie plus cette erreur lorsque vous tentez de modifier une commande à partir de Admin Marketing > Toutes les révisions :
Uncaught TypeError: Event.observe is not a function
. GitHub-30388
Récompenses
- Les points de récompense sont désormais calculés comme prévu pour les commandes taxables lorsqu’une commande partielle est terminée.
- Les commerçants peuvent maintenant émettre avec succès un remboursement partiel pour une commande qui a été achetée avec des points de récompense et rembourser par la suite le reste de la commande. Auparavant, les commerçants ne pouvaient pas rembourser les points de récompense pour le reste de la commande.
- L’application n’affiche plus cette erreur lorsqu’un acheteur réapplique les points de récompense après les avoir supprimés :
You removed the reward points from this order
.
- Les points de récompense sont désormais calculés correctement lorsqu’un client passe une commande dans une devise différente de la devise de base, dans un magasin qui prend en charge plusieurs devises.
Ventes
- La colonne
order_created_at
dusales_shipment_grid
est désormais mise à jour comme prévu après chaque mise à jour.
- Vous pouvez désormais commander à nouveau un produit avec une date d’options personnalisées dans un magasin pour lequel Utiliser le calendrier JavaScript est activé. Auparavant, lorsque vous tentiez de commander à nouveau, l’application n’ajoutait pas l’article au panier et affichait cette erreur :
Could not add the product with SKU "simp1" to the shopping cart: Please specify date required option(s).
- L’application ne ferme plus immédiatement une commande lorsqu’un acheteur extrait une commande qui consiste en un produit virtuel avec un coût total de 0 $ dans les déploiements où la méthode de passage en caisse avec zéro sous-total est activée.
- L’application n’archive plus une commande avant de la traiter. Auparavant, l’action Sélection multiple sur la grille de commandes de l’administrateur affectait les commandes non sélectionnées.
- La grille d'avoir affiche désormais le symbole de devise correct lorsque le rial saoudien (SAR) est défini comme devise de base.
- L’application affiche désormais systématiquement les informations sur l’adresse de livraison comme prévu sur la page de commande lors du passage en caisse.
- La valeur de
total_qty
correspond désormais à la valeur detotal_qty_ordered
dans les factures vente.
- L’envoi asynchrone d’e-mails de ventes envoie désormais un e-mail uniquement pour les commandes qui ont été créées après la date de la dernière mise à jour. Auparavant, l’application ne filtrait pas les e-mails par date lorsque l’envoi asynchrone était activé.
- L’application envoie désormais la facture par e-mail comme prévu lorsqu’une commande est passée auprès de l’administrateur.
- L’application efface désormais les données de commande existantes au cours d’une session lorsqu’un commerçant crée une commande pour un client à partir de l’administrateur.
- Vous pouvez désormais modifier le groupe de clients pour les nouveaux clients créés par le biais d'une commande administrateur lorsque l'option Activer l'affectation automatique au groupe de clients est activée. Vous pouvez également affecter un groupe de clients en fonction de la validation de la TVA. Auparavant, lors de la validation du numéro de TVA, l’objet de la demande ne vérifiait pas le
group_id
de demande affecté. Par défaut, il utilise legroup_id
par défaut.
- L’application ne modifie plus le statut d’une commande personnalisée avec
Suspected Fraud
statut enProcessing
après qu’un commerçant a créé une expédition partielle à l’aide de l’API REST.
Règle de vente
- Les codes promotionnels qui ont été appliqués en fonction du mode d’expédition ne sont plus appliqués lorsqu’un acheteur change de mode d’expédition. Auparavant, l’application n’effaçait pas les codes de coupon lorsque les acheteurs changeaient de mode d’expédition.
- Les acheteurs ne peuvent pas appliquer un code de coupon plus fréquemment que ne le permet le paramètre Utilise par client. Auparavant, si un acheteur ouvrait plusieurs fenêtres de navigateur et passait plusieurs commandes simultanément, chaque commande recevait la remise, même si la valeur du paramètre Utilisations par client était de 1.
Rechercher search-heading
- Elasticsearch ne renvoie plus d’erreur de modificateur inconnu lorsqu’un acheteur effectue une recherche sur un synonyme de recherche. Auparavant, il manquait une barre oblique d'échappement dans les expressions régulières, ce qui entraînait une erreur fatale.
- La recherche avancée ne renvoie plus les enfants de produits configurables comme résultats de recherche individuels lorsque les produits enfants ont été configurés avec une visibilité définie sur Non visible individuellement.
- Le type de noms de produits Elasticsearch dans les résultats de recherche n’est plus sensible à la casse.
- La page des résultats de recherche est désormais mise en cache comme prévu lorsque le paramètre définir le nombre de résultats de recherche principaux à mettre en cache sur 0 est activé dans Admin Magasins > Configuration > Catalogue > Catalogue > Catalog Search.
- L’indexeur de recherche catalogue s’exécute désormais sans générer d’erreur en raison de la limite de champs d’Elasticsearch. Auparavant, l’application générait cette erreur :
Limit of total fields [xxx] in index [m24dev_product_1_v10] has been exceeded
.
- Les performances de la recherche catalogue se sont améliorées. La désactivation de Activer les suggestions de recherche (Magasins > Configuration > Catalogue > Recherche catalogue ) fonctionne comme prévu. Auparavant, l’application demandait des suggestions de recherche de saisie automatique dans la table
search_query
MySQL plutôt que dans Elasticsearch. GitHub-25534
- Elasticsearch filtre désormais les prix des produits de la même manière que MySQL. Le type de champ
price_*
a été modifié defloat
endouble
dans l’index Elasticsearch afin d’améliorer la précision et de corriger une erreur à virgule flottante.
- Un écouteur d’événement de keydown a été ajouté à l’administration pour activer le formulaire de recherche globale lorsqu’une barre oblique est saisie. GitHub-29551
- Elasticsearch ne renvoie plus d’erreur, mais n’affiche aucun produit comme prévu lorsqu’une valeur
string
est utilisée pour filtrer les produits par attribut avec un type principalinteger
oudecimal
. Auparavant, l’application affichait cette erreur dansexception.log
:number format exception
.
-
Elasticsearch ne renvoie plus d’exception lorsqu’un terme de recherche contient un
/
. GitHub-25886, GitHub-25110 -
La recherche est désormais désactivée comme prévu pour un groupe de clients sélectionné à partir de la requête de produits lorsque le paramètre de configuration Interdire la recherche catalogue par dans les autorisations générales des catégories est activé. GitHub-29927
- Les résultats de recherche n’incluent plus plusieurs citations du même mot. GitHub-30104
Expédition
- Le processus de passage en caisse n’échoue plus lorsqu’une interruption du réseau interrompt la connexion à la méthode d’expédition DHL. Au lieu de cela, l’application affiche d’autres méthodes d’expédition disponibles. Auparavant, le processus de passage en caisse se bloquait lorsque la connexion à l’expédition DHL était interrompue et l’application affichait cette erreur :
Sorry, no quotes are available for this order at this time
. GitHub-29902
- Les champs qui décrivent la méthode de diffusion UPS dans Admin Magasins > Configuration > Ventes > Méthodes de diffusion sont désormais activés comme prévu.
- Les expéditions créées via le point d’entrée POST
/rest/V1/shipment
mettent désormais correctement à jour les commandes. Auparavant, l'application créait une expédition, mais le statut de l'expédition restait à l'état Traitement.
- L’application ne supprime plus les produits simples du panier lorsqu’un autre produit est supprimé du panier avant le passage en caisse avec des adresses d’expédition multiples. GitHub-30259
- La page Vérification de commande affiche désormais le montant de taxe avant le montant d'expédition comme prévu pour les commandes expédiées à plusieurs adresses.
- Le suivi des expéditions UPS indique désormais un statut de
Delivered On
uniquement lorsqu'un colis a été livré. GitHub-30032
- L’application affiche désormais le sous-total du panier correct pour les commandes contenant un produit virtuel lorsque l’acheteur revient à son panier à partir de la commande avec plusieurs adresses.
- Les commerçants peuvent désormais créer une étiquette d'expédition à partir de la page d'expédition pour une commande existante qui utilise l'expédition FedEx lorsque le regroupement JavaScript est activé. Auparavant, l’application générait une erreur lorsque le commerçant cliquait sur le bouton Créer une étiquette d’expédition.
- Le lien de suivi des expéditions dans l’e-mail de confirmation d’expédition envoyé aux clients fonctionne désormais comme prévu. Auparavant, ce lien renvoyait une erreur 404.
- L’application affiche désormais un message d’erreur informatif lorsqu’un acheteur passe en caisse à l’aide de plusieurs adresses, puis supprime tous les produits autres qu’un produit virtuel. GitHub-25595
- Vous pouvez maintenant créer une étiquette d'expédition comme prévu pour une commande partielle. Auparavant, lorsque vous tentiez de créer une étiquette d'expédition pour un seul article d'une commande, l'application ajoutait tous les produits au package et la validation échouait. GitHub-29552
- La validation de la méthode d’expédition n’est plus ignorée lors de l’appel de
/V1/guest-carts/:cartId/totals-information
. GitHub-25147
Plan du site
- Les plans de site générés par
cron
incluent désormais les URL d’image correctes. Auparavant, le chemin d’accès de l’image mise en cache générée était incorrect dans les déploiements multi-magasin.
Évaluation
- La page Modifier la page d’accueil affiche désormais toutes les mises à jour planifiées comme prévu lorsque vous recherchez les mises à jour planifiées de la page d’accueil. Auparavant, l’application n’affichait qu’une seule des mises à jour planifiées.
- L’envoi de 0 avec le point d’entrée de prix spécial
/rest/V1/products/special-price-information
enregistre désormais le prix et renvoie le planning comme prévu.
- Les imports planifiés s’exécutent désormais comme prévu lorsque le fichier CSV d’import contient une marque de commande d’octet (BOM).
- L’application ne supprime plus la classe de corps de mise en page lorsqu’un commerçant planifie une mise à jour de catégorie.
- Les modifications de produit replanifiées ne sont désormais plus effacées après une exécution de
cron
.
- L’application ne renvoie plus d’erreur lorsque vous essayez de planifier une mise à jour pour une catégorie. Auparavant, l’application générait cette erreur lorsque vous cliquiez sur Enregistrer sur la page Planifier une nouvelle mise à jour :
Something went wrong while saving the Magento\Catalog\Api\Data\CategoryInterface
.
- L’API
rest/V1/products/special-price
peut désormais être utilisée pour planifier des prix spéciaux pour plusieurs magasins. Auparavant, l’application générait une erreur lorsqu’un commerçant planifiait une mise à jour de prix pour plusieurs magasins à la mêmefrom
etto
fois qu’une restauration est disponible à l’heure de début du nouveau planning.
Stocker
- L’administrateur et le sélecteur de magasin principal reflètent désormais les modifications apportées à l’ordre de tri des magasins dans l’administrateur. GitHub-13401
- L’application crée désormais des URL correctes pour les catégories et les produits après modification de la clé URL de niveau supérieur d’une vue de magasin. Auparavant, lorsque l’arborescence des catégories d’une vue de magasin contenait des
url_keys
modifiées, si une clé de catégorie ne changeait pas mais que la clé des parents de catégorie la modifiait, le code d’origine utilisait l’affichage de magasin par défaut de la catégorie lors de la création d’URL. GitHub-28633
Règles de Target
- Le chargement des pages de détails du produit a été optimisé. Nous avons ajouté des index pour les tables de base de données qui optimisent les requêtes de conditions de règles cibles pour de nombreux cas.
- Les règles de Target pour les produits associés fonctionnent désormais lorsque la condition
is one of
utilisée pour la fonction Produits à afficher contient plusieurs conditions. Auparavant, lorsque cette condition contenait plusieurs valeurs, elle n’était pas analysée.
Taxe
- La validation de la TVA sur une commande client n'entraîne plus la sauvegarde du devis par l'application avec une classe de taxe client incorrecte. GitHub-30018
- Les commandes envoyées à plusieurs adresses peuvent désormais être enregistrées lors du passage en caisse lorsque le protocole FPT est configuré. Auparavant, après avoir passé une commande pour plusieurs adresses, l’application affichait une page vierge au lieu de la page de réussite de la commande.
- Les pages de détails des produits Storefront affichent désormais les anciens et nouveaux prix avec et sans taxe comme prévu. GitHub-27500, GitHub-11998
Test
bin/magento dev:tests:run
lance maintenant les tests suivants comme prévu : all, unit, integration-all, static, static-all, integrity, inheritance et default.
AdminMediaGalleryInsertLargeImageFileSizeTest
a été refactorisé.
- Les tests unitaires sont désormais compatibles avec PHPUnit 8. GitHub-29779
\Magento\TestFramework\TestCase\WebapiAbstract
contient désormais une fonction qui prend en charge la comparaison de grands tableaux imbriqués de résultats attendus et réels dans les tests. Les clés non pertinentes dans le résultat peuvent maintenant être ignorées. GitHub-29498
AdminMediaGalleryCatalogUiEditCategoryGridPageTest
n’échoue plus de manière aléatoire. GitHub-1764
dev/tests/integration/testsuite/Magento/Customer/Controller/AccountTest
a été amélioré. (assert
est désormais basé surXPath
sélecteur au lieu deassertStringContainsString
.) GitHub-29700
- Ajout de la couverture de test pour le module
AdminAnalytics
. GitHub-29500
- Les tests fonctionnels d’intégration et d’API sont désormais compatibles avec PHPUnit 9.3. GitHub-30146
- Correction de problèmes liés au test de
testRequestCacheTagsForCategoryListOnMultipleIds
GraphQL. GitHub-29372
- Le test de disponibilité de devise pour le crédit d’entreprise a été automatisé.
- Les valeurs d’en-tête qui incluent des URL sont désormais correctement analysées en
ApiFunctional TestFramewor
k. GitHub-26425
—no-tablespaces
a été ajouté à toutes les occurrences demysqldump
, ce qui permet aux tests d’intégration de s’exécuter sans le privilègePROCESS
(requis depuis MySQL 5.7.31 / 8.0.21 pour s’exécutermysqldump
par défaut). GitHub-30566
Thème
- Un nouvel indicateur de
--no-parent
a été ajouté à la commandebin/magento setup:static-content:deploy
qui empêche la compilation du ou des parents d’un thème. Ce nouvel indicateur vous permet d’améliorer considérablement les performances du processus de déploiement de contenu statique en évitant une compilation inutile. Notez que ce nouvel indicateur ne fonctionne pas lors de l’utilisation de la stratégiecompact
. GitHub-30184
- La configuration de conception ne génère plus d’opérations DDL. Auparavant, lorsque la configuration de conception était mise à jour, l’application générait des instructions DDL qui pouvaient déclencher des erreurs MySQL.
- Le code redondant du module
Magento_ConfigurableProduct
dans le thème Admin a été supprimé. GitHub-29857
- Les styles de navigation redondants et les propriétés inutilisées dans le thème vierge ont été supprimés. GitHub-29914
- Ajout d’une fonctionnalité de navigation réductible au Thème vierge en mode mobile. GitHub-30237
- Le chargement des polices web pour les thèmes a été optimisé. GitHub-29526
- L’équipe de développement peut désormais spécifier un type de police lors de la déclaration d’une police personnalisée dans un thème. GitHub-29719
Traduction et paramètres régionaux
- Le sélecteur de date de la grille Commandes d’administration fonctionne désormais comme prévu lorsque les paramètres régionaux d’administration sont en arabe (
ar_SA - Saudi Arabia
).
- L’application n’affiche plus de message d’erreur lorsqu’un acheteur saisit une adresse argentine avec un code postal valide lors de l’enregistrement ou de l’ajout d’une nouvelle adresse. Auparavant, l’application affichait cette erreur :
Provided Zip/Postal Code seems to be invalid. Example: 1234. If you believe it is the right one you can ignore this notice.
- L’application ne renvoie plus d’erreur lorsqu’un acheteur saisit un code postal à cinq chiffres pour une adresse coréenne.
- Ajout de la prise en charge des régions d’Uruguay définies dans la norme ISO 3166-2:UY. GitHub-29729
zip_codes.xml
a été mis à jour pour appliquer les codes postaux brésiliens à huit chiffres. GitHub-29984
- Amélioration de la localisation des phrases non localisées restantes. GitHub-11175
- L’espace réservé d’entrée de recherche dans la grille peut maintenant être traduit. GitHub-30510
- L’application télécharge désormais les modules JavaScript de traduction en ligne uniquement lorsqu’ils sont activés. GitHub-29553
Interface utilisateur
- Le bouton Créer un compte de la page Créer un compte reste actif lorsqu’un acheteur saisit des données non valides. Auparavant, ce bouton était désactivé, ce qui empêchait les acheteurs de tenter à nouveau de créer un compte après avoir effectué une erreur. Il s’agissait d’un problème connu dans la version 2.4.1. GitHub-30513
- Le chargement de la grille d'expédition sur la page Modifier la commande d'administration a été amélioré.
- L’application affiche désormais la case Identique à l’adresse de facturation comme prévu sur la page de commande lorsque des produits ont été ajoutés au panier par SKU.
- La classe CSS qui a défini une largeur limitée est désormais appliquée comme prévu aux champs Heure de début dans Admin Store > Configuration > Catalogue > Plan de site XML > Paramètres de génération. GitHub-29496
- Correction des problèmes d’affichage liés au libellé de la case à cocher Termes et conditions. GitHub-24060
- L’application n’affiche plus le code CSS d’un bloc de prix de niveau sur la page de produits lorsque les prix de niveau ne sont pas disponibles. GitHub-29194
- La position des boutons sur la page d’affichage des détails de l’image a été réorganisée conformément aux directives de l’interface utilisateur. GitHub-1783
- Le champ de texte du code promotionnel s’affiche désormais dans la largeur appropriée dans les navigateurs Internet Explorer/EDGE.
- La variable
@button__border-radius
est maintenant définie dans la bibliothèquelib/web/css/source/lib/variables/_buttons.less
.border-radius
a une valeur par défaut de3px
. Auparavant,border-radius
était codé en dur. GitHub-28674
- Le bouton d’envoi de la recherche (loupe) dans le champ de recherche miniature est désormais désactivé jusqu’à ce que la longueur minimale de chaîne de recherche soit atteinte. GitHub-29704
- Le bouton Prévisualiser le modèle fonctionne désormais comme prévu dans la page Modifier la file d’attente.
- Réglage de la position du curseur du milieu au début du champ Message sur Mon compte > Registre des cadeaux > Partager le Registre des cadeaux.
- Les problèmes d’affichage liés à la disposition des colonnes sur la page Ajouter une exportation planifiée ont été résolus.
- L’application conserve désormais la valeur d’un attribut lorsque vous déplacez celui-ci d’un groupe à un autre.
- L’application affiche désormais une icône de calendrier en regard du champ de saisie Date comme prévu sur la page de création d’un compte de storefront.
- Ajout d’une variable d’épaisseur de police élevée à
lib/web/css/source/lib/variables/_typography.less
. GitHub-29778
- La visibilité des filtres fonctionne désormais avec la visibilité des colonnes telle qu’attendue dans les grilles d’administration. GitHub-30345
- La bannière que l’application affiche sur la page Connexion en tant qu’administrateur en tant que client reste désormais en haut de la page lorsque l’utilisateur la fait défiler. GitHub-29354
- Les options de sélection de composant de l’interface utilisateur ne sont plus visibles lorsque la
this.disabled(true)
est définie. GitHub-29098
- La variable
@font-family-name__base
n’est plus utilisée lors du chargement de la police Open Sans. GitHub-29515
- L’attribut WAI-ARIA
aria-atomic="true"
a été ajouté à la balise conteneur d’erreurs. GitHub-29560
- Les grilles des composants de l’interface utilisateur affichent désormais un nombre précis d’éléments sélectionnés. Auparavant, les grilles indiquaient un nombre erroné de sélections lorsqu’une recherche par mot-clé sélectionnait tous les éléments de la grille et que l’acheteur désélectionnait ensuite certains éléments avant de cocher la case d’en-tête. GitHub-29968
- L’application n’affiche plus les HTML non rendues sur les pages d’aperçu de facture et d’expédition. GitHub-29958
- Cliquez sur Options dans Admin Magasins > Taux de change pour diriger les utilisateurs vers la section des options de devise développée de la page Configuration du système. GitHub-29336
- Amélioration de la prise en charge de l’affichage d’un widget en fonction d’une autre condition pour les widgets
adminhtml
lors de l’utilisation d’un type de widget de sélecteur. GitHub-13316, GitHub-7252, GitHub-6868
- Amélioration de la marge intérieure du texte dans les boîtes de dialogue pop-up de confirmation dans le thème Luma. GitHub-30452
Coffre
- Le module
Vault
reconnaît désormais les codes de mode de paiement de la demande de service de gestion des informations de paiement. Auparavant, lorsqu’un acheteur passait une commande à l’aide d’une carte de crédit Braintree enregistrée, l’application générait cette erreur même lorsqu’un mode de paiement valide était utilisé :The requested Payment Method is not available
.
Vertex
-
Les suggestions d’adresses sont désormais supprimées comme prévu lorsqu’une adresse est modifiée.
-
Une condition de concurrence qui empêchait certains clients d’enregistrer leur adresse dans le panneau de leur compte a été résolue.
-
La validation des adresses de sommet n’ajoute plus la page Modification d’adresse au cache de pages complètes, sous certaines conditions.
-
La taxe calculée par sommet est désormais prise en compte lorsque la livraison gratuite est configurée pour un montant incluant la taxe.
Framework d’API web
- Vous pouvez désormais utiliser l’
V1/invoice/:invoiceId/refund
POST pour rembourser une facture qui ne comporte aucune quantité de produits ni aucun frais d’expédition (par exemple,{"items": [{"qty": 0, "orderItemId": 6, "extensionAttributes": {}}], "appendComment": false, "notify": true, "isOnline": true, "arguments": {"adjustment_negative": 0.0, "adjustment_positive": 0.99, "shipping_amount": 0}}.
). Auparavant, l’application générait cette erreur :You can't create a creditmemo without products
. GitHub-23069
- Vous pouvez désormais utiliser des
V1/categories
POST pour créer ou mettre à jour une catégorie. Auparavant, l’application n’enregistrait pas la valeur si la valeurdefault_sort_by
était définie sous la forme d’un tableau. Lorsque la valeurdefault_sort_by
a été définie sous la forme d’une chaîne, l’application a généré l’erreur suivante :Error occurred during \"custom_attributes\" processing. Attribute \"default_sort_by\" has invalid value. The \"string\" value's type is invalid. The \"string[]\" type was expected. Verify and try again.
- L’utilisation des
V1/invoices/:id/capture
POST pour capturer les informations de paiement fonctionne désormais comme prévu. Auparavant, l’application autorisait la commande, mais ne la capturait que sur le site de la passerelle de paiement.
- Lorsque vous utilisez des
V1/order/:orderId/ship
POST pour créer une expédition partielle, le point d'entrée renvoie le nombre correct de produits expédiés.
- Les factures créées à l'aide de l'
V1/order/:orderID/invoice
POST reflètent désormais précisément le paiement partiel par crédit de magasin. Auparavant, lorsqu’une commande était partiellement payée avec un crédit de magasin, la facture était créée sans prendre en compte le crédit de magasin.
- Les appels de
rest/all/V1/categories
GETrest/all/V1/categories?rootCategoryId=2
et GET renvoient désormais les champsname
etproduct_count
renseignés comme prévu pour toutes les catégories de l’arborescence. Auparavant, les valeurs des champs de catégorie étaient vides. Le plug-in de résolution de nom de table a renvoyé un nom de table incorrect pour récupérer le nombre de produits par catégorie.
- Le point d’entrée de
V1/categories/:id
PUT stocke désormais les données nécessaires à la création de redirections 301 pour les clés d’URL de catégorie lorsque l’attribut personnalisésave_rewrites_history
est fourni. GitHub-29174, GitHub-30240
Liste de souhaits
- Les acheteurs peuvent désormais ajouter un produit à une liste de souhaits lorsque le produit est affecté à une source d’inventaire personnalisée. GitHub-3018
- Les administrateurs peuvent désormais accéder à la page Gérer le panier à partir de la page Admin - Client une fois qu’un client a ajouté un produit à sa liste de souhaits à partir du storefront. Auparavant, l’application affichait l’erreur suivante lorsque l’administrateur cliquait sur le bouton Gérer le panier :
An error has occurred. See error log for details
.
- Le bouton Ajouter au panier de la page de liste de souhaits partagée fonctionne désormais comme prévu pour les utilisateurs anonymes, invités et non connectés.
- Les acheteurs peuvent désormais déplacer un produit d’une liste de souhaits à une autre.
- L’application affiche désormais les options d’attribut de produit configurables sélectionnées dans la page de liste de souhaits comme prévu. GitHub-24091, GitHub-22503
- Implémentation de
ActionInterface
pour\Magento\Wishlist\Controller\Shared\Allcart
. GitHub-29537
Problèmes connus
Problème : le fichier [magento_root]/index.php
a été supprimé et l’application s’exécute désormais à partir d’/pub
par défaut pour les configurations Apache. Les magasins diffusés à partir de sous-dossiers ne fonctionneront pas comme prévu et peuvent afficher des erreurs 404. Solution : utilisez des liens symboliques pour émuler l’installation dans des sous-dossiers. L’exemple suivant utilise deux magasins (https://shop01.com/shop/
et https://shop02.com/shop/
) pour illustrer comment utiliser un lien symbolique pour émuler une installation dans des sous-dossiers.
-
Créez un sous-répertoire pour
https://shop01.com/shop/
:code language-bash mkdir magento_root/pub/shop01
code language-bash cd magento_root/pub/shop01
-
Créez des liens symboliques pour les répertoires parents du magasin dans le répertoire nouvellement créé :
code language-bash ln -s ../media media
code language-bash ln -s ../static static
code language-bash ln -s ../../../pub pub
code language-bash ln -s ../.htaccess .htaccess
code language-bash ln -s ../health_check.php health_check.php
-
Créez un fichier
index.php
dans le nouveau répertoire (magento_root/pub/shop01/index.php
) et ajoutez le contenu suivant :
<?php
require realpath(__DIR__) . '/../../../app/bootstrap.php';
switch ($_SERVER['HTTP_HOST']) {
case 'shop01.com':
case 'www.shop01.com':
$params = $_SERVER;
$params[\Magento\Store\Model\StoreManager::PARAM_RUN_CODE] = 'shop01';
$params[\Magento\Store\Model\StoreManager::PARAM_RUN_TYPE] = 'website';
$bootstrap = \Magento\Framework\App\Bootstrap::create(BP, $params);
$app = $bootstrap->createApplication(\Magento\Framework\App\Http::class);
$bootstrap->run($app);
break;
default:
$bootstrap = \Magento\Framework\App\Bootstrap::create(BP, $_SERVER);
/** @var \Magento\Framework\App\Http $app */
$app = $bootstrap->createApplication(\Magento\Framework\App\Http::class);
$bootstrap->run($app);
break;
}
- Configurez votre serveur Apache pour qu’il pointe vers le nouveau sous-répertoire . Les configurations de déploiement peuvent varier considérablement. Voici un exemple de configuration de serveur :
<VirtualHost *:80>
DocumentRoot "magento_root/pub/shop1"
ServerName shop01.com
</VirtualHost>
Problème : les commerçants doivent activer la fonctionnalité Fastly Force TLS (Forcer rapidement le TLS) auprès de l’administrateur pour activer la redirection HTTP vers HTTPS globale pour toutes les pages du magasin. Consultez l’article de la base de connaissances Rediriger HTTP vers HTTPS pour toutes les pages sur le cloud (Forcer TLS).
Problème : vous ne pouvez pas utiliser la mutation addConfigurableProductToCart
GraphQL pour ajouter un produit configurable à un panier dans une vue de magasin autre que la vue par défaut dans un déploiement multi-magasin qui exécute Inventory. (Les storefronts de Luma ne sont pas affectés.) L’application affiche cette erreur : Could not add item to cart. Please check required options and try again
. Solution : utilisez plutôt la mutation addProductsToCart
. GitHub-31660
Problème : l’application n’envoie pas les informations de paiement comme prévu lorsqu’un acheteur saisit un code correct pour la première fois dans le champ CAPTCHA de la page Paiement, mais affiche cette erreur : There has been an error processing your request
. Cela se produit uniquement lorsque l’acheteur tente de passer la commande sans saisir le code CAPTCHA ou en le saisissant incorrectement. Solution : actualisez la page.
Problème : l’application crée une commande dans Braintree comme prévu lorsqu’un acheteur clique sur Payer avec Venmo, mais ne crée pas la commande dans l’administration. Solution : aucune. Voir l’article de la base de connaissances 2.4.2 problème connu : le paiement Braintree Venmo ne fonctionne pas
Problèmes connus B2B
Problème : les acheteurs B2B peuvent utiliser des méthodes de paiement en ligne pour contourner le flux habituel de bon de commande. Ce scénario peut se produire si l'acheteur peut réduire son total de passage en caisse à 0 (par exemple, par un code promotion ou une carte cadeau) et supprimer ensuite le code ou la carte cadeau. Même dans ces conditions, l’application passe toujours la commande pour le montant correct en fonction des prix des articles dans leur catalogue attribué. Solution : Désactivez les cartes-cadeaux et les codes coupon lorsque les modes de paiement en ligne sont activés pour l’approbation du bon de commande.
Problème : les acheteurs sont redirigés vers le panier lorsqu'ils tentent de passer une commande à partir d'une commande à l'aide de PayPal Express Checkout lorsque le mode contextuel est désactivé.
Problème : l’application affiche parfois une erreur 404 lorsqu’un acheteur crée une commande, puis accède à la page de passage en caisse. Cette erreur se produit lorsqu'un acheteur a précédemment créé une autre commande avec un mode de paiement en ligne avant de passer à la page de passage en caisse sans effectuer l'achat précédent. L'acheteur peut toujours passer la commande. Solution : aucune.
Problème : les remises accordées pour un mode de paiement spécifique persistent lors de la commande fournisseur, même lorsque l'acheteur modifie son mode de paiement lors de la commande finale. Par conséquent, les clients peuvent recevoir une remise à laquelle ils n’ont pas droit. Cela se produit, car une règle de panier pour le mode de paiement d’origine est toujours appliquée malgré le changement de mode de paiement. Solution : aucune. Consultez l’article de la base de connaissances 2.4.2 Problème connu B2B : la remise reste pour les commandes en ligne après le changement du mode de paiement
Problème : La requête deleteRequisitionListOutput
renvoie des détails sur la liste de demandes d'approvisionnement supprimée au lieu des autres.
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.2 à 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.