Notes de mise à jour d’Adobe Commerce 2.4.2

Adobe Commerce 2.4.2 comprend des améliorations des performances et de la sécurité ainsi que des améliorations importantes de la plateforme. Les améliorations de sécurité incluent l’extension de la prise en charge de l’attribut SameSite pour tous les cookies. Les améliorations B2B portent principalement sur la prise en charge des paiements en ligne pour les commandes d’achat. Elasticsearch 7.9.x et Redis 6.x sont désormais pris en charge.

Cette version comprend plus de 280 nouveaux correctifs pour le code principal et 35 améliorations de sécurité. Elle 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é corrigés dans cette version.

NOTE
Les versions d’Adobe Commerce peuvent contenir des modifications incompatibles avec l’arrière-plan (BIC). Pour passer en revue les modifications incompatibles avec l’arrière-plan, voir Référence BIC. Les problèmes majeurs d’compatibilité descendante sont décrits dans la section Mise en évidence BIC. Toutes les versions n’introduisent pas de code BIC majeur.

Appliquez AC-3022.patch pour continuer à proposer DHL comme opérateur de transport

DHL a introduit la version 6.2 du schéma et va abandonner 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 versions doivent appliquer AC-3022.patch dès que possible pour continuer à proposer DHL en tant qu'opérateur de transport. Pour plus d’informations sur le téléchargement et l’installation du correctif, reportez-vous à l’article Appliquer un correctif pour continuer à proposer DHL comme opérateur de transport de la base de connaissances.

Correctif de sécurité disponible

Les vendeurs peuvent désormais installer des correctifs de sécurité sensibles au temps sans appliquer les centaines de correctifs fonctionnels et d’améliorations fournis par une version trimestrielle complète (par exemple, 2.4.1-p1). Le correctif 2.4.0.12 (package du compositeur 2.4.1-p1) est un correctif de sécurité qui fournit des correctifs pour les vulnérabilités identifiées dans notre version trimestrielle précédente, 2.4.1. Tous les correctifs qui ont été appliqués à la version 2.4.1 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 bogue spécifique.)

Pour obtenir des informations générales sur les correctifs de sécurité, voir Présentation de la nouvelle version du correctif 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), reportez-vous à la section Installation sur site rapide. 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 Application (PWA) Studio) sont également publiés indépendamment. Les correctifs de bogues pour ces projets sont documentés dans les informations de mise à jour distinctes et spécifiques au projet disponibles dans la documentation de chaque projet.

Tons clairs

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 à 2.4.1-p1 et 2.3.6-p1.

Plus de 35 améliorations de sécurité qui permettent de fermer les vulnérabilités d’exécution de code distant (RCE) et de script de site à site (XSS)

Aucune attaque confirmée liée à ces problèmes n'a été survenue à ce jour. Cependant, certaines vulnérabilités peuvent être exploitées pour accéder aux informations sur les clients ou prendre le contrôle des sessions d’administrateur. La plupart de ces problèmes nécessitent qu’un attaquant obtienne d’abord l’accès à l’administrateur. 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, les efforts suivants : placé sur la liste autorisée IP, authentification à deux facteurs, utilisation d’un VPN, utilisation d’un emplacement unique plutôt que /admin, et bonne hygiène du mot de passe. Consultez le Bulletin de sécurité des Adobes pour une discussion sur ces problèmes résolus.

Améliorations supplémentaires de la sécurité

Les améliorations de sécurité pour 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 un contenu potentiellement malveillant dans les champs de description de produit et de catégorie lorsque l’utilisateur 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 afin d’éviter les chargements malveillants.

  • Les violations de la stratégie de sécurité du contenu principal (CSP) ont été corrigées.

NOTE
À compter de la version 2.3.2, nous assignerons et publierons des numéros CVE (Vulnérabilités et expositions courantes indexées) avec chaque bogue de sécurité signalé par des tiers externes. Cela permet aux utilisateurs d’identifier plus facilement les vulnérabilités non corrigées dans leur déploiement. Vous pouvez en savoir plus sur les identifiants CVE à l’adresse CVE.

Améliorations des infrastructures

Cette version contient des améliorations de la qualité de base, 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 Aperçu.

Améliorations de la plateforme

  • Elasticsearch 7.9.x est désormais pris en charge. Bien que nous recommandions d’exécuter Elasticsearch 7.9.x, la version 2.4.x reste compatible avec Elasticsearch 7.4.x.

  • La version 2.4.2 a été testée 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 le compositeur 2.x. Bien que vous puissiez installer cette version à l’aide du compositeur 1.x, le compositeur 1.x atteindra bientôt la fin de vie. Pour un aperçu des fonctionnalités du compositeur 2.x, voir Composer 2.0 est désormais disponible !

La possibilité de configurer une installation pour utiliser une base de données partagée est désormais obsolète dans cette version. Les commerçants qui utilisent actuellement une base de données partagée doivent commencer à planifier la restauration ou la migration vers une base de données unique ou utiliser une autre approche. Consultez la publication DevBlog Abandon de la fonctionnalité de base de données partagée dans Adobe Commerce pour un aperçu de ce problème. Pour obtenir des instructions de migration, reportez-vous à la section Rétablissement d’une base de données partagée vers une base de données unique .

Améliorations des performances

Cette version comprend des améliorations du code qui améliorent les performances de l’API et le temps de réponse de l’administrateur pour les déploiements avec des catalogues volumineux. Plusieurs améliorations de l’é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 la 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 listes de souhaits, ainsi que pour déplacer ou copier éléments entre eux.

  • Ajout de la prise en charge des autorisations de marchandisage renvoyées (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 :

  • Prise en charge des unions dans GraphQL. GitHub-29425

  • Ajout de la prise en charge des listes de comparaison. Les acheteurs peuvent créer et supprimer listes de comparaison, et ajouter et supprimer éléments dans les listes de comparaison. En outre, les acheteurs qui créent une liste de comparaison en tant qu’invités peuvent se connecter en tant que client et conserver leurs listes de comparaison.

  • Ajout de la mutation generateCustomerTokenAsAdmin et mise à jour de l’objet Customer pour prendre en charge l’assistance à l’achat à distance.

  • Ajout de la prise en charge 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 identifiants d'objet de type entier ont été abandonnés au profit des attributs uid de type ID.

  • Ajout de l’attribut staging à ProductInterface et CategoryInterface pour déterminer si un produit est en évaluation et afficher ses informations de campagne associées.

Pour plus d’informations sur ces améliorations, consultez le Guide du développeur de GraphQL .

B2B

2.4.2 introduit B2B v1.3.1. Cette version comprend la prise en charge des paiements en ligne pour les commandes d’achat ainsi que plusieurs correctifs.

Les commandes peuvent désormais être effectuées à l’aide de méthodes de paiement en ligne. Les acheteurs B2B sont invités à sélectionner leur mode de paiement préféré pour chaque commande au cours du passage en caisse initial. Une fois la commande approuvée, les acheteurs sont invités à saisir les détails du paiement pour convertir la commande en commande finale.

Pour prendre en charge un processus complet d’acceptation des paiements en ligne, cette fonctionnalité permet également :

  • Remplace les modèles de méthode 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 courrier électronique lorsqu’ils doivent ajouter des détails de paiement à une commande approuvée.

  • Permet de personnaliser les emails de l’administrateur, ce qui permet aux commerçants d’utiliser des modèles cohérents avec leur marque.

  • Introduit un état Approved – Pending Payment pour que les commandes d’achat indiquent clairement quand une action est requise.

  • Empêche l’ajout ou la suppression des codes de remise à l’étape de paiement finale, ce qui garantit que le montant total de la commande reste inchangé pour les commandes approuvées.

  • Permet aux acheteurs de modifier le mode de paiement lors de l’étape de paiement finale afin de conserver une certaine souplesse et d’augmenter la conversion.

Cette version comprend également plusieurs correctifs de bogues. Voir les notes de mise à jour B2B.

PWA Studio

Cette version de PWA Studio inclut :

  • Internationalisation et localisation. Venia prend désormais en charge plusieurs langues et devises.

  • Amélioration de la structure d’extensibilité pour la prise en charge des modifications de code par le biais d’extensions.

  • Composants initiaux pour les fonctionnalités liées à Mon compte, telles que Liste blanche, Paiements enregistrés, Carnet d’adresses et Historique des commandes.

  • Diverses optimisations de performances et corrections de bogues.

Pour plus d’informations sur les améliorations et les correctifs, voir Versions de PWA Studio. Voir 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 de contenu du Créateur de pages et de la personnalisation CSS du Créateur de pages :

  • Les développeurs peuvent désormais mettre en forme différemment la sortie de type de contenu par fenêtre d’affichage sans utiliser la directive !important.

  • Le contenu migré vers le Créateur de pages n’est plus ajouté avec la mise en forme intégrée par défaut.

  • Le Créateur de pages n’a plus besoin de placer tous les types de contenu dans une ligne. L’ étape du créateur de pages est maintenant initialement vide et prend en charge l’ajout direct des types de contenu suivants à l’étape : lignes, colonnes, onglets, code d’HTML, blocs, blocs dynamiques.

  • Les marges et les plages prédéfinies ne sont plus nécessaires pour les types de contenu.

  • Le nouveau sélecteur de fenêtre d’affichage mobile et la portée de fenêtre d’affichage pour les valeurs de champ de formulaire permettent aux utilisateurs et aux développeurs d’effectuer les actions suivantes :

    • Afficher 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 min.) est pris en charge prêt à l’emploi. Développement personnalisé nécessaire pour activer l’optimisation mobile pour d’autres paramètres de contenu.)

    • Ajoutez la portée du champ aux champs personnalisés et aux ensembles de champs (développeurs).

Conseils interactifs intégrés au produit

Les conseils intégrés interactifs aux produits fournissent aux marchands des conseils d’utilisation et des informations sur les nouvelles annonces de fonctionnalités, des guides de présentation, des informations d’intégration et des info-bulles à l’intention des administrateurs. Les administrateurs doivent souscrire à l’Admin 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 de l’administrateur.

Intégration Adobe Stock

Cette version inclut l’intégration Adobe Stock v2.1.1.

Galerie de médias

Nouvelles ressources de rôle pour la galerie multimédia. Cette version permet aux commerçants de limiter l’accès administrateur uniquement à la galerie de médias et de contrôler qui peut effectuer ces actions :

  • Insérer des ressources multimédias dans du contenu

  • Chargement de ressources

  • Modification des détails des ressources

  • Suppression de ressources de la galerie de médias

  • Gestion de la structure de dossiers.

Images optimisées pour le web dans le contenu. Les vendeurs 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 multimédia 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 la prise en charge des éléments suivants :

La prise en charge d’AWS S3 a été ajoutée à tous les modules, y compris l’intégration B2B, PageBuilder et Adobe Stock.

Structure de test fonctionnel (MFTF)

MFTF 3.2.1 est désormais disponible. Cette version introduit la tolérance aux erreurs dans les tests et la génération de suites de tests. D’autres améliorations et correctifs sont décrits dans la Modification de la structure de test fonctionnel.

Système Order Management (OMS)

Le connecteur MCOM est entièrement compatible avec la version 2.4.2. Les correctifs de bogues et les améliorations du connecteur sont décrits dans les Notes de mise à jour pour Connector. Cette version comprend des améliorations de l’interface de ligne de commande 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 connaître les mises à jour des fonctionnalités et des modifications de cette version :

Problèmes résolus

Nous avons corrigé des centaines de problèmes dans le code principal 2.4.2.

Installation, mise à niveau, déploiement

  • 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 renvoyait une exception lorsque les valeurs AUTO_INCREMENT revenaient aux valeurs initiales de 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 utilisé pour créer le correctif en cas d’erreur lors de l’exécution de bin/magento/setup:db:generate-patch. GitHub-27523
  • Les caches block_html, full_page et layout sont désormais désactivés comme prévu après l’exécution de bin/magento/setup:upgrade. GitHub-28186
  • La version minimale requise de PHP dans bootstrap.php a été mise à jour. GitHub-30004
  • Vous pouvez désormais exécuter bin/magento/setup:upgrade après l’installation des exemples de données. Auparavant, lorsque vous tentiez d’exécuter bin/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 maintenant définir une clé d’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 honore désormais les valeurs maxMessages définies dans queue_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 à une base de données existante : Overwrite the existing configuration for db-ssl-verify?[Y/n]. GitHub-29612

AdminGWS

  • Le bouton Ajouter une nouvelle notation et les boutons Enregistrer, Supprimer, Réinitialiser ne sont plus disponibles sur la page Magasins > Attribut > Évaluation pour un administrateur disposant d’autorisations limitées.
  • L’administrateur affiche désormais uniquement les données des sites Web auxquels l’administrateur connecté est autorisé à accéder. Auparavant, l’administrateur affichait les données de tous les sites web du déploiement.
  • Tous les sites web sélectionnés sont désormais stockés dans gws_websites, quelle que soit la taille de l’ID de site web. Auparavant, les ID 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’étaient pas 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 d’éléments correct dans les grilles d’administration pour les utilisateurs administrateurs à accès limité. Auparavant, le nombre affiché pour ces grilles reflétait les données de tous les pays, tandis que les grilles elles-mêmes affichaient les données de pays spécifiques uniquement. (Ce correctif corrige un problème lié aux segments des clients, aux règles de prix du catalogue, aux règles de prix du panier, à tous les utilisateurs, aux utilisateurs verrouillés et aux grilles de 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 portant 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 Attribute Set ou Customer.
  • L’application ne renvoie plus d’erreur lorsque vous essayez de modifier backend-frontname à l’aide du conteneur ssh après l’installation d’Adobe Commerce. GitHub-26762

Intégration Adobe Stock

  • Ajout de la prise en charge de la lecture des métadonnées exif_image.png ou exif-image.jpeg. GitHub-1449
  • Le contenu affiché lorsque vous cliquez sur le signet Vue par défaut pour la galerie multimédia n’est plus filtré. Auparavant, la vue par défaut contenait un filtre appliqué à partir de l’application url-filter. GitHub-1813, GitHub-1789, GitHub-1780
  • La logique a été supprimée du contrôleur WYSIWYG OnInsert (Magento\Cms\Controller\Adminhtml\Wysiwyg\Images\OnInsert::execute()) et ajoutée au modèle Model\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 du 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 que d’un autre guillemet double, comme l’exige 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 non par défaut pour se connecter à MySQL dans env.php. Auparavant, analytics_collect_data renvoyait 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 placés dans une séquence d’échappement. 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 la fonction Payer d’Apple 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 PayPal Express Checkout fonctionne désormais comme prévu avec le mode de paiement Carte de crédit Braintree. Auparavant, l’application n’affichait pas le bouton PayPal lorsque le mode de paiement Carte de crédit du Braintree était activé.

Lot de produits

  • L’application ne définit plus les prix des articles enfants à prix fixe groupés.
  • Le tri des prix fonctionne désormais comme prévu lorsque les produits en bundle incluent des produits en rupture de stock. Auparavant, le tri des prix 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é lorsqu’il existe de nombreuses options. Auparavant, les marchands devaient affecter manuellement une quantité par défaut à chaque option.
  • La page de création de la facture de commande affiche désormais les produits enfants pour les produits regroupés comme prévu. GitHub-27350
  • L’application attribue désormais les prix corrects des produits lorsque vous réorganisez des produits simples qui font partie d’un produit groupé avec un prix personnalisé. Auparavant, la définition d’un prix personnalisé sur un produit groupé générait des prix incorrects sur les produits simples joints lors de la réorganisation. GitHub-30343
  • L’appel du POST /V1/order/{orderId}/ship pour expédier une commande contenant un produit groupé marque désormais la commande comme prévu. Auparavant, l’application affichait ce message d’erreur : You can't create a shipment without products. GitHub-9762

Panier et passage 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 ce message d’erreur : {"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 checkout/cart/removeFailed lorsqu’un acheteur supprimait l’élément unique et que l’application affichait ce message : 1 product requires your attention.
  • L’application n’affiche plus le coût de livraison d’une commande pour un mode de livraison non applicable. Auparavant, l’application affichait un prix de 0 pour un mode de livraison 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 Mon adresse de facturation et de livraison est la même du workflow de passage en caisse est désélectionnée.
  • Les administrateurs peuvent ajouter un produit à un panier par SKU depuis l’administrateur sans être redirigés hors de l’administrateur. L’administrateur n’est plus redirigé vers une page de storefront et l’application affiche le produit dans la section Éléments du panier d’administration 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 sur Gérer le panier > Ajouter au panier par 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 de livraison. 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 de magasin à partir du panier.
  • L’application exclut désormais la session en cours lors du nettoyage des sessions clients après la réinitialisation d’un mot de passe post-déconnexion lorsqu’un acheteur 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 de magasin dans le panier. Auparavant, lorsque la vue du magasin était modifiée 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 au point d’entrée /rest/V1/guest-carts/cart_id/totals-information du panier ont été supprimés, ce qui a amélioré les performances du panier. Auparavant, lorsqu’un acheteur ajoutait un produit au panier, puis consultait ensuite le panier, l’application appelait la méthode collectAddressTotals plusieurs fois.
  • L’application n’affiche plus le champ Région d’un pays dans le processus de passage en caisse lorsque le paramètre Autoriser à choisir un état s’il est facultatif pour le pays est désactivé. GitHub-30747
  • L’application ne répète plus d’adresse de livraison dans le workflow de passage en caisse du storefront lorsqu’une commande est récommandée à partir de l’administrateur.
  • Correction de problèmes liés à la conception de AdminMediaGalleryInsertLargeImageFileSizeTest.
  • Pour les invités, la valeur 1 est désormais affectée à tous les nouveaux enregistrements de la table quote. customer_is_guest field Auparavant, pour chaque nouvel invité qui ajoutait un produit dans le 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 l’intérieur de <form id="purchaseorder-form"...></form>, ce qui rend possible l’envoi implicite de formulaire sans modifier aucun JavaScript. GitHub-27925
  • L’application n’affiche plus le champ Région dans le processus 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 des éléments d’un panier lorsqu’un acheteur clique sur Mettre à jour le panier lors de l’extraction avec plusieurs adresses. GitHub-30408
  • L’application ne renvoie plus d’exception lorsque des noeuds config.xml existent pour les méthodes de paiement qui ne sont pas actuellement installées. Auparavant, l’application envoyait 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 package de remise approprié pour le taux de la table. Auparavant, l’application n’appliquait pas de règle de panier définissant une remise sur le panier lors du calcul du taux tabulaire. 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 des commandes sont calculés sans tenir compte des taxes. 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 utilisant GraphQL fonctionne désormais comme prévu lorsque l’action Remise sur le montant fixe pour le panier entier 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 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 de storefront lors de la réindexation avec l’indexeur partiel catalogsearch_fulltext.
  • Les acheteurs peuvent désormais réorganiser une commande facturée d’un produit avec des options personnalisables comme prévu. Auparavant, l’application renvoyait cette erreur lorsqu’un acheteur tentait de réorganiser : {"0":"The product's required option(s) weren't entered. Make sure the options are entered and try again.
  • Vous pouvez maintenant définir avec succès le paramètre Mise en page de la page Conception de catégorie sur Aucune mise à jour de mise en page. Auparavant, l’application était rétablie sur Category - FullWidth lorsque vous aviez affecté la valeur Aucune mise à jour de mise en page.
  • 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 les min_price et max_price d’un produit configurable sur 0 dans la table catalog_product_index_price, ce qui affectait l’ordre de tri des prix sur le storefront.
  • L’application met désormais à jour avec succès les attributs étiquetés Product Type. Auparavant, comme l’attribut product_type était réservé dans le code, l’application affichait ce message lorsque vous tentiez de mettre à jour un attribut Product Type : An attribute with the same code (product_type) already exists.
  • L’application ne modifie plus la position d’une vidéo téléchargée dans la section Images et vidéos de la page des détails du produit lorsque vous enregistrez le produit. Auparavant, une valeur d’index (position dans la liste) était affectée à la nouvelle position de l’image. Si les positions d’image existantes n’étaient pas alignées sur leurs valeurs d’index, la nouvelle image était mal placée dans la liste.
  • La fonctionnalité Ajouter au panier fonctionne désormais comme prévu chaque fois que le bouton Ajouter au panier est disponible en cliquant. Auparavant, si vous cliquiez plusieurs fois sur ce bouton en attendant le chargement d’une page de produit, l’application générait cette erreur : 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 dans ou depuis une catégorie. Auparavant, l’application purgeait le cache des catégories connexes, en dépit de l’état du produit. Les catégories n’étaient pas non plus affectées 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 magasin fonctionne désormais correctement. Auparavant, les produits dont l’état était Enabled ou Disabled s’affichaient dans la grille tout en filtrant uniquement les produits activés ou désactivés.
  • La réindexation partielle ne génère plus de produits manqués 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 placée à partir 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 du niveau.
  • Les attributs personnalisés d’image de produit sont désormais correctement précédés d’une séquence d’échappement. L’attribut data-src a la même valeur que l’attribut src, comme prévu. Auparavant, les symboles spéciaux d’URL étaient placés dans une séquence d’échappement.
  • La mise à jour d’une catégorie via l’API REST ne désactive plus le paramètre Utiliser la valeur par défaut sur les attributs Activer la catégorie, Inclure dans le menu et Clé URL.
  • L’activation des autorisations de catégorie à partir de l’administrateur n’entraîne plus l’échec de la mise en cache des pages de catégorie dans le cache de la page entière lors des visites répétées sur la page de catégorie. Auparavant, les visites suivantes sur la page n’étaient pas diffusées à partir du cache comme prévu et les performances étaient dégradées.
  • L’enregistrement d’une catégorie vide désormais uniquement le cache de bloc associé à cette catégorie. Auparavant, l’application purgeait 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 de la boutique active dans les déploiements multi-magasin. Auparavant, le prix d’une option personnalisée avec un prix en pourcentage était converti incorrectement. GitHub-26432
  • L’application recrée désormais les images avec succès et ces images sont visibles dans l’administrateur comme prévu chaque fois qu’un commerçant envoie des données de galerie multimédia à l’aide du POST rest/all/V1/products. Auparavant, l’application recréait les images, mais les supprimait lorsqu’un commerçant envoyait des données de galerie de médias par l’intermédiaire du POST rest/all/V1/products si les images étaient supprimées dans pub/media, mais que des enregistrements dans le média contenaient toujours des enregistrements pour ces images. Par conséquent, le marchand n’a vu que des 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’attribution d’un élément à un site web. Auparavant, les images étaient dupliquées lorsque le POST rest/all/V1/products était exécuté.
  • L’appel /V1/categories/{categoryId}/products renvoie désormais une liste de tous les produits qui appartiennent à la catégorie parent 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 de la boutique active dans les déploiements multi-magasin. Auparavant, le prix d’une option personnalisée avec un prix en pourcentage était converti incorrectement. GitHub-26432
  • Les vendeurs 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 de la vue de magasin lorsqu’il tentait d’enregistrer l’attribut. GitHub-30362
  • Les grilles de produits sur les pages Sales > Commandes et Catalogue > Products répertorient désormais tous les magasins pertinents, et pas seulement le dernier magasin 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 boutique de produits et se voyait toujours attribuer l’ID de boutique par défaut. GitHub-29933

Règle de catalogue

  • Les règles de prix du catalogue fonctionnent désormais comme prévu avec les options personnalisées sur les pages Détails du produit. Auparavant, les prix des produits sur cette page ne reflétaient pas les règles de prix du catalogue applicables. GitHub-22856
  • Les caches de produit et de catalogue expirent désormais comme prévu. Auparavant, les caches expiraient tous les jours car сron exécutait la tâche catalogrule_apply_all une fois par jour, ce qui réindexait toutes les règles de catalogue et les indexeurs dépendants, et effacait le cache de tous les produits et catégories.

Nettoyage

Nettoyage des caractères et de la grammaire

  • Le titre de la page Echec de la commande a été modifié pour garantir la précision. Auparavant, cette page était intitulée : 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 pour la sous-commande bin/magento/setup:config:set. GitHub-28802
  • Correction de la grammaire dans le PHPDoc pour le fichier framework/Registry.php. GitHub-29661
  • Suppression d’un espace blanc superflu de app/code/Magento/Catalog/Helper/Product/View.php. GitHub-30601
  • Correction d’une faute de frappe dans un nom de fonction dans app/code/Magento/Ui/view/base/web/js/form/element/ui-select.js. GitHub-29987
  • Correction de la pluralisation de "l’article" dans le mini panier et la synthèse des commandes de passage en caisse. GitHub-29920
  • Suppression de l’espace blanc dans les éléments insérés dans les filtres de navigation superposés aux balises. GitHub-30448
  • rl a été corrigé sur url dans \Magento\Framework\Filter\Template\Tokenizer\Parameter. GitHub-29185

Nettoyage du code

  • Une balise d'HTML <br> superflue a été supprimée de la zone de message Check Data de la page System > Import .
  • 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 des boutons sur la page Nouvel attribut .
  • Ajout de la classe block correcte pour l’exemple de référence frontend viewModel pour la classe \Magento\Framework\View\Element\Template. GitHub-30450
  • Un jeu de champs redondant dans le formulaire Règle de vente a été supprimé. GitHub-29599
  • Le code superflu a été supprimé du modèle hierarchy/edit.phtml.
  • Correction du commentaire PHPdoc dans app/code/Magento/CatalogImportExport/Model/Export/Product.php. GitHub-30833
  • L’annotation docblock pour le message PublisherInterface a été corrigée. GitHub-30190
  • Correction des arguments 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 dans la même ligne dans plusieurs fichiers. GitHub-30133
  • @param string $attribute remplacé par @param AbstractAttribute|string[]|string $attribute dans EntityAbstract.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 correcte.
  • Un produit virtuel ne change plus de type lorsque son état passe de activé à désactivé (ou vice versa). Auparavant, l’application changeait 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 les produits enfants simples qui ne sont pas attribués à un site web spécifique. GitHub-28291
  • Les pages de produits Storefront affichent désormais les prix des niveaux sans taxes comme prévu. GitHub-12225
  • Les prix MSRP des produits configurables sont désormais correctement convertis dans la devise choisie. Auparavant, l’application affichait les prix dans la mauvaise devise et envoyait cette erreur : Call to a member function setAppliedTaxes() on null. GitHub-26526, GitHub-29603
  • Les vendeurs peuvent désormais enregistrer une étiquette 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é de l’administrateur . 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 avec précision les mises à jour de produit après l’exécution de cron et la mise à jour de l’application des produits comme prévu.
  • Un index basé sur schedule_id et status a été ajouté à la table cron_schedule. GitHub-29601

Attributs du client personnalisés

  • L’application affiche désormais les attributs du client de type file sur la page Informations du compte après sa 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 et Validation is failed.
  • L’application affiche désormais correctement les valeurs d’attributs du client multilignes. 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 à sélection multiple d’adresses personnalisées s’affichent désormais correctement lors du passage en caisse de l’invité et sur la page de détails des commandes Admin et Mon 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 de début dans un attribut client personnalisé lorsque Input Type est défini sur Text et Input Validation sur Numeric Only.
  • L’application exporte désormais avec succès les données client qui incluent une valeur d’attribut gender personnalisée.
  • L’application enregistre désormais les valeurs d’attributs du client personnalisées pour les utilisateurs B2B comme prévu. Auparavant, les attributs client personnalisés créés pour ajouter ou modifier des utilisateurs de la société 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 forme de chaîne et n’a pas été converti au format de date approprié pour l’affichage du storefront.

Client

  • Le widget Calendrier pour le champ de date de naissance de la page du compte client storefront utilise désormais les paramètres régionaux de magasin désignés.
  • L’application n’enregistre plus les entrées en double d’une adresse client lors de l’extraction d’une commande de nouveau pour un client existant auprès de l’administrateur.
  • La suppression de toutes les adresses de plusieurs clients de l’administrateur supprime désormais toutes les adresses de la liste des adresses client et supprime les adresses de facturation et de livraison 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 de livraison par défaut.
  • L’onglet Admin adresse du client affiche désormais correctement le nombre d’adresses après qu’un administrateur a effectué une suppression en masse des adresses. Auparavant, l’application incluait les adresses supprimées dans son décompte.
  • Le format DateTime du champ Date of birth (Date de naissance) sur la page d’enregistrement du client a été corrigé. Auparavant, le zéro de début qui précède un jour à un seul chiffre était manquant.
  • La validation du format de date pour le champ Date of birth (Date de naissance) fonctionne maintenant 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 génère 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 tente d’accéder à son panier dans un déploiement où Magento Shipping a été précédemment installé et où le thème par défaut Luma est actuellement déployé. Auparavant, l’application ne filtrait pas les noms de section créés par des modules précédemment installés/activés qui n’étaient pas pris en charge dans l’administrateur avant d’envoyer des 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 Confirmation de l’exigence des emails est activé et Magento\Customer\Controller\Account\CreatePost a été remplacé. Auparavant, l’application n’autorisait pas ce type de personnalisation du processus d’enregistrement des utilisateurs. Dans ces conditions, l’état de confirmation par e-mail d’un utilisateur était considéré comme terminé, le nouvel utilisateur était automatiquement connecté et aucun message d’erreur n’était affiché.
  • L’application affecte désormais un acheteur au groupe de clients correct lorsque l’acheteur passe une commande avec un groupe de clients autre que par défaut dans un magasin où l’option Activer l’affectation automatique au groupe de clients est activée. GitHub-26976
  • La grille Admin Clients est désormais disponible comme prévu lorsque le site web non par défaut est supprimé dans un déploiement multisite lorsque les index sont définis sur Mettre à jour par planification. Auparavant, l’application n’affichait pas la grille et renvoyait 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 des listes de programmes à partir de dotdigital Engagement Cloud.

  • La valeur synchronisée dans la colonne nom de magasin lors de la synchronisation des invités est désormais le nom de vue de magasin comme prévu. Auparavant, le nom du site Web était inclus dans cette colonne.

  • Ajout d’une vérification de tableau avant la boucle sur les automatisations d’état de commande après l’enregistrement d’une commande.

  • Résolution de problèmes liés aux mises à niveau du compositeur résultant 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 de téléchargement 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 avoir supprimé le segment client associé au bloc.
  • L'application prend désormais correctement en compte les règles de prix du catalogue lors de la détermination de l'affichage ou non d'un bloc dynamique.

EAV

  • 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 un appel API.

Email

  • \Magento\Config\Model\Config\Source\Email\Template::toOptionArray ne renvoie plus d’erreur lorsque setPath() n’est pas appelé avant toOptionArray(). GitHub-29315
  • L’application convertit désormais correctement le texte brut en HTML lorsque vous cliquez sur Renvoyer la version Html lors du chargement d’un modèle de courrier électronique.
  • Les courriers électroniques envoyés aux clients qui contiennent des factures partielles incluent désormais des sous-totaux exacts. Auparavant, le sous-total de cet email é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 à tous les clients concernés avec des adresses électroniques valides. Auparavant, l’application arrêtait d’envoyer des emails de rappel aux clients après avoir rencontré une adresse incorrecte.
  • L’envoi d’emails 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’emails é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 un client dans l’email de confirmation de commande lorsque sales_email/order_comment/enabled est désactivé et sales_email/order_comment/copy_method est défini sur bcc. GitHub-29915

Frameworks

  • Les groupes de filtres personnalisés sont désormais correctement appliqués lors de la recherche sur les clients. Auparavant, la fonction afterSearch n’utilisait pas les filtres OU comme prévu. GitHub-24576
  • Les images de la page d’accueil d’un magasin sont désormais affichées avec succès. Auparavant, l’HTML source de la page était corrompu, car les trois barres obliques consécutives du code base64 de l’image étaient mal interprétées comme un commentaire.
  • Le sélecteur de date fonctionne désormais correctement lors du filtrage des commandes sur la liste Commandes d’administration dans les magasins utilisant la langue arabe (ar_SA - Saudi Arabia).
  • Le sélecteur de date affiche désormais la date correcte après l’enregistrement d’une règle de prix de panier dans un déploiement. GitHub-30382
  • L’application représente désormais correctement les symboles de regroupement des milliers en arabe et de séparateur décimal en arabe. Auparavant, les symboles arabes étaient supprimés. GitHub-26676
  • L’application supprime désormais les sessions de base de données expirées de la table de base de données session comme prévu.

Correctifs généraux

  • Vous pouvez désormais configurer un gestionnaire de session natif différent du gestionnaire défini dans php.ini. Auparavant, SessionManager ne définissait pas le memcache comme save_handler, mais utilisait à la place le session_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 module externe around par after

    • Suppression du code redondant

    • (bool)->getValue() remplacé par isSetFlag. GitHub-29689

  • Le rechargement de toutes les sections de données client par un caractère générique (*) n’entraîne plus la génération d’une erreur 400 par les demandes vers customer/section/load. 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 vue de magasin. La méthode \Magento\VersionsCmsUrlRewrite\Model\StoreSwitcher::switch() redirige désormais les acheteurs vers la page d’accueil uniquement lorsque $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 la réinitialisation d’un 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 téléchargement d’un fichier contenant cette valeur d’attribut. Auparavant, l’application entraînait une erreur fatale. GitHub-30295
  • L’application applique désormais le paramètre de configuration Logo pour la vue d’impression d’HTML aux PDF de facture storefront comme prévu. GitHub-24730
  • static:: a été remplacé par self:: dans toute la base de code pour accéder 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 renvoyait 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 attribuer 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 d’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 vous 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 commande lorsque l’adresse du magasin et la destination d’expédition appartiennent à différents pays de l’UE. GitHub-29652
  • La classe \Magento\Catalog\Model\ImageUploader a été restructurée pour utiliser la nouvelle méthode moveFileFromTmp. 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 les codes product_type et type_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) sur la page Magasins > Configurations > Services > OAuth de l’administrateur. GitHub-29502
  • L’application analyse désormais correctement le texte qui contient }} dans le champ de contenu du widget. GitHub-12087
  • Vous pouvez désormais supprimer un filtre de la page Catégories de produits . Auparavant, lorsque vous tentiez de supprimer le filtre, l’application ne vous permettait pas de le supprimer et affichait cette erreur : Something went wrong. GitHub-8538
  • Magento\Framework\MessageQueue\ConfigInterface peut désormais être instancié lorsque le module facultatif Magento_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 quand l’application peut récupérer la valeur de courrier électronique à partir d’un 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é retournait à la page de passage en caisse après avoir rempli le champ de courrier électronique pour la première fois. GitHub-26903
  • Un attribut aclResource manquant a été ajouté au bloc de barre d’outils de l’en-tête d’administration AdminNotification. Auparavant, l’entrée de la barre d’outils de notification d’administrateur était visible même lorsque l’utilisateur administrateur ne disposait pas des autorisations de ressources de rôle pour l’afficher. GitHub-29067
  • Les fonctions framework/database/select where gèrent désormais correctement type. GitHub-29590
  • L’utilisation inefficace de array_merge dans les boucles a été améliorée dans tout le code base, 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 par défaut de la session d’administrateur a été déplacée du module de chiffrement vers le module de sécurité. GitHub-30859
  • L’application recherche désormais des constantes privées dans une classe et affiche un avertissement s’il y a des appels static:: à ces constantes. Auparavant, l’application générait cette erreur : Undefined class constant.
  • Ajout de règles à editorconfig pour prendre en charge l’indentation de deux espaces des fichiers JSON et YAML. GitHub-30066, GitHub-30063
  • La classe FlushCacheByTags a été mise à jour afin d’utiliser des plug-ins supplémentaires plutôt que des plug-ins de contournement. GitHub-29558
  • MessageValidator n’échoue plus sur les tableaux de hachage qui n’incluent pas d’élément 0. GitHub-30563
  • Le code du fichier checkout_index_index.xml a été amélioré par la suppression des composants sortOrder de messages, authentication, progressBar, estimation et sidebar checkout. GitHub-30550
  • Le contenu de calc est désormais placé dans une séquence d’échappement, ce qui entraîne des valeurs calc correctes dans le fichier de sortie CSS. Auparavant, l’application renvoyait une valeur calc incorrecte. GitHub-30542
  • Le générateur de réécriture d’URL définit désormais l’objet de catégorie url_key, url_path et store_id 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 enregistrait url_key, url_path et store_id avec les valeurs du dernier identifiant de magasin traité. GitHub-29585
  • \Magento\Widget\Controller\Adminhtml\Widget\Instance\Validate reconnaît désormais une valeur de résultat d’expression comme message d’erreur et la transfère à l’utilisateur 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 d’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 vernis. GitHub-29988
  • Ajout d’un rappel d’échec au téléchargeur de fichiers Magento_Ui. GitHub-29557
  • Une incohérence acl.xml survenue lorsque Magento_LoginAsCustomerAssistance a été activé mais que Magento_LoginAsCustomerAdminUi ou Magento_LoginAsCustomerLog étaient désactivés a été corrigée. Auparavant, lorsque l’administrateur avec ces informations d’identification tentait de se connecter à l’administrateur, l’application affichait une page vierge et renvoyait 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 Undefined class constant lorsqu’un Interceptor est généré lors de la création du module externe. GitHub-28981, GitHub-29879
  • L’application gère désormais correctement la messagerie et la journalisation pour les opérations en bloc asynchrones. Auparavant, même si les produits étaient mis à jour, les tables magento_operation et queue_message_status n’étaient pas correctement mises à jour et les messages système étaient incorrects. GitHub-29718
  • Un acheteur est maintenant 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 la fonction Confirmation de l’exigence des emails est activée pour le magasin. Auparavant, l’acheteur était redirigé vers le bouton Mot de passe oublié sur la page de connexion. GitHub-27954
  • Correction de l’erreur de conversion de chaîne du tableau 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 à partir de l’identifiant de bloc CMS. Par conséquent, lorsqu’un bloc CMS est supprimé du cache, l’application efface également ce dernier. GitHub-28309
  • Correction de problèmes liés à la conversion des arguments numériques dans les files d’attente. Auparavant, lorsque vous déclariez une file d’attente avec des arguments numériques type dans queue_topology.xml, la valeur de l’argument était convertie en chaîne. GitHub-29615

Cartes cadeau

  • Les emails contenant un code de carte-cadeau ne sont désormais envoyés qu’après l’enregistrement de la commande lorsque le paramètre de configuration Créer un compte de carte-cadeau lorsqu’un article de commande est commandé 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é lorsqu’un article était commandé, mais qu’une exception survenait après l’envoi de la carte-cadeau virtuelle.
  • L’application ne duplique plus les commandes de cartes-cadeaux. Auparavant, lorsqu’un acheteur commandait une carte-cadeau, l’application fournissait deux codes-cadeaux. Cette erreur s’est produite car cron tâches appelées \Magento\GiftCard\Observer\GenerateGiftCardAccountsInvoice::execute(), et cette méthode n’a pas vérifié si les codes de carte-cadeau avaient déjà été générés lors de la création d’une facture.
  • Les vendeurs peuvent désormais annuler l’affectation de produits à des catégories comme prévu. Auparavant, l’application entraînait une erreur similaire à cette erreur : Could not save product "4" with position 0 to category 3.
  • Ajout de la prise en charge de root en mode de maintenance et des pages erreurs liées par un lien symbolique. Auparavant, si root ou magento/pub étaient liés symboliquement 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
  • Ajout du tableau order_data manquant aux classes EmailSender. Ces classes sont ainsi alignées sur la recommandation du Magento d’utiliser des variables scalaires au lieu d’objets dans les modèles de courrier électronique. GitHub-29604

Gestionnaire de balises de Google

  • La fonction Gestionnaire de balises de Google productClick fonctionne désormais comme prévu. Auparavant, productClick n’était pas déclenché sur les produits figurant sur les pages de liste et le Gestionnaire de balises de Google ne pouvait pas capturer cet événement.
  • Les options de produit configurables du Gestionnaire de balises de Google se mettent désormais à jour comme prévu dans le lecteur de données après avoir modifié une option de produit configurable 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 identique.

GraphQL

  • La requête urlResolver gère désormais correctement les paramètres de requête.
  • La requête urlResolver ne renvoie plus NULL lorsqu’un noeud et une page CMS 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 parente 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 la position des produits change. GitHub-30467
  • La requête products renvoie désormais les résultats attendus lorsque le filtre category_id est spécifié avec le mot-clé in. GitHub-30349
  • Les requêtes categories et categoryList 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
  • Plusieurs attributs obsolètes dans les ProductInterface et CategoryInterface pour empêcher leur utilisation sur le storefront. GitHub-30625

  • Les prix sont désormais masqués des 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 produit en regroupement 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 ajouts aux opérations de panier a été amélioré.
  • La requête products renvoie désormais les valeurs de prix de niveau comme prévu. GitHub-29168
  • Suppression d’un getMappedNums redondant d’une boucle dans lib/internal/Magento/Framework/GraphQl/Query/EnumLookup.php. GitHub-30031
  • La requête products ne renvoie plus d’erreur lorsque le produit interrogé a un produit associé désactivé. GitHub-28892
  • La requête cart renvoie désormais les prix qui ont été convertis dans la devise appropriée (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 honore désormais les autorisations de catalogue. L’application limite les éléments 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 CartItemInterface.
  • Ajout d’attributs pour la requête storeConfig afin de renvoyer les informations de magasin, de groupe de magasin et de site web.
  • Rétablissement de l’attribut SelectedCustomizableOption.type. En outre, l’attribut customizable_options dans différentes implémentations de CartItemInterface 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 ayant plusieurs devises.
  • Les libellés des filtres de requête products renvoient désormais les valeurs traduites, lorsqu’ils sont applicables pour les vues de magasin autres que par défaut.
  • Correction des montants en devise de la boutique sur les cartes-cadeaux dans le 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ête products afin de minimiser le nombre d’éléments de galerie multimédia qui s’affichent lorsque l’acheteur sélectionne des options de produit configurables.

Produits regroupés

  • La requête products renvoie désormais toutes les données attendues pour les produits groupés. Auparavant, product_links était un tableau vide.
  • Un produit groupé est désormais répertorié comme en rupture de stock sur la page de modification du produit lorsque tous les produits simples enfants sont en rupture de stock.
  • L’état d’un produit groupé est désormais mis à jour correctement sur la page de modification du produit lorsque l’état de ses produits simples enfants passe en état hors stock. Auparavant, l’article de stock pour le parent du produit groupé n’était pas mis à jour une fois que ses enfants avaient changé de statut de stock.

Images

  • Les images de la page d’accueil d’un magasin sont désormais affichées avec succès. Auparavant, l’HTML source de la page était corrompu, car les trois barres obliques consécutives du code base64 de l’image étaient mal interprétées comme un commentaire.
  • La dépendance à l’extension fileinfo a été supprimée du module CMS. Auparavant, l’application entraînait une erreur lorsque vous tentiez de télécharger une image à l’aide du téléchargeur d’images, qui est lancé lorsque vous cliquez sur le bouton Insérer l’image lors de l’ajout de contenu. GitHub-24332, GitHub-16531, GitHub-29852
  • Ajout de la prise en charge de la lecture des métadonnées exif_image.png ou exif-image.jpeg. GitHub-1449
  • Les images s’affichent désormais par le widget du carrousel des événements de catalogue après le téléchargement comme prévu. Auparavant, la tâche cron catalog_event_status_checker supprimait les images téléchargées.
  • Les couleurs des images CMJN sont désormais correctement rendues. Lorsque l’adaptateur Imagick détecte désormais qu’une image ouverte possède un espace colorimétrique CMJN, l’espace colorimétrique est converti en SRVB. Auparavant, ces images étaient restituées avec des couleurs inversées. GitHub-22375
  • Les valeurs booléennes ne sont plus définies pour image_with_border.phtml. Les paramètres redondants max-width et height ont été supprimés de .product-image-photo. (Ces valeurs sont déjà définies globalement sur l’image via les styles de réinitialisation.) GitHub-30186

Import/export

  • L’adresse client region_id ne se voit plus attribuer une valeur NULL lorsque vous importez des adresses client à l’aide d’un fichier CSV (entity type = "customer address" et import behavior = "add/update") à partir duquel certaines valeurs de champ ont été supprimées.
  • Vous pouvez désormais masquer les images de produit sur le storefront lors de l’importation.
  • Un processus d’importation de produits 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é est qty défini sur 0 mais is_in_stock set sur 1 dans le fichier CSV, le produit n’est pas répertorié sur la page de catégorie et la page de détails du produit l’identifie comme étant en rupture de stock. Auparavant, les produits avec ces valeurs étaient visibles sur le storefront après l’importation.
  • L’importation CSV n’ignore plus les valeurs dropdown et textarea 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 produits apparaît désormais dans la liste d’administration des fichiers CSV d’exportation, comme prévu. Auparavant, l’application entraînait une erreur lors de l’exécution de 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 de l’alphabet bengali (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 lorsqu’il travaille dans Chrome. Auparavant, l’application affichait une erreur de console, sans indiquer à l’utilisateur comment procéder.
  • L’application ne duplique plus les images de produit lorsque vous importez plusieurs fois les mêmes données CSV de produit. GitHub-21885
  • La limite de 90 caractères pour les noms de fichiers image dans vendor/magento/framework/File/Uploader.php a été supprimée. 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 coupon peuvent désormais être correctement exportés au format CSV ou XML. Auparavant, l’application affichait une erreur 404 lorsque vous cliquiez sur Exporter CSV ou Exporter XML lorsque vous tentiez d’exporter des bons. 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 lot de 1 000 identifiants. Le contexte du cache n’accumule plus d’identifiants. Auparavant, le contexte de mise en cache cumulait les identifiants de cache pour chaque itération par lots de 1 000 identifiants et effacait le même ensemble d’identifiants à 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, 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 pouvait entraîner 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 liés à l’indexeur manuel qui entraînaient des pages de catégorie vides ou une réduction du nombre de produits sur les pages de catégorie. Des problèmes avec des pages de catégorie incomplètes ou un nombre de produits se sont produits lorsque :

    • les indexeurs partiels catalogsearch_fulltext et catalog_product_price ont été exécutés sur un catalogue volumineux jusqu’à ce que l’exécution de ces indexeurs soit terminée.

    • l’indexeur partiel a été exécuté sur des index catalog_category_product ou catalog_product_category, et dans le 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 partiel catalogsearch_fulltext ait terminé l’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 avec précision l’état de la table après réindexation (bin/magento indexer:reindex). Auparavant, les commentaires de tableau après réindexation contenaient les mêmes valeurs que les commentaires après une nouvelle installation.
  • L’instruction SELECT entity_id IN a été améliorée dans les déploiements mettant en oeuvre MariaDB v.10.3.18, ce qui a amélioré les performances de l’indexation des catégories de catalogues. 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 changer le courtier de messages de MYSQL en 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 correspondante. L’application avait précédemment calculé des fractions décimales de plus de deux chiffres de manière incorrecte, puis affiché 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 à partir de l’UTC. Auparavant, dans certaines conditions, la méthode convertConfigTimeToUtc lançait 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 n’échoue 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 gérées correctement, et la page continuait à charger. GitHub-28116
  • La validation du code du référentiel d’attributs respecte désormais Magento\Eav\Model\Entity\Attribute::ATTRIBUTE_CODE_MAX_LENGTH plutôt qu’une valeur codée en dur. GitHub-29017
  • La minimisation des HTMLS n’supprime plus les barres obliques (https://experienceleague.adobe.com//?lang=fr) des chaînes d’HTML dans les fichiers PHTML. Auparavant, les trois 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 vendeurs peuvent désormais configurer les abonnements des indexeurs au niveau des colonnes du tableau plutôt qu’au niveau du tableau. Un nouvel argument a été ajouté à \Magento\Framework\Mview\View\Subscription pour permettre l’ignorer des colonnes pour une combinaison de vues ou de tableaux spécifique. GitHub-30243
  • Le fait de cliquer sur le bouton Ajouter au panier avant l’initialisation complète de la page de produits que JavaScript n’entraîne plus la duplication de valeurs form_key. Auparavant, un produit pouvait être ajouté au panier avec une valeur form_key mise en cache qui déclenchait une exception. Lorsque l’utilisateur a cliqué sur Ajouter au panier avant que le JavaScript ne soit entièrement initialisé, la valeur form_key envoyée dans les données de formulaire ne correspondait pas à la session des utilisateurs et le produit n’était pas ajouté au panier. GitHub-13746
  • Le client cURL actuel respecte désormais les noms d’en-tête insensibles à la casse. Auparavant, la comparaison 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’URL 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 de l’option de produit du catalogue pour améliorer la personnalisation du chargement de collection de \Magento\Catalog\Model\ResourceModel\Product\Option\Value\Collection. GitHub-29621
  • Toutes les occurrences de array_merge ont été refactorisées afin d’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 disposition adminhtml default (par magento2/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 au module PayPal. GitHub-29421

Journalisation

  • Le module Magento_Logging enregistre désormais correctement de nouvelles valeurs ainsi que les valeurs qui les ont précédées. Auparavant, les valeurs de la colonne Valeur avant changement affichaient les valeurs N/A, qu’il s’agisse de la première modification ou de la suivante ou que la valeur par défaut soit 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 de produit correct (Galerie de médias). Des reconceptions mineures de l’interface utilisateur ont été incluses. GitHub-1738
  • Les liens de la section Utilisé(e) dans des descriptions d’image de la galerie multimédia affichent désormais une grille qui a été filtrée selon 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 seconde image après l’ajout de balises à une seule image. GitHub-1755
  • Le menu déroulant Balises est désormais vide comme prévu une fois que vous avez supprimé des balises d’une image dans la galerie multimédia. GitHub-1703
  • Le traitement par lots des messages de file d’attente de synchronisation 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 segments 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 segments exif_read_data. GitHub-1782
  • La longueur du nom de dossier n’empêche plus le chargement d’une image dans la galerie de médias. La galerie multimédia définit désormais la colonne de chemin comme type text. GitHub-1778
  • Le téléchargeur d’images affiche désormais la taille d’image correcte lorsqu’un rendu est inséré à partir de la galerie multimédia. GitHub-1806
  • La vérification du chemin a été ajoutée au module de téléchargement Mediagallery. Auparavant, la validation échouait et l’application n’importait pas de produits lorsque l’option Activer l’ancienne galerie de médias était désactivée. GitHub-30649
  • Magento_Cms::media_gallery Des sous-ressources ACL ont été ajoutées et appliquées pour la nouvelle galerie de médias afin de prendre en charge les autorisations configurées pour les opérations discrètes suivantes :

    • Chargement de ressources
    • Insérer des ressources dans du contenu
    • Suppression de ressources
    • Création de dossiers
    • Supprimer des dossiers. GitHub-1487
  • Les chaînes de texte et les noms de dossiers de la Longue galerie de médias ne sont plus recadrés. Auparavant, l’application affichait du texte recadré et des images, ainsi que ce message : 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 l’édition du contenu d’une nouvelle page. GitHub-1769
  • Les filtres sont désormais appliqués comme prévu sur la grille de catégorie Contenu > Galerie de médias. GitHub-1763
  • La configuration des options de point d’arrêt de multiplication des galeries 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 sortie du média au chargement de la page. GitHub-29933

MFTF

  • Remplacement des actions répétitives par des groupes d’actions dans CheckStaticBlocksTest. GitHub-30561
  • AdminUpdateCategoryAndMakeInactiveTest et VerifyChildCategoriesShouldNotIncludeInMenuTest ont été restructurés pour se conformer aux bonnes pratiques MFTF. GitHub-30058
  • Suppression de la duplication AdminOpenCMSBlocksGridActionGroup. GitHub-30896
  • AdminOpentCmsBlockActionGroup remplacé par AdminOpenCmsBlockActionGroup. GitHub-29839
  • Ajout de groupes d’actions au module Analytics. GitHub-29500
  • Mise à jour de CheckCheckoutSuccessPageAsRegisterCustomerTest et de CheckCheckoutSuccessPageAsGuestTest 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 avec StorefrontProductListWidgetWithSharedCatalogTest en raison duquel le test a été ignoré a été résolu. GitHub-322
  • Mise en oeuvre de ActionGroup pour accéder à la page de passage en caisse. GitHub-29843
  • Mise en oeuvre de AdminOpenCreateNewCMSPageActionGroup pour accéder à la création d’une page CMS. GitHub-29824
  • Correction de problèmes liés au saut 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 et ConfigurableSharedCatalog. GitHub-30164

Nouveaux tests

  • Ajout d’un test pour activer l’envoi d’un courrier électronique à un ami dans l’administrateur. GitHub-29145
  • Ajout d'un test de 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 de lot. GitHub-28921
  • Ajout de tests pour vérifier si les informations Utilisé(e) dans pour une image de la galerie de médias s’affichent une fois l’entité supprimée. GitHub-1774

Nouveaux groupes d’actions

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 à nouveau une confirmation d’abonnement à 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 lorsque le client est abonné à une newsletter mise en file d’attente. GitHub-30645

Modes de paiement

  • Les méthodes de paiement sont désormais chargées dans l’administration de 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 de code de bon avant que l’acheteur ne renseigne des informations dans les déploiements où le bon de commande a été configuré comme la seule option de paiement disponible.
  • L’application effectue désormais les paiements de Payflow Pro avec succès lorsque le nom de l’acheteur contient des lettres accentuées. Auparavant, le paiement ne s’était pas terminé et l’application consignait 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 Attribution automatique au groupe client est activée. Le paiement est traité sur la passerelle PayPal, la commande est créée en Magento et l’acheteur voit la page de remerciement de la commande. Auparavant, la commande était traitée correctement 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 des commandes, où l’application a affiché cette erreur : Failed address validation: %1" error. GitHub-25399

PayPal

  • Les commerçants peuvent désormais passer une commande de l’administrateur après avoir basculé d’un mode de paiement utilisant une carte de crédit à un mode de paiement autre que carte de crédit. Auparavant, lorsqu’un commerçant cliquait sur le bouton Envoyer la commande, le processus de chargement démarrait mais n’était jamais terminé et la commande n’était pas placé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. Cela entraînait la duplication des commandes 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 listait pas ces rapports sur la grille de rapport de règlement PayPal et affichait le message suivant : We couldn't find any records.
  • Cliquer sur le bouton PayPal pendant le passage en caisse ne déclenche plus un appel web-api redondant. Auparavant, deux demandes étaient déclenchées, ce qui doublait le coût du produit.

Performances

  • Magento_Csp/Model/BlockCache a été restructuré afin de réduire à la fois la consommation de mémoire et la génération de chaînes mises en cache inutiles. Auparavant, les pages qui incluaient des scripts et des styles placés dynamiquement sur liste blanche étaient souvent confrontées à des problèmes de performances. GitHub-29964
  • Nous avons amélioré les performances 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 purgeait le cache des catégories associées, en dépit de l’état du produit, ce qui affectait les performances du serveur.
  • Le délai de chargement des pages pour la mise à jour de la quantité de produits dans le panier a été amélioré. Auparavant, l’application effectuait plusieurs requêtes distinctes pour chaque produit dans le 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 ID enfants des produits configurables. Cela a amélioré les performances de chargement des pages en réduisant le nombre de requêtes de base de données. GitHub-30585
  • Le chargement du tableau de bord Admin a été amélioré. Auparavant, l’application affichait les noms d’onglet sous forme de liste avant que la page ne se charge.
  • La gestion du cache des segments a été améliorée grâce à l’ajout de limites d’expiration pour les caches de mise en page. Auparavant, les caches Redis atteignaient rapidement la mémoire maximale allouée dans les déploiements volumineux et l’application générait des erreurs lors des opérations d’écriture.
  • Les performances de passage en caisse 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é restructuré pour améliorer les performances. Les appels redondants vers 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 configurations. 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 commander une fois que le cookie de session a expiré lorsque le panier persistant est activé. À la place, l’application affiche la page de connexion afin que l’acheteur puisse se connecter. Auparavant, l’application plaçait la commande. L’application n’a pas correctement validé le client persistant lorsque PHPSESSID a expiré et customerSession a été recréé à partir des informations persistantes.
  • L’application affiche désormais le message de bienvenue comme prévu une fois qu’un acheteur s’est connecté à un magasin où le panier persistant est activé. Auparavant, l'application affichait le fichier Pas vous ?Message après connexion.
  • L'application n'affiche plus le caractère Pas vous ? texte lorsqu’un client sélectionne l’option Mémoriser lorsqu’il se connecte à un déploiement où le panier d’achat persistant est activé.
  • L’application n’affiche plus le contenu du panier d’un client une fois la session des clients expirée. Auparavant, l’application affichait cette erreur lorsqu’un client invité tentait d’extraire lorsqu’un panier persistant était activé : No such entity with cartid = 0.

Tarifs

  • Les mises à jour de prix asynchrones consécutives n’interagissent plus les unes avec les autres, et l’état correct est affecté à chaque opération. Auparavant, si une mise à jour de prix asynchrone échouait, toutes les mises à jour de prix asynchrones suivantes échouaient jusqu’au redémarrage du consommateur de file d’attente correspondant. 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 marchand 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 des produits récemment consultés et récemment comparés affichent désormais les 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 rapports Prix dans la commande utilisent désormais le bon symbole monétaire.
  • 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 Création de rapports avancés . Si le jeton n’est pas configuré, l’application affiche une page d’informations dans le Guide de l’utilisateur. GitHub-25411

Autorisations de marchandisage de retour (RMA)

  • Les options sélectionnées s’appliquent désormais aux éléments de ligne fractionnés lorsque vous fractionnez une RAM. Auparavant, les valeurs des options Raison de retour, Condition d’élément et Résolution n’étaient pas enregistrées.
  • Vous pouvez désormais supprimer les informations de suivi et d’expédition pour 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 n’est plus dans la portée de leur site web.

Révisions

  • Le nombre d’évaluations affichées sur 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 sur Admin Marketing > Toutes les révisions. Cliquer sur un produit sur cette page ouvre le nouveau formulaire de révision attendu pour ce produit.
  • L’application ne renvoie plus cette erreur lorsque vous essayez de modifier une commande à partir de l’administrateur Marketing > Toutes les révisions: Uncaught TypeError: Event.observe is not a function. GitHub-30388

Références

  • Les points de rétribution sont désormais calculés comme prévu pour les commandes imposables lorsqu’une commande partielle se termine.
  • Les commerçants peuvent désormais obtenir un remboursement partiel pour une commande qui a été achetée avec des points de récompense et qui a ensuite remboursé le reste de la commande. Auparavant, les marchands 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 correctement calculés lorsqu’un client passe une commande dans une devise autre que la devise de base dans un magasin qui prend en charge plusieurs devises.

Ventes

  • La colonne order_created_at de sales_shipment_grid est désormais mise à jour comme prévu après chaque mise à jour.
  • Vous pouvez désormais réorganiser un produit avec une date d’options personnalisées à partir d’un magasin pour lequel l’option Utiliser le calendrier JavaScript est activée. Auparavant, lorsque vous tentiez de réorganiser l’article, l’application n’ajoutait pas l’article dans le 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 composée d’un produit virtuel dont le coût total est de 0 $ dans les déploiements où la méthode de passage en caisse du sous-total zéro est activée.
  • L’application n’archive plus une commande avant de la traiter. Auparavant, une action à sélection multiple sur la grille Admin order order affectait les commandes non sélectionnées.
  • La grille des notes de crédit affiche désormais le symbole monétaire correct lorsque le riyal saoudien (SAR) est défini comme devise de base.
  • L’application affiche désormais de manière cohérente les informations d’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 de total_qty_ordered dans les factures de ventes.
  • L’envoi asynchrone d’emails de vente envoie désormais un email uniquement pour les commandes créées après la date de la dernière mise à jour. Auparavant, l’application ne filtrait pas les emails par date lorsque l’envoi asynchrone était activé.
  • L’application envoie désormais une facture électronique 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 nouvelle commande pour un client à partir de l’administrateur.
  • Vous pouvez désormais modifier le groupe de clients pour les nouveaux clients créés par commande d’administrateur lorsque l’option Activer l’affectation automatique au groupe de clients est activée. Vous pouvez également attribuer 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 requête ne vérifiait pas la requête affectée group_id. Par défaut, il a utilisé le group_id par défaut.
  • L’application ne modifie plus l’état d’un état de commande personnalisée avec le statut Suspected Fraud sur Processing après qu’un commerçant a créé une livraison partielle à l’aide de l’API REST.

Règle de vente

  • Les codes coupon appliqués selon le mode d’expédition ne sont plus appliqués lorsqu’un acheteur modifie le mode d’expédition. Auparavant, l’application n’effaçait pas les codes de bon lorsque les acheteurs activaient leurs méthodes de livraison.
  • Les acheteurs ne peuvent pas appliquer un code de bon plus fréquemment que le paramètre Utilisations par client le permet. Auparavant, si plusieurs fenêtres de navigateur étaient ouvertes pour un nouvel acheteur et que plusieurs commandes étaient placées simultanément, chaque commande recevait la remise, même si le paramètre Utilisations par client avait une valeur de 1.

Rechercher search-heading

  • L’Elasticsearch ne renvoie plus d’erreur de modificateur inconnue lorsqu’un acheteur recherche un synonyme de recherche. Auparavant, l’échappement ne comportait pas de barre oblique 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 en tant que résultats de recherche individuels lorsque les produits enfants ont été configurés avec une visibilité définie sur Non visible individuellement.
  • Les noms de produits Elasticsearch dans les résultats de recherche ne sont plus sensibles à la casse.
  • La page des résultats de recherche est maintenant mise en cache comme prévu lorsque le paramètre définir le nombre de résultats de recherche sur le cache 0 est activé dans Admin Magasins > Configuration > Catalogue > Catalogue > Recherche catalogue.
  • L’indexeur de recherche de catalogue s’exécute maintenant sans générer d’erreur en raison de la limite de champ 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 ont été améliorées. La désactivation de l’option Activer les suggestions de recherche (Magasins > Configuration > Catalogue > Recherche catalogue ) fonctionne comme prévu. Auparavant, l’application interrogeait la table MySQL search_query au lieu de l’Elasticsearch pour les suggestions de recherche à saisie automatique. 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é remplacé par float dans l’index Elasticsearch afin d’améliorer la précision et de corriger une erreur à virgule flottante.double
  • Un écouteur d’événement keydown a été ajouté à l’administrateur pour activer le formulaire de recherche globale lorsqu’une barre oblique est saisie. GitHub-29551
  • L’Elasticsearch ne renvoie plus d’erreur, mais affiche à la place aucun produit comme prévu lorsqu’une valeur string est utilisée pour filtrer les produits par attribut avec un type de serveur principal integer ou decimal. Auparavant, l’application affichait cette erreur dans exception.log : number format exception.
  • L’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é dans la requête products lorsque le paramètre de configuration Interdire la recherche catalogue par dans les autorisations de catégorie générales 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. À la place, l’application affiche d’autres méthodes de livraison disponibles. Auparavant, le processus de passage en caisse était bloqué 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 sur Admin Magasins > Configuration > Ventes > Méthodes de diffusion sont désormais activés comme prévu.
  • Les envois créés via le point de terminaison /rest/V1/shipment du POST mettent désormais à jour correctement les commandes. Auparavant, l’application créait une expédition, mais l’état de l’expédition restait à l’état de traitement.
  • L’application ne supprime plus les produits simples du panier lorsqu’un autre produit est supprimé du panier avant d’être livré avec plusieurs adresses. GitHub-30259
  • La page Révision de commande affiche désormais le montant de la taxe avant le montant de la livraison, comme prévu pour les commandes envoyées à plusieurs adresses.
  • Le suivi des envois UPS indique désormais un état de Delivered On uniquement lorsqu’un package a été livré. GitHub-30032
  • L’application affiche désormais le sous-total correct du panier pour les commandes qui contiennent un produit virtuel lorsque l’acheteur revient sur son panier en passant d’une extraction avec plusieurs adresses à une autre.
  • Les vendeurs peuvent désormais créer une étiquette de livraison à 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 entraînait une erreur lorsque le marchand cliquait sur le bouton Créer une étiquette d’expédition .
  • Le lien de tracking de l'expédition dans l'email de confirmation 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 un libellé d’expédition comme prévu pour une commande partielle. Auparavant, lorsque vous tentiez de créer un libellé 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 des URL d’image correctes. Auparavant, le chemin d’accès de l’image générée en cache é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 de terminaison de prix spécial /rest/V1/products/special-price-information enregistre désormais le prix et renvoie le planning comme prévu.
  • Les importations planifiées s’exécutent désormais comme prévu lorsque le fichier CSV d’importation contient une marque d’ordre des octets (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 reprogrammées ne sont désormais plus effacées après une exécution cron.
  • L’application ne génère plus d’erreur lorsque vous essayez de planifier une mise à jour pour une catégorie. Auparavant, l’application provoquait 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 de produits pour plusieurs magasins. Auparavant, l’application entraînait une erreur lorsqu’un commerçant planifiait une mise à jour du prix de plusieurs magasins pour les mêmes from et to fois lorsqu’une restauration était disponible à l’heure de début de la nouvelle planification.

Magasin

  • L’administrateur et le sélecteur de magasin principal reflètent désormais les modifications apportées à l’ordre de tri du magasin dans l’administrateur. GitHub-13401
  • L’application crée désormais des URL correctes pour les catégories et les produits après la modification de la clé URL de niveau supérieur d’une vue de magasin. Auparavant, lorsqu’une arborescence de catégories d’une vue de magasin contenait url_keys modifié, si une clé de catégorie n’était pas modifiée mais que la clé des parents de catégorie l’était, le code d’origine utilisait la vue de magasin par défaut de la catégorie lors de la création d’URL. GitHub-28633

Règles 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ègle de ciblage dans de nombreux cas.
  • Les règles 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 d’invité n’entraîne plus l’enregistrement du devis par une classe fiscale client incorrecte. GitHub-30018
  • Les commandes envoyées à plusieurs adresses peuvent désormais être enregistrées lors de l’extraction lorsque 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 succès de la commande.
  • Les pages Détails du produit de la vitrine affichent désormais les prix anciens et nouveaux avec et sans taxe comme prévu. GitHub-27500, GitHub-11998

Test

  • bin/magento dev:tests:run lance désormais les tests suivants comme prévu : all, unit, integration, integration-all, static, static-all, integrity, legacy, et default.
  • AdminMediaGalleryInsertLargeImageFileSizeTest a été restructuré.
  • 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 tableaux imbriqués volumineux de résultats attendus et réels dans les tests. Les clés inappropriées du résultat peuvent désormais ê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é sur le sélecteur XPath au lieu de assertStringContainsString.) GitHub-29700
  • Ajout d’une 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 avec le test GraphQL testRequestCacheTagsForCategoryListOnMultipleIds. GitHub-29372
  • Le test de disponibilité de la devise pour le crédit de la société a été automatisé.
  • Les valeurs d’en-tête qui incluent des URL sont désormais correctement analysées dans ApiFunctional TestFramework. GitHub-26425
  • —no-tablespaces a été ajouté à toutes les occurrences de mysqldump, ce qui permet aux tests d’intégration de s’exécuter sans le privilège PROCESS (requis depuis MySQL 5.7.31 / 8.0.21 pour exécuter mysqldump par défaut). GitHub-30566

Thème

  • Un nouvel indicateur --no-parent a été ajouté à la commande bin/magento setup:static-content:deploy qui empêche la compilation 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 la compilation inutile. Notez que ce nouvel indicateur ne fonctionne pas lors de l’utilisation de la stratégie compact. 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 pouvant déclencher des erreurs MySQL.
  • Le code redondant du module Magento_ConfigurableProduct dans le thème Admin a été supprimé. GitHub-29857
  • Suppression de la navigation des styles redondants et des propriétés inutilisées dans le thème vierge. GitHub-29914
  • Ajout d’une fonctionnalité de navigation réductible au thème vierge dans la vue mobile. GitHub-30237
  • Le chargement des polices web pour les thèmes a été optimisé. GitHub-29526
  • Les développeurs peuvent désormais spécifier le 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 le paramètre régional d’administration est 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.
  • zip_codes.xml a été mis à jour afin d’appliquer huit chiffres aux codes postaux brésiliens. GitHub-29984
  • Amélioration de la localisation des expressions non localisées restantes. GitHub-11175
  • L’espace réservé d’entrée de la recherche par grille peut désormais être traduit. GitHub-30510
  • L’application télécharge désormais les modules JavaScript de traduction intégrés 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 retenter de créer un compte après avoir commis 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 maintenant appliquée comme prévu aux champs Heure de début sur Admin Magasin > Configuration > Catalogue > Plan de site XML > Paramètres de génération. GitHub-29496
  • Correction de problèmes d’affichage avec le libellé de la case à cocher Conditions générales . GitHub-24060
  • L’application n’affiche plus le code CSS d’un bloc de prix de niveau sur la page de produit lorsque les prix de niveau ne sont pas disponibles. GitHub-29194
  • La position des boutons sur la page des détails de la vue d’image a été réorganisée afin de respecter les directives de l’interface utilisateur. GitHub-1783
  • Le champ de texte Code coupon s’affiche désormais avec la largeur correcte dans les navigateurs Internet Explorer/EDGE.
  • La variable @button__border-radius est désormais définie dans la bibliothèque lib/web/css/source/lib/variables/_buttons.less. border-radius a une valeur par défaut de 3px. Auparavant, border-radius était codé en dur. GitHub-28674
  • Le bouton d’envoi de recherche (loupe) dans le champ de mini recherche est maintenant désactivé tant que la longueur de la chaîne de recherche minimale n’a pas été atteinte. GitHub-29704
  • Le bouton Preview Template fonctionne désormais comme prévu dans la page Edit Queue (Modifier la file d’attente).
  • Correction 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 de la mise en page 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 l’attribut d’un groupe à un autre.
  • L’application affiche désormais une icône de calendrier en regard du champ d’entrée Date comme prévu sur la page Créer un compte .
  • Ajout d’une variable de poids de police élevé à lib/web/css/source/lib/variables/_typography.less. GitHub-29778
  • La visibilité des filtres fonctionne désormais avec la visibilité des colonnes comme prévu dans les grilles d’administration. GitHub-30345
  • La bannière que l’application affiche sur la page Connexion administrateur en tant que client reste maintenant en haut de la page lorsque l’utilisateur fait défiler la page. GitHub-29354
  • Les options de composant de sélection de l’interface utilisateur ne sont plus visibles lorsque this.disabled(true) est défini. 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 de conteneur d’erreurs. GitHub-29560
  • Les grilles de composants de l’interface utilisateur affichent désormais un nombre précis d’éléments sélectionnés. Auparavant, les grilles indiquaient un nombre incorrect de sélections lorsqu’une recherche par mot-clé sélectionnait tous les éléments de la grille et que le nouvel acheteur désélectionnait ensuite certains éléments avant de cocher la case d’en-tête. GitHub-29968
  • L’application n’affiche plus l’HTML non rendu sur les pages de présentation des factures et des envois. GitHub-29958
  • Cliquer sur Options sur l’Admin Magasins > Taux de devise redirige désormais les utilisateurs vers la section des options de devise étendues de la page de 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
  • Marge intérieure améliorée du texte dans les boîtes de dialogue contextuelles de confirmation dans le thème Luma. GitHub-30452

Vault

  • Le module Vault reconnaît désormais les codes de méthode de paiement issus de la demande pour le service de gestion des informations de paiement. Auparavant, lorsqu’un acheteur passait une commande à l’aide d’une carte de crédit de Braintree enregistrée, l’application renvoyait 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.

  • Dans certains cas, la validation des adresses de sommet n’ajoute plus la page Modifier l’adresse au cache de la page entière.

  • 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.

Structure de l’API web

  • Vous pouvez désormais utiliser POST V1/invoice/:invoiceId/refund pour rembourser une facture dont la quantité de produits est nulle et les frais d'expédition nuls (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 avait généré cette erreur : You can't create a creditmemo without products. GitHub-23069
  • Vous pouvez désormais utiliser POST V1/categories pour créer ou mettre à jour une catégorie. Auparavant, l’application n’enregistrait pas la valeur si la valeur default_sort_by était définie en tant que tableau. Lorsque la valeur default_sort_by a été définie comme chaîne, l’application a généré cette erreur : 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 de POST V1/invoices/:id/capture pour capturer des informations de paiement fonctionne désormais comme prévu. Auparavant, l’application autorisait la commande, mais la capturait uniquement sur le site de la passerelle de paiement.
  • Lorsque vous utilisez POST V1/order/:orderId/ship pour créer une expédition partielle, le point de terminaison renvoie le nombre correct de produits expédiés.
  • Les factures créées à l’aide du POST V1/order/:orderID/invoice reflètent désormais fidèlement le paiement partiel par le crédit de magasin. Auparavant, lorsqu’une commande était partiellement payée avec le crédit de magasin, la facture était créée sans tenir compte du crédit de magasin.
  • Les appels de GET rest/all/V1/categories et de GET rest/all/V1/categories?rootCategoryId=2 renvoient désormais les champs name et product_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 module de résolution de noms 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 V1/categories/:id du 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

Wishlist

  • 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 du client après 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 bloquée 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 vers une autre.
  • L’application affiche désormais les options d’attribut de produit configurables sélectionnées dans la page de liste bloquée, comme prévu. GitHub-24091, GitHub-22503
  • Mise en oeuvre 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 de /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.

  1. 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
    
  2. 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
    
  3. 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;
   }
  1. 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 vendeurs doivent activer la fonctionnalité de transfert de données TLS à force rapide de l’administrateur pour activer la redirection HTTP/HTTPS globale pour toutes les pages de magasin. Reportez-vous à l’article Rediriger HTTP vers HTTPS pour toutes les pages sur Cloud (Forcer TLS) de la base de connaissances.

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 celle par défaut dans un déploiement multi-magasin qui exécute Inventory. (Les vitrines Luma ne sont pas affectées.) 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 entre pour la première fois un code correct dans le champ CAPTCHA de la page de 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 la saisissant incorrectement. Solution : actualisez la page.

Problème : l’application crée une commande en Braintree comme prévu lorsqu’un acheteur clique sur Payer avec Venmo, mais ne crée pas la commande dans l’administrateur. Solution : aucune. Consultez l’article 2.4.2 known issue : le paiement de Venmo Braintree ne fonctionne pas de la base de connaissances.

Problèmes connus B2B

Problème : les acheteurs B2B peuvent utiliser des méthodes de paiement en ligne pour contourner le flux habituel des commandes d’achat. Ce scénario peut se produire si l’acheteur peut réduire le total de son passage en caisse à 0 (par exemple, par un code promotionnel ou une carte-cadeau), puis supprimer le code ou la carte-cadeau. Même dans ces conditions, l’application continue de passer la commande pour le bon montant en fonction des prix des articles dans leur catalogue assigné. Solution : désactivez les cartes-cadeaux et les codes de bon lorsque les méthodes de paiement en ligne sont activées pour la validation de la commande.

Problème : les acheteurs sont redirigés vers le panier lorsqu’ils tentent de passer une commande à partir d’une commande à l’aide du paiement express PayPal lorsque le mode contexte 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 paiement. Cette erreur se produit lorsqu’un acheteur a précédemment créé une commande différente avec un mode de paiement en ligne avant d’accéder à la page de passage en caisse sans avoir effectué l’achat précédent. L'acheteur peut toujours passer la commande. Solution : aucune.

Problème : des remises pour un mode de paiement spécifique persistent pendant le passage en caisse pour une commande, même lorsque l’acheteur modifie son mode de paiement lors du passage en caisse final. 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 du mode de paiement. Solution : aucune. Consultez l’article 2.4.2 Problème connu B2B : la remise reste pour les commandes d’achat en ligne après modification du mode de paiement de la base de connaissances.

Problème : la requête deleteRequisitionListOutput renvoie des détails sur la liste des demandes supprimées au lieu des listes de demandes restantes.

Contributions de la communauté

Nous sommes reconnaissants à l’ensemble de la communauté des Magento Open Sources et tenons à saluer leurs contributions à cette version.

L’équipe d’ingénierie de communauté contributeurs Magento conserve une liste des principaux contributeurs et partenaires par mois, trimestre et année. Sur 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).

Partenaire
Requêtes de tirage
Problèmes GitHub connexes
Atwix
magento/magento2#29630, magento/magento2#29459, magento/magento2#29703, magento/magento2#29460, magento/magento2#29042, magento/magento2#29482, magento/magento2#28821, magento/Partners-magento2ee2 260, magento/magento2#29148, magento/magento2#29634, magento/magento2#29832, 2}magento/magento2#29830, magento/magento2#29829, magento/magento2#29828, magento/magento2 19821, magento/magento2#29820, magento/magento2#29836, magento/magento2#29831 magento/magento2#29822, magento/magento2#28653, magento/magento2#27391, magento/magento 2#29833, magento/magento2#29904, magento/Partners-magento2ee#264, magento/Partners-magento2ee#248, magento/Partners-magento2ee#168, magento/magento2#29929, magento/magento2#29962, magento/Partners ento2ee#329, magento/magento2#29931, magento/Partners-magento2ee#316, magento/magento2#29835, magento/magento2#29834, magento/magento2#30081, magento/magento2#30030, magento/magento/magento to2#29827, magento/magento2#30049, magento/magento2#30217, 🔗magento/magento2#27939 77}, magento/Partners-magento2ee#279, magento/magento2#30222, magento/Partners-magento2ee#349, magento/magento ento2#29868, magento/Partners-magento2ee#346, magento/magento2#30079, 🔗magento/magento2#30317{7 91}, magento/magento2#30633, magento/magento2#30619, magento/magento2#30359, magento /magento2#30223, magento/magento2#30630, magento/magento2#29675, magento/magento to2#30777, magento/magento2#30528, magento/magento2#30525, magento/magento2#30779, magento/magento2#30529, magento/magento2#30694, magento/Partners-magenmagento to2ee#400, magento/Partners-magento2ee#401
magento/magento2#29649, magento/magento2#29712, magento/magento2#29501, magento/magento2#29145,} magento/magento2#29500, magento/magento2#28520, magento/magento2#28558, magento/magento2#29, magento/magento2#29843, magento/magento2#29845, magento/magento2#29846, 22}magento/magento2#29847🔗, magento/magento2#29824, magento/magento2#29823, magento/magento2 29841, magento/magento2#29844, magento/magento2#29825, magento/magento2#29531{33 magento/magento2#29601, magento/magento2#29839, magento/Partners-magento2ee#28551, magento/magento2#29940, magento/magento2#29982, magento/magento2#29941, magento/magento2#2984 2, magento/magento2#29838, magento/magento2#30103, magento/magento2#30032, magento/magento2#29848, magento/magento2#30058, magento/magento2#30031, magento/magento2#30 061, magento/magento2#30561, magento/magento2#30469, magento/magento2#30468, 0}magento/magento2#30372, magento/magento2#30683, magento/magento2#30624, magento/magento2 19168, magento/magento2#30783, magento/magento2#30916, magento/magento2#30917 magento/magento2#30782, magento/magento2#30926, magento/magento2#30625, magento/partner-magento ento2ee#30474, magento/Partners-magento2ee#410 🔗
Blue Acorn iCi
magento/magento2#29670, magento/magento2#29669, magento/magento2#29564, magento/magento2#27494,} magento/magento2#29269, magento/magento2#27609, magento/magento2#29688, magento/magento2#29 081, magento/magento2#28379, magento/magento2#29722, magento/magento2#27077, 22}magento/magento2#30318🔗, magento/magento2#30010 🔗
magento/magento2#29672, magento/magento2#29673, magento/magento2#29679, magento/magento2#29537,} magento/magento2#25595, magento/magento2#29689, magento/magento2#28154, magento/magento2#28 428, magento/magento2#27397, magento/magento2#29729, magento/magento2#29558, 22}magento/magento2#25110, magento/magento2#2586, magento/magento2#28286, magento/magento2 30009
Comwrap
magento/magento2#29814, magento/magento2#29751, magento/Partners-magento2ee#337, magento/Partners-magento2ee#328 ,}magento/Partners-magento2ee#319, magento/magento2#30118, magento/magento2#30019, magento/magento2#299 98, magento/magento2#29883
magento/magento2#29718, magento/magento2#29372, magento/magento2#29927, magento/magento2#29930, magento/magento2#29926, magento/magento2#29880
Chat blanc rapide
magento/magento2#29413, magento/magento2#28163, magento/magento2#30320, magento/magento2#30355,} magento/magento2#28157, magento/magento2#30114
magento/magento2#24060, magento/magento2#13401, magento/magento2#11175, magento/magento2#30296,} magento/magento2#22503, magento/magento2#24091, magento/magento2#30073
Vaimo
magento/magento2#29339, magento/magento2#28676, magento/magento2#29885
magento/magento2#28633, magento/magento2#29890
Cedcommerce
magento/magento2#27602, magento/magento2#30400, magento/magento2#30391
magento/magento2#27350, magento/magento2#30361, magento/magento2#30362, magento/magento2#30255}
MRM COMMERCE
magento/magento2#30120, magento/Partners-magento2ee#175
magento/magento2#30133, magento/Partners-magento2ee#26943
EY
magento/magento2#30130
Pinpoint
magento/magento2#28687, magento/magento2#28663, magento/magento2#28491
magento/magento2#8538, magento/magento2#28479, magento/magento2#28186
creativestyle
magento/magento2#27696, magento/magento2#25405
magento/magento2#29553, magento/magento2#25399
Fisheye
magento/magento2#27940, magento/Partners-magento2ee#267, magento/magento2#28216
magento/magento2#29555, magento/magento2#13440
SNOW.DOG
magento/magento2#29934
magento/magento2#29933
integer_net GmbH
magento/magento2#28164
magento/magento2#29585
Ziffity
magento/magento2#29353, magento/magento2#27896, magento/magento2#28349
magento/magento2#29194, magento/magento2#29098
Journée des oiseaux bleus
magento/magento2#27832
magento/magento2#11998, magento/magento2#27500
Krish TechnoLabs
magento/magento2#29923
magento/magento2#29920
Groupe né
magento/magento2#30109, magento/magento2#30421
magento/magento2#30125
Solutions d’orientation
magento/magento2#28818
magento/magento2#29546
Le site
magento/magento2#25412
magento/magento2#25411
Kensium Solutions LLC
magento/magento2#30230
magento/magento2#30179
Saut Web
magento/magento2#27869
magento/magento2#27866
AEM Consulting
magento/magento2#29692
magento/magento2#30243
Wagento
magento/magento2#30411
magento/magento2#30408
MediaCT
magento/magento2#29210
magento/magento2#29515
eComero
magento/magento2#28917
magento/magento2#29656

Contributions des contributeurs individuels

Le tableau suivant répertorie les contributions des membres de notre communauté. Ce tableau répertorie les demandes d’extraction externes, le numéro de problème GitHub qui y est associé (le cas échéant) et le membre de la communauté qui a contribué à la demande d’extraction.

Contribuer aux membres de la communauté
Requêtes de tirage
Problèmes GitHub connexes
Nazar Klovanych
#29576
1449
Shankar Konar
#29511
29496
Hazel Joie Caquicla
#29494
Hazel Joie Caquicla
#29491
Kos Rafał
#29483
29525
Hazel Joie Caquicla
#29461
Jekabs
#29458
29498
Nazar Klovanych
#29452
jmonteros422
#29435
1711
Shankar Konar
#29433
1738
Nazar Klovanych
#29429
1755, 1694
Bartłomiej Szubert
#29413
24060
Angelo Romano
#29410
29416
Honeymay Louiese Ignacio
#29400
1703
Franciszek Wawrzak
#27478
29606
Lukasz Bajsarowicz
#29670
29672
Lukasz Bajsarowicz
#29669
29673
Nazar Klovanych
#29636
1764
Oleh Usik
#29630
29649
Lukasz Bajsarowicz
#29564
29679
Ihor Sviziev
#29518
29653
Oleh Usik
#29459
Oleksandr Kravchuk
#29339
Will Wright
#29316
29315
Vadim Malesh
#29693
29700
Vadim Malesh
#29682
Andrii Beziazychnyi
#29703
29712
Shankar Konar
#29510
28422
Vadim Malesh
#29474
29267
Oleh Usik
#29460
29501
Dmitri Tsymbal
#29042
29145
Radevic Savvas
#28816
28802
Sascha
#28548
28674
Yan Nasonov
#28512
29661
Rudolf Vince
#27494
29537
Nazar Klovanych
#29684
1769
Nazar Klovanych
#29633
1763
Hazel Joie Caquicla
#29639
jmonteros422
#29632
1760
Oleh Usik
#29482
29500
Sathish Subramanian
#29353
29194
Russell Albin
#29269
25595
Bartłomiej Szubert
#28163
13401
Mateusz Krzeszowiak
#27696
29553
Vitali Prokopov
#27691
26903
korostii
#26081
26080
Nazar Klovanych
#29711
1774
Hazel Joie Caquicla
#29411
Wout Kramer
#29210
29515
Edouard Chitoraga
#29148
Oleh Usik
#28821
28558, 28520
Nazar Klovanych
#29783
1780
jmonteros422
#29774
1783
Hazel Joie Caquicla
#29772
Sergii Iouchtchenko
#29761
jmonteros422
#29753
1784
Nazar Klovanych
#29743
1782
Nazar Klovanych
#29742
1778
Hazel Joie Caquicla
#29705
jmonteros422
#29677
1504
Ihor Sviziev
#29799
Oleh Usik
#29634
29648
Alexandre Skrashuk
#29348
28921
Vitali Prokopov
#28413
28388
Lukasz Bajsarowicz
#27609
korostii
#27579
27523
La participation de Cristian
#29426
29425
Michael Derlatka
#28915
26425
Oleh Usik
#29832
29843
Oleh Usik
#29830
29845
Oleh Usik
#29829
29846
Oleh Usik
#29828
29847
Oleh Usik
#29821
29824
Oleh Usik
#29820
29823
Deny Babenko
#28343
29067
Bal
#27269
26288
Andrii Kasian
#27129
25199
Hazel Joie Caquicla
#29875
Hazel Joie Caquicla
#29869
Oleh Usik
#29836
29841
Oleh Usik
#29831
29844
Oleh Usik
#29822
29825
Tu Nguyen
#29044
29526
Vinoth
#28349
bradleybrecher
#27386
29560
Sergii Iouchtchenko
#29921
Hazel Joie Caquicla
#29896
Shankar Konar
#29724
29704
Oleh Usik
#28653
29531
Tu Nguyen
#29913
29914
Nazar Klovanych
#29861
1789
Tu Nguyen
#29856
29857
Tu Nguyen
#29771
29779
Eden Duong
#29278
29277
Eden Duong
#29276
29336
Mohamed-Asar
#27896
29098
Honeymay Louiese Ignacio
#29947
toxix
#29925
28981, 29879
Viktor Kopin
#29906
Olga Zakharchuk
#29863
29958
Nikolaj Malevanec
#29006
12087
Abdul Rahman Abouzaid
#28687
8538
KrielkipNL
#27832
11998, 27500
Gaurav Agarwal
#27602
27350
Alexander Taranovski
#27391
29601
Stanislav Ilnytskyi
#26877
26876
Sergii Iouchtchenko
#29889
Nazar Klovanych
#29715
1487
Honeymay Louiese Ignacio
#29543
1724
Oleh Usik
#29833
29839
Porraphit Chuasuk
#28896
28892
Vitali Prokopov
#27857
26976
Edouard Chitoraga
#29904
Hazel Joie Caquicla
#30006
Ihor Sviziev
#29993
30004
Viktor Kopin
#29959
1813
Hazel Joie Caquicla
#29909
Lukasz Bajsarowicz
#29688
29689
Shankar Konar
#29415
29354
Hazel Joie Caquicla
#29967
Oleh Usik
#29929
29940
Hazel Joie Caquicla
#29895
ashokadewit
#27446
29603
Pascal Brouwers
#26527
26526
Sergii Iouchtchenko
#30076
Hazel Joie Caquicla
#30044
Viktor Kopin
#29979
1806
Janusz Janczy
#29934
29933
Marvin Hinz
#29542
29185
Pieter Zandbergen
#29274
29524
Joe Hobbs
#25510
25147
Benoît Xylo
#25405
25399
Viktor Kopin
#30074
Hazel Joie Caquicla
#30042
Oleh Usik
#29962
29982
Oleh Usik
#29931
29941
Oleh Usik
#29835
29842
Oleh Usik
#29834
29838
Evgeny Levinsky
#27698
28324
Vadim Malesh
#26470
7720
Oleh Usik
#30081
30103
Leandro F. L.
#30014
30013
Taras Gamanov
#29968
24348, 24400
Shankar Konar
#29671
16531, 24332, 29852
Ejaz Alam
#29486
29487, 29502
Oleh Usik
#30030
30032
Eugene Shakhsuvarov
#28117
28116
Serhii Dzepa
#30095
Hazel Joie Caquicla
#30057
Hazel Joie Caquicla
#30034
Marcos Trama
#29972
29984
Lyzun Oleksandr
#29814
29718
Tu Nguyen
#29794
29075
Greg Harvell
#29081
28154, 28428
Daniel Beitler
#29080
29659
Svyatoslav
#28818
29546
Fabian Schmengler
#28164
29585
Tymoteusz Motylewski
#27980
29590
Alex Gusev
#30077
26762, 29612
Abdul Rahman Abouzaid
#28663
28479
Abdul Rahman Abouzaid
#28491
28186
jiten-patel
#27953
12225
Ihor Sviziev
#30153
30183
Shankar Konar
#30069
30164
Leandro F. L.
#30011
29377
Oleh Usik
#29827
29848
Davide Riccardo Caliendo
#29015
29017
Zach Nanninga
#28379
27397
Bünyamin
#27869
27866
Eden Duong
#27585
29599
David Haecker
#30096
322
Yaroslav Garmash
#30075
312
John Carlo Octabio
#30028
Frédéric MARTINEZ
#30182
30191
Ihor Sviziev
#30170
30146
Rafael Kassner
#30160
Sean van Zuidam
#30139
30186
Bartosz Górski
#30120
30133
Milind Singh
#30109
30125
Kate Kyzyma
#30049
30058
Damián Culotta
#29722
29729
Anton Evers
#28995
29522
Kate Kyzyma
#30217
Nikita Sarychev
#30172
30173
Tu Nguyen
#30108
Alexandre Menk
#29205
29174, 30240
Barny Shergold
#28676
28633
Jonas Hünig
#28516
29662
Tu Nguyen
#28177
30237
Alexander Taranovski
#27939
30031
David Manners
#27581
29598
Navarre Barnier
#27077
29558
kolaente
#30180
30190
Peep van Puijenbroek
#29466
29652
Frédéric MARTINEZ
#28588
Petkovski Marjan
#29751
29372
Oleh Usik
#30222
Timon de Groot
#28809
22375
Nirav Patel
#28385
30345
Dan Wallis
#27940
2955
Sean van Zuidam
#30065
30064
Tu Nguyen
#30008
30036
Tu Nguyen
#29726
29719
Gabriel Somoza
#28389
29165
Dan Wallis
#28216
13440
Rafael Corrêa Gomes
#25412
25411
Siim
#29885
29890
Bartosz Kubicki
#27092
29557
Sudheer Singamsetti
#30230
30179
Namrata
#30358
30450
Tu Nguyen
#30333
30448
Wojtek Naruniec
#30318
25110, 25886, 28286
Sean van Zuidam
#30062
30063, 30066
Tu Nguyen
#29773
29778
Pieter Cappelle
#26713
14398, 21885
Bartłomiej Szubert
#30320
11175
Bas van Poppel
#30167
30169
Ihor Sviziev
#30023
30025
Ihor Sviziev
#30002
30005
Eden Duong
#27574
29597
Rafael Kassner
#27454
29604
Nirav Patel
#30458
30452
Tu Nguyen
#30454
30496
solwininfotech
#30405
26133
Bartłomiej Szubert
#30355
30296
Serhii Dzepa
#30554
Alin Alexandra
#30340
30508
Oleh Usik
#29868
30061
guillaume quintard
#28928
29988
Par
#28172
27925
Bartłomiej Szubert
#28157
22503, 24091
Nikolaï Sumrak
#27672
29552
Jonas Hünig
#30502
30566
Yaroslav Bogutsky
#30493
30510
Tu Nguyen
#30453
30542
Sunil Patel
#30402
30388
Oleh Usik
#30079
Jeroen
#29911
29915
Hôte du pipeline
#29196
29297, 29478
Johan Lindahl
#28917
29656
Bartosz Kubicki
#26967
29615
Ejaz Alam
#30579
30545
Hôte du pipeline
#30570
6868, 7252, 13316
Namrata
#30538
30550
Pratik Oza
#30530
30552
Andrii Kasian
#30521
30563
naitsirch
#30322
30314
Kate Kyzyma
#30317
30561
Stanislav Ilnytskyi
#30198
30601
Cyildirim
#28352
28124
Andrii Beziazychnyi
#30633
30469
Edouard Chitoraga
#30619
30468
Sudheer Singamsetti
#30375
30349
Sagar Dahiwala
#30368
325
Nikolaj Malevanec
#30763
30747
Dmitri Tsymbal
#30359
30372
Oleh Usik
#30223
30683
Lukasz Bajsarowicz
#28147
28309
Matei Purcaru
#27972
27954
Vova Yatsyuk
#27674
29551
Bartosz Kubicki
#26966
30216
Simon Sprankel
#26401
29621
Gabriel da Gama
#30895
30896
Samuel Caçador
#30793
30833
Vova Yatsyuk
#30774
30781, 197
Diego Sanabria
#30681
30680
Evgen Mozok
#30632
24730
Sanjay Patel
#30411
30408
Shikha Mishra
#30400
30361, 30362
Shikha Mishra
#30391
30255
Bartłomiej Szubert
#30114
30073
Michael Bottens
#30010
30009
Tu Nguyen
#29986
29987
Saphal Jha
#29923
29920
Andrii Kasian
#27379
29600
Yaroslav Rogoza
#30630
30624
Oleh Usik
#29675
29168
Andrii Kalinich
#30749
23069
Viktor Kopin
#30727
30645
Thomas Klein
#30825
30859
Oleh Usik
#30777
30783
Oleh Usik
#30528
30916
Oleh Usik
#30525
30917
Ihor Svizievv
#30090
30184
Andrii Kalinich
#30866
24717
Viktor Kopin
#30928
30685
Nitish Singh
#30421
Oleh Usik
#30779
30782
Nazar Klovanych
#30662
30649
Oleh Usik
#30529
30926
March Denchev
#30614
30104
Lachlan
#29692
30243
Viktor Kopin
#30947
29128
Andrii Kalinich
#30807
26432
Viktor Kopin
#30961
13746
Nikolaj Malevanec
#30963
30295
Andrii Beziazychnyi
#30694
30625
Alexander Turiak
#30636
30467

Configuration requise

Notre pile de technologie est basée 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 de Composer.

Kits d’outils de migration

L’outil de migration des données permet de transférer les données de magasin Magento 1.x existantes vers Magento 2.x. Cette interface de ligne de commande comprend des fonctions de vérification, de suivi de progression, de journalisation et de test. Pour obtenir des instructions sur l’installation, voir Installation de l’outil de migration de données. Envisagez d’explorer le référentiel de migration de données ou d’y contribuer.

La boîte à outils de migration de 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 pour la conversion des modules et des mises en page Magento 1.x.

recommendation-more-help
1d4eef6c-fef1-4e61-85eb-b58d7b9ac29f