Notes de mise à jour de Magento Open Source 2.4.7

Magento Open Source 2.4.7 introduit la prise en charge de PHP 8.3. Elle comprend des centaines de correctifs et d’améliorations de qualité. Les dépendances du compositeur principal et les bibliothèques tierces ont été mises à niveau vers les dernières versions disponibles. Cette version améliore la couverture GraphQL pour les attributs personnalisés et les caches du résolveur GraphQL. Il introduit également la prise en charge des services FedEx et UPS récemment mis à jour.

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.

Autres informations de mise à jour

Bien que le code de ces fonctionnalités soit fourni avec des versions du code principal du Magento Open Source, plusieurs de ces projets 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.

Mise en évidence de Magento Open Source 2.4.7

Recherchez les points forts suivants dans cette version.

Amélioration de la sécurité

Cette version comprend les mêmes correctifs de sécurité et améliorations de sécurité de la plateforme qui sont inclus dans Adobe Commerce 2.4.6-p5, 2.4.5-p7 et 2.4.4-p8. Voir le Bulletin de sécurité des Adobes pour consulter la dernière discussion sur ces problèmes résolus.

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 actions suivantes :

  • PLACE SUR LA LISTE AUTORISÉE IP
  • Authentification à deux facteurs
  • utilisation d'un VPN
  • utilisation d’un emplacement unique plutôt que /admin
  • bonne hygiène des mots de passe

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

Les améliorations de sécurité de cette version améliorent la conformité aux dernières bonnes pratiques en matière de sécurité.

  • Modifications du comportement des clés de cache non générées :

    • Les clés de cache non générées pour les blocs incluent désormais des préfixes différents des préfixes pour les clés générées automatiquement. (Les clés de cache non générées sont des clés définies par le biais de la syntaxe de directive de modèle ou des méthodes setCacheKey ou setData.)
    • Les clés de cache non générées pour les blocs ne doivent désormais contenir que des lettres, des chiffres, des tirets (-) et des caractères de soulignement (_).
  • Limites du nombre de codes de bon générés automatiquement. Magento Open Source limite désormais le nombre de codes de bons générés automatiquement. La valeur par défaut maximale est de 250 000. Les commerçants peuvent utiliser la nouvelle option de configuration Code Quantity Limit (Stores > Settings:Configuration > Customers > Promotions) pour éviter de surcharger le système avec de nombreux coupons.

  • Optimisation du processus de génération d’URL d’administration par défaut. La génération de l’URL d’administration par défaut a été optimisée pour une répartition aléatoire accrue, ce qui rend les URL générées moins prévisibles.

  • Un nouveau paramètre de configuration du cache de la page entière peut aider à atténuer les risques associés au point de terminaison HTTP {BASE-URL}/page_cache/block/esi. Ce point de terminaison prend en charge les fragments de contenu sans restriction et chargés dynamiquement à partir des poignées de disposition Commerce et des structures de bloc. Le nouveau paramètre de configuration Handles params size définit la valeur du paramètre handles de ce point de terminaison, qui détermine le nombre maximal autorisé de gestionnaires par API. La valeur par défaut de cette propriété est 100. Les vendeurs peuvent modifier cette valeur à partir de l’administrateur (Stores > Settings:Configuration > System > Full Page Cache > Handles params size). Voir Configuration de l’application Commerce pour utiliser le vernis.

  • Ajout de la prise en charge de l’intégrité des sous-ressources pour se conformer aux exigences PCI 4.0 de vérification de l’intégrité des scripts sur les pages de paiement. La prise en charge de l’intégrité des sous-ressources (SRI) fournit des hachages d’intégrité pour toutes les ressources JavaScript résidant dans le système de fichiers local. La fonctionnalité de SRI par défaut est implémentée uniquement sur les pages de paiement pour les zones d’administration et de storefront. Cependant, les marchands peuvent étendre la configuration par défaut à d’autres pages. Voir Intégrité des sous-ressources dans le Guide du développeur PHP de Commerce.

  • Modifications de la stratégie de sécurité du contenu (CSP) : mise à jour et améliorations de la configuration des stratégies de sécurité du contenu (CSP) Adobe Commerce pour se conformer aux exigences PCI 4.0. Pour plus d'informations, reportez-vous à la section Stratégies de sécurité du contenu du Guide du développeur PHP de Commerce.

    • La configuration par défaut de la CSP pour les pages de paiement pour l’administrateur Commerce et les zones de storefront est désormais le mode restrict. Pour toutes les autres pages, la configuration par défaut est le mode report-only. Dans les versions antérieures à la version 2.4.7, la CSP était configurée en mode report-only pour toutes les pages.

    • Ajout d’un fournisseur à usage unique pour permettre l’exécution de scripts intégrés dans une CSP. Le fournisseur de valeur à usage unique facilite la génération de chaînes de valeur à usage unique pour chaque requête. Les chaînes sont ensuite jointes à l’en-tête CSP.

    • Ajout d’options pour configurer des URI personnalisés afin de signaler les violations CSP pour la page Créer une commande dans l’Admin et la page Passage en caisse dans le storefront. Vous pouvez ajouter la configuration à partir de l’administrateur ou en ajoutant l’URI au fichier config.xml.

      note note
      NOTE
      La mise à jour de la configuration CSP vers le mode restrict peut bloquer les scripts intégrés existants sur les pages de paiement dans l’Admin et le storefront, ce qui entraîne l’erreur de navigateur suivante lors du chargement d’une page : Refused to execute inline script because it violates the following Content Security Policy directive: "script-src. Corrigez ces erreurs en mettant à jour la configuration de la liste blanche pour autoriser les scripts requis. Voir Dépannage dans le Guide du développeur PHP de Commerce.
  • Limite de débit native pour les informations de paiement transmises par les API REST et GraphQL. Les commerçants peuvent désormais configurer la limite de débit pour les informations de paiement transmises à l'aide de REST et GraphQL. Cette couche de protection supplémentaire prend en charge la prévention des attaques par carte et peut éventuellement réduire le volume des attaques par carte qui testent de nombreux numéros de carte de crédit en même temps. Il s’agit d’une modification du comportement par défaut d’un point de terminaison REST existant. Voir Limitation du taux.

  • Le comportement par défaut de la requête GraphQL isEmailAvailable et du point d’entrée REST (V1/customers/isEmailAvailable) a changé. Par défaut, les API renvoient désormais toujours true. Les marchands peuvent activer le comportement d’origine en définissant l’option Activer la connexion au passage en caisse des invités dans l’administrateur sur yes, mais cela peut exposer les informations du client à des utilisateurs non authentifiés.

Améliorations de la plateforme

Les mises à niveau de plateforme de cette version améliorent la conformité aux dernières bonnes pratiques en matière de sécurité.

Magento Open Source 2.4.7 comprend les mises à niveau suivantes de la plateforme :

  • Compatibilité PHP 8.3. Cette version introduit la prise en charge de PHP 8.3. Magento Open Source prend désormais en charge PHP 8.3 et 8.2. PHP 8.2 sera pris en charge jusqu’à sa date de fin de service (EOS) en décembre 2025. Après décembre 2025, tous les marchands exécutant les déploiements 2.4.7 doivent migrer vers PHP 8.3.

Magento Open Source 2.4.7 est toujours compatible avec PHP 8.1 à des fins de mise à niveau uniquement. PHP 8.1 n’est pas pris en charge et n’est pas recommandé. Le code de base Magento Open Source 2.4.7, toutes les extensions groupées, toutes les extensions détenues par l’Adobe et tous les services SaaS sont compatibles avec PHP 8.3.

  • Prise en charge de RabbitMQ 3.13. Cette version est compatible avec la dernière version de RabbitMQ 3.13. La compatibilité reste avec RabbitMQ 3.11 et 3.12, qui est pris en charge jusqu’en août 2024 et en décembre 2024 respectivement, mais l’Adobe est recommandé en utilisant Magento Open Source 2.4.7 uniquement avec RabbitMQ 3.13.

  • Compositeur 2.7.x. La compatibilité avec le compositeur 2.2.x demeure.

  • Prise en charge du cache de vernis 7.4. Cette version est compatible avec la dernière version de Varnish Cache 7.4. La compatibilité reste avec les versions 6.0.x et 7.2.x, mais nous vous recommandons d’utiliser Magento Open Source 2.4.7 uniquement avec la version 7.4 ou la version 6.0 LTS du cache de vernis.

  • Compatibilité avec Elasticsearch 8.11

  • Prise en charge d’OpenSearch 2.12 et d’OpenSearch 1.3

  • Redis 7.2

  • La bibliothèque extjs a été remplacée par la dernière version de jsTree.

  • La bibliothèque jquery/fileUpload a été supprimée.

Toutes les bibliothèques JavaScript et dépendances NPM dans le code principal de Magento Open Source ont été mises à jour vers les dernières versions disponibles. Toutes les dépendances des bibliothèques Laminas ont été mises à jour vers la dernière version compatible avec PHP 8.3.

Mises à niveau supplémentaires

  • La passerelle API XML Commerce UPS a été migrée vers la nouvelle API REST UPS Commerce pour prendre en charge les mises à jour apportées par UPS à leur modèle de sécurité API. (UPS met en oeuvre un modèle de sécurité OAuth 2.0 (jetons porteur) pour toutes les API.) Toutes les API XML UPS de Commerce précédentes ont été supprimées de la base de code Magento Open Source 2.4.7.

  • Le Magento Open Source integration avec FedEx a été migré des services Web WSDL hérités de FedEx vers les dernières API RESTful de FedEx. Le suivi des services web FedEx, la validation des adresses et la validation des codes postaux WSDLS sera retiré en mai 2024.

  • Ajout de la prise en charge de la nouvelle méthode d’expédition USPS Ground Advantage. Il s’agit d’une intégration livrée d’usine avec la nouvelle méthode d’expédition d’USPS, USPS Ground Advantage, qui a été publiée en juillet 2023. Cette nouvelle intégration peut être utilisée pour récupérer les taux d’expédition et planifier les diffusions et les retours par le biais du service d’expédition USPS. La méthode d’expédition USPS Ground Advantage remplace ces méthodes d’expédition, qui ont été abandonnées lorsque la méthode d’expédition USPS Ground Advantage a été publiée :

    • USPS Retail Ground
    • Service de package de première classe
    • Parcel Select Ground
  • Les modules d’expédition Temando ont été supprimés de la base de code du Magento Open Source principal. Cette fonctionnalité a été abandonnée dans Magento Open Source 2.4.4.

Améliorations des performances et de l’évolutivité

Magento Open Source 2.4.7 comprend les améliorations suivantes des performances et de l’évolutivité de Magento Open Source :

  • Amélioration de la gestion des indexeurs. La nouvelle commande indexer:set-status prend en charge la gestion dynamique de l’état de l’indexeur. Les utilisateurs administrateurs peuvent utiliser cette commande pour modifier l’état de l’indexeur en suspended, invalid ou valid. Cette fonctionnalité est particulièrement utile pour gérer les performances du système lors d’opérations en masse étendues, telles que les importations ou les mises à jour de produits, en permettant de contrôler le moment où les indexeurs sont automatiquement déclenchés par les tâches cron du système. Voir Gestion des indexeurs.

  • Page de liste de produits pour les produits complexes avec de nombreuses options. Le temps de chargement a été amélioré pour les pages de liste de produits qui incluent des produits complexes avec plus de 100 options. Les performances des demandes GraphQL pour répertorier les produits par catégorie ont également été améliorées.

  • Améliorations des performances des règles de vente. Amélioration des performances des déploiements d’entreprise avec de nombreuses règles de vente actives (environ 100 000). Les déploiements d’entreprise qui implémentent fortement des promotions déploient souvent de nombreuses règles de panier actives. Ces types de déploiements d’entreprise exécutant Magento Open Source 2.4.7 ne connaîtront aucune dégradation des performances liée au nombre de règles de prix du panier configurées pendant les opérations de passage en caisse.

  • Enregistrement plus rapide des configurations au niveau du magasin pour les déploiements avec de nombreux magasins. L’enregistrement des paramètres de configuration dans les déploiements comportant plus de 500 boutiques peut prendre du temps. Le nouveau module de configuration asynchroneactive des opérations d’enregistrement de configuration asynchrone en exécutant une tâche cron qui utilise un client pour traiter l’opération d’enregistrement dans une file d’attente de messages. AsyncConfig est désactivé par défaut.

  • Génération plus rapide du cache de configuration pour les configurations volumineuses. La commande bin/magento cache:clean config prévient désormais le cache de configuration lorsque le cache de configuration est activé. Cela réduit le temps d’arrêt requis pour générer le cache de configuration pour les configurations volumineuses. Les opérations d’enregistrement de configuration ne nettoient plus le cache config_scopes avant d’écrire des données dans le cache, ce qui réduit également le temps que d’autres requêtes soient verrouillées pendant l’écriture des données de configuration.

Braintree

  • Vaulted PayPalet Pay Later Modifications : les clients connectés qui ont précédemment bloqué/stocké leur compte PayPal ont la possibilité de payer avec :

    • Pay Now (sans avoir à se connecter à leur compte PayPal, l'utilisateur peut payer avec sa carte par défaut)
    • Payer avec une source de financement différente
    • Payer avec un autre compte
    • Bouton PayPal Pay Later ou PayPal Credit
  • Prise en charge de 3DS pourGoogle Pay : comprend la prise en charge de la vérification 3DS pour les Google Pay cartes non segmentées en jetons. Pour plus d’informations, consultez la documentation du Braintree .

  • Vault Apple Pay Payments : permet aux clients connectés de sauvegarder/stocker leurs Apple Pay paiements dans leur compte de magasin Commerce pour les utiliser lors de transactions futures. Cela réduit le nombre d’étapes du passage en caisse et crée une expérience de passage en caisse plus rapide pour le client qui revient.

  • Vault Google Pay Payments : permet aux clients connectés de sauvegarder/stocker leurs Google Pay paiements dans leur compte de magasin Commerce pour les utiliser lors de transactions futures. Cela réduit le nombre d’étapes du passage en caisse et crée une expérience de passage en caisse plus rapide pour le client qui revient.

  • Vault Venmo Payments : autorisez les clients connectés à Vault/stocker leurs comptes Venmo dans leur compte de magasin Commerce pour les utiliser lors de transactions futures. Cela réduit le nombre d’étapes du passage en caisse et crée une expérience de passage en caisse plus rapide pour le client qui revient.

  • Vault ACH Payments : permet aux clients connectés de sauvegarder/stocker leurs paiements ACH dans leur compte de magasin Commerce afin de les utiliser pour de futures transactions. Cela réduit le nombre d’étapes du passage en caisse et crée une expérience de passage en caisse plus rapide pour le client qui revient.

  • Express Paymentboutons en haut de la page passage en caisse : pour accélérer le passage en caisse, nous avons introduit des options Express Payment au début de la passage en caisse. Les clients peuvent désormais payer par PayPal, PayPal Pay Later, Apple Pay et Google Pay Express paiements.

  • Braintreenotes de mise à jour et liens d’assistance dans la configuration de l’administrateur : les vendeurs peuvent désormais directement lier l’administrateur Commerce à l’assistance des Braintree et aux notes de mise à jour en ligne.

  • Prise en charge de GraphQL pour tous les Braintree modes de paiement saufVenmo : d’autres configurations sont exposées dans l’API GraphQL. Cela s’avère particulièrement utile pour les applications sans interface utilisateur graphique.

  • Vaultingpaiements dans la zone de compte : les clients connectés peuvent désormais Vault/store nouvelles cartes de crédit/débit et PayPal comptes dans la zone de compte client. Auparavant, les clients ne pouvaient effectuer de coffre-fort/stockage que lors de l’enregistrement de leurs paiements en vue d’une utilisation ultérieure lors de l’exécution d’une transaction lors du passage en caisse. Désormais, ils peuvent Vault de nouvelles cartes de crédit/débit et de nouveaux comptes PayPal sans avoir à créer une nouvelle transaction.

  • Transactions sans frais : les transactions sans frais accélèrent le processus de paiement en réduisant le nombre de clics/d’étapes des clients pour terminer une transaction de carte de crédit/de débit en ligne. Auparavant (lorsque 3DS était activé), tous les clients étaient mis au défi par 3DS. Avec la nouvelle fonctionnalité de transactions sans fragment, les clients ne sont mis en défi pour 3DS que lorsque la banque la demande. Cela permet de réduire l’abandon de panier, d’augmenter les taux de conversion et d’augmenter les ventes.

  • WebHooks de litige : lorsqu’un client conteste une transaction en Braintree, le statut du litige est désormais transmis à Commerce. Il peut faire l’objet d’une recherche dans la grille Sales > Order et est associé à chaque commande.

GraphQL

Magento Open Source 2.4.7 inclut des fonctionnalités de mise en cache GraphQL améliorées, la prise en charge des schémas GraphQL pour les attributs personnalisés, la prise en charge de l’annulation de commande sans interface utilisateur et la mise en cache du résolveur améliorée.

  • Gestion de panier plus flexible. La mutation clearCart efface désormais le contenu d’un panier spécifié en une seule action. Il remplace la mutation clearCustomerCart, qui a été abandonnée.

  • Améliorations de la création de mutations de panier. La mutation createGuestCart a été ajoutée pour remplacer la mutation obsolète createEmptyCart. Auparavant, si vous utilisiez createEmptyCart, vous ne pouviez pas déterminer si le panier était destiné à un invité ou un client connecté.

  • Les éléments de commande incluent désormais des images de produit. OrderItemInterface expose des images de produit, ce qui permet d’associer les images à des produits commandés et de les charger plus efficacement. GitHub-32369

  • Prise en charge étendue de la mise en cache du résolveur. Les résolveurs de requête GraphQL suivants peuvent désormais être mis en cache dans le cache des résultats du résolveur GraphQL, ce qui améliore les performances lorsque les requêtes sont envoyées avec des requêtes de POST :

    • Magento\CustomerGraphQl\Model\Resolver\Customer::resolve
    • Magento\CustomerGraphQl\Model\Resolver\CustomerAddress::resolve
    • Magento\CustomerGraphQl\Model\Resolver\IsSubscribed::resolve
    • Magento\CatalogGraphQl\Model\Resolver\Product\MediaGallery::resolve
  • Prise en charge de l’annulation de commande. La mutation cancelOrder permet à un client d’annuler une commande, de transmettre son identifiant et une raison d’annulation.

  • Prise en charge améliorée des attributs personnalisés. La prise en charge des attributs personnalisés GraphQL a été améliorée en enrichissant les données de l’API pour prendre en charge tous les types d’attributs. Le schéma d’attributs EAV GraphQL prend désormais en charge l’extension des attributs du client et des objets d’adresse du client dans l’Admin et leur récupération à l’aide de GraphQL. Les domaines spécifiques à l'amélioration incluent :

    • prise en charge étendue/ajoutée d’attributs personnalisés dans des domaines spécifiques tels que l’adresse du client
    • mise en cache ajoutée pour les attributs personnalisés
    • prise en charge améliorée des attributs personnalisés pour les produits
  • Les fonctionnalités de mise en cache améliorées de GraphQL améliorent la vitesse de chargement des pages. La fonctionnalité de mise en cache a été ajoutée à ces requêtes, ce qui accélère le temps de chargement des pages pour la plupart des pages PWA :

  • Amélioration des performances de l’analyseur GraphQL. Les performances de l’analyseur GraphQL ont été améliorées en réduisant le nombre d’appels de la méthode d’analyse par requête. On l'appelle maintenant une fois. Auparavant, l’analyseur était appelé au moins trois fois.

Nouveaux champs pour les mutations existantes

  • Ajout du champ quickorder_active aux requêtes storeConfig et availableStores . Ce champ indique si la fonction d’ordre rapide est activée.

  • Ajout des champs suivants aux mutations setBillingAddressOnCart et setShippingAddressesOnCart :

    • fax
    • middlename
    • prefix
    • suffix

Nouvelles requêtes et mutations

Requêtes et mutations obsolètes

Inventory management

Inventory management (v1.2.7) fournit des outils pour gérer l’inventaire des produits. Cette fonctionnalité développée par la communauté est fournie avec le code principal Adobe Commerce et Magento Open Source.

Métaphorage de l’extension Magento Open Source

Cette version inclut le métapaquet d’extension de Magento Open Source v1.0.0, qui regroupe automatiquement les extensions de Magento Open Source sélectionnées avec cette version principale. La version de cette extension incluse dans ce métapackage est installée lorsque composer update est exécuté, ce qui simplifie le processus de mise à niveau de l’extension lors de la mise à niveau vers la dernière version de base. Cette extension conserve un calendrier de publication indépendant.

Le métaphorage de l’extension Magento Open Source pour Magento Open Source 2.4.7 comprend les extensions suivantes :

Les futures versions de ce métapackage d’extension contiendront des extensions supplémentaires.

PWA Studio

PWA Studio v14.0 est compatible avec Magento Open Source 2.4.7-beta1. Plusieurs améliorations ont été apportées à l’accessibilité. Pour plus d’informations sur les correctifs, voir Versions de PWA Studio. Voir Compatibilité des versions pour obtenir la liste des versions de PWA Studio et de leurs versions Magento Open Sources principales compatibles.

Structure de l’API web

Cette version introduit deux nouveaux points de terminaison REST qui offrent une solution pour contourner une limitation de l’API REST GET et des points de terminaison POST V1/products/attributes. Ces points de terminaison renvoient la même valeur pour l’attribut is_filterable pour les options Filterable(with results) et Filterable(no results) de l’option Use in Layered Navigation. (La propriété d’attribut is_filterable est de type Boolean, ce qui ne permet pas de définir cette propriété sur Filterable(no results).)

Deux nouveaux points de terminaison REST ont été mis en oeuvre pour contourner ce problème :

  • PUT /V1/products/attributes/{attributeCode}/is-filterable/{isFilterable}. Paramètres de chemin d’accès : attributeCode (String) et isFilterable (int les valeurs sont : 0 est Non ; 1 est Filterable (with results) ; 2 est Filterable (no results)).
  • GET /V1/products/attributes/{attributeCode}/is-filterable. Paramètres de chemin d'accès : attributeCode (String).

Problèmes résolus

Nous avons corrigé des centaines de problèmes dans le code principal Magento Open Source 2.4.7. Vous trouverez ci-dessous un sous-ensemble des problèmes résolus inclus dans cette version.

Installation, mise à niveau, déploiement

  • La manipulation inutile du cache a été supprimée du processus de configuration. Auparavant, Magento Open Source avait écrit sa configuration sur le disque inutilement lorsque bin/magento setup:db-data:upgrade ou bin/magento setup:upgrade était exécuté, ce qui provoquait des problèmes avec certains modules lors de la configuration. GitHub-38124
  • Les problèmes de déploiement dus à une mémoire insuffisante et à des tables volumineuses ont été résolus. La commande bin/magento setup:upgrade n’échoue plus en raison d’erreurs de mémoire dépassées liées à des tables MySQL volumineuses.
  • bin/magento setup:install se termine désormais correctement une fois app/etc/config.php supprimé. Auparavant, le fichier manquant n’était pas régénéré pendant l’installation et Magento Open Source renvoyait une erreur. GitHub-37805
  • bin/magento setup:upgrade a été restructuré pour s’exécuter correctement lors de l’installation d’un nouveau module qui installe à la fois les tables et les indexeurs mview associés. GitHub-37304
  • La restauration de la base de données n’échoue plus en raison d’une erreur de délimiteur. Auparavant, le Magento Open Source renvoyait cette erreur lorsque bin/magento setup:rollback --db était exécuté : Syntax error or access violation: 1064 You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near 'delimiter' at line 1, query was: delimiter ;;.
  • La commande bin/magento setup:upgrade n’échoue plus avec ce type d’erreur liée à la limite de mémoire MySQL : PHP Fatal error: Allowed memory size of 4294967296 bytes exhausted (tried to allocate 20480 bytes). La migration d’attributs à sélection multiple a été optimisée pour consommer moins de mémoire pendant setup:upgrade.
  • La génération d’une sauvegarde de base de données fonctionne désormais comme prévu à partir de la ligne de commande et de l’administrateur. Auparavant, le Magento Open Source générait cette erreur : Syntax error or access violation: 1064 You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near 'delimiter' at line 1, query was: delimiter ;;.
  • L’exécution de setup:config:set sans spécifier le paramètre --lock-db-prefix n’efface plus la valeur actuelle du fichier env.php.
  • La configuration de vernis a été mise à jour afin d’empêcher les utilisateurs invités d’accéder au contenu mis en cache associé à d’autres groupes de clients.
  • bin/magento setup:upgrade se termine maintenant correctement lors de l’installation d’un nouveau module qui installe à la fois les tables et les indexeurs mview associés.
  • bin/magento setup:upgrade affiche désormais un message d’erreur plus informatif lorsqu’une rubrique de file d’attente de messages n’inclut pas de nom de rubrique. GitHub-34246
  • bin/magento setup:upgrade affiche désormais un message d’erreur plus informatif lorsque les fichiers XML fusionnés ne sont pas valides. Le message d’erreur comprend désormais le nom du fichier.

Interface utilisateur d’administration

  • Les tableaux sont désormais désactivés par défaut dans le tableau de bord. GitHub-38430
  • Le menu Ventes d’administrateurs affiche désormais correctement les sous-menus. Auparavant, les sauts de colonne ne fonctionnaient pas correctement et certains sous-menus ne s’affichaient pas. GitHub-37812
  • Les options du menu déroulant Select sont désormais visibles sur Admin Content > Pages lorsque plusieurs pages sont sélectionnées dans la grille. GitHub-35386
  • Correction du chemin d’accès à la valeur par défaut system/dashboard/enable_charts dans les paramètres de configuration. Les graphiques s’affichent désormais comme prévu dans l’Administration. GitHub-37668
  • Correction d’un problème d’affichage avec les grilles d’administration du client. Auparavant, les colonnes de la grille n’étaient pas entièrement contenues dans la page affichée.
  • Les couleurs de survol sont désormais appliquées comme prévu sur les lignes des grilles statiques d’administration. GitHub-35358
  • Le workflow de passage en caisse n’affiche plus d’avertissement lorsqu’un acheteur saisit un code postal pour la Grèce qui ne contient pas d’espace vide. GitHub-36676
  • Le lien Admin It's time to change your password redirige désormais vers la page Modifier le mot de passe administrateur comme prévu. GitHub-37902
  • Les suffixes de titre de page sont désormais inclus dans la balise title et la balise meta title pour les pages de produit. GitHub-37680
  • La condition d’état du stock de produit est désormais correctement appliquée pour les règles de produits connexes.
  • Le bouton Login as Customer s’affiche désormais correctement sur les appareils mobiles.
  • Adobe Commerce n’affiche plus le bouton Admin Add new customer group si l’utilisateur administrateur connecté n’est pas autorisé à ajouter un nouveau groupe de clients.
  • Un utilisateur administrateur disposant d’autorisations restreintes peut désormais enregistrer un produit enfant dont le produit parent est affecté à une autre portée. Auparavant, Commerce invalidait le cache d’un produit parent qui n’était pas affecté à la portée dans laquelle le produit enfant était modifié.
  • Les utilisateurs administrateurs peuvent désormais basculer entre les vues de filtre d’administration sans que les données d’affichage soient corrompues ou perdues. GitHub-37529

Lot de produits

  • La requête customerCart renvoie désormais toutes les remises appliquées sur les produits en bundle comme prévu. Auparavant, le total des remises appliquées à un produit en bundle était renvoyé sous la forme de zéro.
  • Les pages Détails du produit affichent désormais le prix correct pour les produits en regroupement pour lesquels une remise de 100 % a été appliquée. Auparavant, Magento Open Source n’appliquait pas une remise de 100 % sur les prix des produits groupés.
  • Les règles de prix du panier sont désormais appliquées aux lots de produits au lieu de chaque produit enfant pour les produits groupés à prix dynamique.
  • Correction d’une erreur qui se produisait lorsque vous utilisiez le point d’entrée POST V1/shipment pour créer une expédition contenant un produit de lot. Le point de terminaison ajoute désormais les éléments comme prévu et ne renvoie plus cette erreur : The shipment couldn't be saved.
  • Vous pouvez désormais utiliser l’itinéraire de l’API GET V1/shipment/ pour créer une expédition avec un produit en regroupement lorsque le produit a le type d’expédition together défini. Les produits groupés sont désormais également validés en fonction de leur propriété de type d’expédition.
  • Les acheteurs peuvent désormais modifier la quantité d’un produit en bundle dans leur panier d’achat de vitrine. Auparavant, Adobe Commerce ne gérait pas les valeurs "null" pour ItemId lorsque les produits étaient modifiés dans le panier du storefront et affichaient une erreur. GitHub-37696
  • Il est désormais possible d’ajouter des produits groupés à un ordre d’administration à l’aide de SKU contenant une barre oblique (/). Auparavant, les utilisateurs administrateurs ne pouvaient pas utiliser cette méthode pour ajouter des produits à une commande d’administrateur et le Magento Open Source renvoyait une erreur JavaScript.
  • Les utilisateurs administrateurs peuvent désormais définir des valeurs par défaut décimales pour les options de lot nouvellement ajoutées lorsque Qty Uses Decimal est activé pour le produit simple correspondant. Auparavant, les valeurs décimales ne pouvaient être définies que pour les sélections enregistrées.
  • Optimisation des performances pour l’enregistrement des produits en bundle avec un grand nombre d’options
  • Les produits groupés sont désormais importés avec succès sans dupliquer les SKU dans les options de produit. Auparavant, Magento Open Source créait plusieurs SKU en double dans les options de produit lorsque vous importiez des produits en lot avec des entrées en double.
  • Le prix du produit en bundle est désormais correctement calculé lorsque l’un des produits du bundle est en rupture de stock. Auparavant, si un produit faisant partie du lot était en rupture de stock, il était supprimé du calcul du prix.
  • Les produits en bundle s’affichent désormais en rupture de stock lorsque le dernier de leurs produits enfants requis est acheté. Auparavant, les produits en bundle étaient affichés en stock sur le storefront lorsque leurs produits simples étaient en rupture de stock.
  • Les problèmes de performance lors de l’ajout de lots de produits avec des options non requises au panier à l’aide de la mutation addBundleProductsToCart ont été résolus.
  • La requête categoryList renvoie désormais toutes les options de lot comme prévu lorsque le paramètre de configuration Show out-of-stock products est activé. Auparavant, les options en rupture de stock n’étaient pas incluses dans la réponse de requête.
  • Les produits groupés créés avec POST V1/products réussissent maintenant lorsque la portée du prix du catalogue est définie sur website. Auparavant, une violation de contrainte d’intégrité se produisait. GitHub-35595

Cache

  • Les catégories sont désormais visibles pour les acheteurs dans les magasins où le cache est défini sur Fastly CDN (Caching Application=Fastly CDN). Cela affectait à la fois les clients invités et les clients enregistrés.
  • Les cookies de cache après connexion sont désormais les mêmes après la navigation sur le site web. Auparavant, le contrôleur de connexion envoyait un cookie de cache incorrect et les pages pouvaient avoir été mises en cache plusieurs fois.
  • Les réponses des opérations de GET GraphQL sur les pages CMS qui contiennent des blocs CMS sont désormais effacées comme prévu dans le cache Fastly. Les mises à jour ultérieures du planning affichent désormais un contenu précis et à jour pour ces pages.
  • Le cache de page est désormais effacé comme prévu pour un produit parent lorsque l’un de ses produits enfants a été enregistré auprès de l’administrateur. Une vérification de module externe a été introduite pour atteindre l’invalidation du cache pour les variantes configurables, semblables à d’autres types de produits, quel que soit l’état de l’indexeur (planifié ou en temps réel). Auparavant, les prix n’étaient pas correctement mis à jour sur le storefront après la mise à jour d’une variation configurable de la part de l’administrateur.
  • Ajout d’un mécanisme de mise en cache pour les informations d’identification AWS. Un fournisseur d’informations d’identification utilise désormais le cache de Commerce pour mettre en cache les informations d’identification récupérées à partir d’AWS pour la configuration EC2.
  • Le module externe dont l’objectif est d’ajouter la balise de cache configurable lorsqu’un produit simple associé à un produit configurable est enregistré fonctionne désormais comme prévu. Toutes les balises de cache configurables appropriées sont supprimées comme prévu lorsqu’un produit simple est mis à jour par POST V1/products. Auparavant, tous les prix n’étaient pas mis à jour sur le storefront et les caches devaient être effacés manuellement. GitHub-36726

Panier et passage en caisse

  • Magento Open Source optimise désormais les performances en ne chargeant pas les données de guillemets spécifiques à l’utilisateur lors de la génération de pages pouvant être mises en cache, telles que les pages de détails du produit (PDP) et les pages CMS, lorsque le panier persistant est activé. Auparavant, le système chargeait inutilement les données de session spécifiques à l’utilisateur et citait les données pendant la génération de ces pages, ce qui affectait les performances.
  • Les attributs personnalisés des adresses personnalisées sont désormais enregistrés comme prévu dans la base de données. Auparavant, les valeurs d’attribut enregistrées dans la base de données étaient précédées du code d’attribut .
  • La génération du texte de filtre des règles de panier pour les attributs de produit a été améliorée. Les produits individuels ne sont plus chargés plusieurs fois.
  • Magento Open Source affiche désormais un message d’erreur informatif lorsqu’une erreur se produit lors du passage en caisse et ne renvoie plus l’acheteur à une étape précédente du passage en caisse. Auparavant, l’acheteur était renvoyé à la page d’expédition.
  • La requête cart ne renvoie plus la méthode et l’adresse d’expédition pour les paniers virtuels. Auparavant, lorsqu’un panier contenait des produits physiques et virtuels et que tous les produits physiques étaient supprimés, la réponse de requête du panier continuait à inclure des informations d’expédition.
  • Magento Open Source affiche désormais des messages informatifs lorsqu’une action de module complémentaire au panier est déclenchée. Auparavant, le The requested qty is not available ne s’affichait pas toujours comme nécessaire sur le storefront.
  • Les délais de chargement des pages de passage en caisse ont été améliorés pour les clients disposant de grands carnets d’adresses. Magento Open Source traite désormais uniquement le nombre d’adresses de client spécifié dans le paramètre Customer Addresses Limit. Auparavant, Magento Open Source chargeait l’intégralité du carnet d’adresses.
  • La quantité de produits peut désormais être modifiée dans le panier comme prévu pour les articles en stock lorsqu’un article est en rupture de stock. Auparavant, les acheteurs ne pouvaient pas modifier la quantité d’un produit lorsqu’un article était en rupture de stock.
  • Le filtre d’attribut de produit AdvancedSalesRule fonctionne désormais correctement avec le type de serveur principal d’attributs décimaux. Par conséquent, les règles de panier avec Coupon Type défini sur No Coupon fonctionnent désormais comme prévu.
  • Le montant total d’une remise panier complète est désormais appliqué comme prévu aux paniers qui contiennent à la fois des paniers et des produits configurables.
  • Les cookies de section client respectent désormais le paramètre de domaine du cookie. Auparavant, le mini panier ne se mettait pas à jour comme prévu dans les magasins qui contenaient des sous-domaines, même si la session était partagée.
  • L’envoi d’une commande à plusieurs adresses ne déclenche plus d’erreur lors du traitement des identifiants de région.
  • Les montants de remise fixe appliqués au niveau du panier sont désormais corrects.GitHub-37496
  • Les bons sont désormais appliqués avec succès à une commande lorsqu’un acheteur applique le bon après avoir sélectionné le mode d’expédition à taux fixe lorsqu’une règle de prix du panier avec la méthode d’expédition définie comme condition s’applique. Auparavant, la page du panier affichait l’erreur Bon non valide et le bon n’était pas appliqué. GitHub-34866
  • Les bons sont désormais appliqués avec succès à une commande lorsqu’un acheteur applique le bon après avoir sélectionné le mode d’expédition à taux fixe lorsqu’une règle de prix du panier avec la méthode d’expédition définie comme condition s’applique. Auparavant, la page du panier affichait l’erreur Bon non valide et le bon n’était pas appliqué. GitHub-34866
  • La case à cocher My billing and shipping address are the same reste maintenant cochée par défaut lorsqu’un acheteur utilise la saisie automatique Chrome pour indiquer son adresse de livraison, puis clique sur Suivant avant que le bloc des méthodes de livraison ne soit rechargé. GitHub-33725
  • La valeur applied_rule_ids de la table quote_item inclut désormais une liste correcte des ID de règle appliqués. Auparavant, cette valeur ne contenait que le dernier identifiant de règle appliqué.
  • Les données du mini-panier et du client dans le stockage local sont désormais réinitialisées lorsqu’une session est supprimée du serveur. Auparavant, ces données s’affichaient toujours lorsque le fichier de session était supprimé.
  • Les paniers distincts ne sont plus fusionnés par erreur à partir de l’administrateur lorsque le panier persistant est activé.
  • La taxe sur le panier et l’estimateur d’expédition reflètent désormais fidèlement la configuration de destination par défaut. Auparavant, lorsque vous configuriez les paramètres de calcul de destination de la taxe par défaut et que vous avez spécifié Etat/Région et ZIP, seule la valeur ZIP était affichée dans le panier sous Estimate Tax and Shipping. Cela résultait du fait que le Magento Open Source définissait l’identifiant de région sur non défini avant d’appeler l’instruction conditionnelle qui définit l’identifiant de région par défaut à partir de l’administrateur.
  • Magento Open Source ne renvoie plus cette erreur lors du passage en caisse lorsque le panier persistant est activé : Invalid state change requested. Auparavant, lorsque cette erreur était générée, plusieurs commandes avec le même quote_id étaient parfois créées.
  • Le mini panier affiche désormais les prix des produits en bundle qui reflètent les paramètres de configuration de la taxe sur le panier. Auparavant, le mini-panier incluait toujours des taxes dans les prix des produits groupés.
  • L’estimation de la livraison fournie à partir de la page du panier est désormais exacte. collectShippingRates est désormais défini une seule fois. Auparavant, l’estimation de la livraison était dupliquée. GitHub-36648
  • La requête cart ne renvoie plus d’erreur lorsqu’un produit figurant dans le panier spécifié est en rupture de stock. Auparavant, les acheteurs qui utilisaient cette requête pour effectuer un achat ne pouvaient pas terminer leur achat lorsqu’un article était en rupture de stock et leur page de passage en caisse était vide.
  • Les demandes d’API d’invité à POST V1/guest-carts/<cartId>/shipping-information ne renvoient plus l’état cancel si la page se recharge lors de la connexion à un environnement mobile. Auparavant, Magento Open Source lançait une erreur 500 et consignait cette exception : TypeError: Argument 2 passed to Magento\CustomerCustomAttributes\Model\Plugin\ProcessCustomerShippingAddressCustomAttributes::beforeSaveAddressInformation() must be of the type string, null given.
  • L’éligibilité à la livraison gratuite est désormais calculée comme prévu lorsque la condition Subtotal (Excl. Tax) des règles de panier est appliquée. GitHub-36760
  • La requête cart renvoie désormais la tarification de niveau correcte pour un produit. GitHub-29655
  • Des messages d’erreur informatifs ont été ajoutés à la page de passage en caisse pour guider les acheteurs lorsque l’application d’un bon sur la page d’expédition entre en conflit avec la méthode d’expédition sélectionnée. Auparavant, un message demandait aux acheteurs de revenir à la page précédente.
  • La fenêtre contextuelle d’authentification n’est désormais initialisée que lorsqu’elle est nécessaire et non dès que l’extraction d’invité est activée. Elle est maintenant initialisée lorsque l’acheteur invité tente de procéder à l’extraction et que l’extraction d’invité est désactivée. GitHub-30672

Règle de prix du panier

  • La condition de sous-sélection de produit de la règle de prix du panier inclut désormais l’option total (incl.tax) comme prévu. GitHub-34871
  • La condition de règle de prix de catalogue If an item is FOUND/NOT FOUND in the cart with ALL/ANY of these conditions true fonctionne désormais correctement avec les attributs de catégorie et de SKU. Auparavant, cette condition n’était pas correctement appliquée dans la logique des bons de réduction du prix du panier et les bons non valides étaient appliqués aux commandes. GitHub-37660
  • Vous pouvez désormais enregistrer une nouvelle règle de prix de panier avec l’extension Magento_OfflineShipping désactivée. Auparavant, le Magento Open Source générait cette erreur : report.ERROR: Warning: Undefined array key "simple_free_shipping". GitHub-37580
  • Les règles de prix du panier sont désormais appliquées comme prévu lorsqu’une règle de prix du panier associée à une méthode d’expédition est configurée pour le magasin et que cette méthode d’expédition est remplacée par une autre lors du passage en caisse. Auparavant, la valeur applied_rule_ids n’était jamais modifiée dans la table sales_order_item et la règle de prix du panier n’était pas appliquée à la commande.
  • Les bons sont désormais appliqués avec succès à une commande lorsqu’un acheteur applique le bon après avoir sélectionné le mode d’expédition à taux fixe lorsqu’une règle de prix du panier avec la méthode d’expédition définie comme condition s’applique. Auparavant, la page du panier affichait l’erreur Coupon is Not valid et le coupon n’était pas appliqué. GitHub-34866

Catalogue

  • L’exécution de bin/magento cache:clean ou de bin/magento cache:flush n’efface plus l’intégralité du cache de la page entière intégré ou vernis, sauf indication contraire. GitHub-38301
  • Les vendeurs peuvent désormais utiliser le carrousel de produit pour créer des blocs CMS lorsque catalog_product_price dimensions-mode est défini sur website. Auparavant, Magento Open Source n’enregistrait pas le bloc et envoyait cette erreur SLQ : report.CRITICAL: PDOException: SQLSTATE[42S02]: Base table or view not found: 1146 Table.
  • Magento Open Source n’affiche plus les images en double lorsque la couleur du produit est modifiée sur la page des détails d’un produit. GitHub-36243
  • Optimisation de l’algorithme pour la synchronisation des valeurs spécifiques à un site web après l’ajout d’un nouveau magasin ou la modification d’un magasin existant dans des environnements multi-magasin volumineux.
  • Le processus de nettoyage des fichiers image mis en cache a été amélioré afin d’éviter la création de répertoires masqués dans le dossier pub/media/catalog/product. Auparavant, les répertoires masqués entraînaient des problèmes d’espace disque lors des opérations de nettoyage. L’opération peut être arrêtée, ce qui laisse derrière lui des répertoires masqués temporaires qui n’ont jamais été supprimés.
  • Les prix des produits en bundle sont désormais correctement calculés et un problème lié à l'ordre des opérations lors du calcul des prix a été résolu. GitHub-35665
  • Une clause inutile a été supprimée des requêtes d’index catalog_product_price, ce qui a amélioré les performances de cet indexeur sur les magasins avec des catalogues volumineux. GitHub-32382
  • Magento Open Source n’insère plus de texte de description de produit dans le champ Meta Description de la page Détails du produit lorsque ce champ a été laissé vide. Auparavant, lorsqu’une description de produit contenait du code d’HTML généré par Page Builder ou un autre éditeur d’HTML, l’HTML s’affichait dans le champ Meta Description et vous ne pouviez pas laisser ce champ vide.
  • Les options de produit configurables sur les pages PDP de produit configurables ne sont plus affectées par les autres options de produit configurables sur la page. Auparavant, les produits configurables avec des attributs de liste déroulante ne déclenchaient plus d’exception lorsqu’un carrousel de produit était présent sur la page des détails du produit. Les options de produit configurables n’étaient pas sélectionnables lorsque d’autres produits configurables avec des options d’échantillon étaient présents sur la page.
  • Les informations sur les produits récemment consultés s’affichent désormais conformément à la configuration de la vue de magasin. Auparavant, les données de produit récemment consultées n’étaient pas mises à jour par vue de magasin, y compris le nom et la langue préférée.
  • Les vidéos Vimeo sont désormais lues comme prévu sur les pages de produits dans la vue mobile dans les navigateurs web Chromium.
  • La commande bin/magento catalog:images:resize génère désormais correctement des images de produit pour les produits affectés à un site web personnalisé avec un thème personnalisé.
  • Les métadonnées avec des valeurs NULL ou NOT NULL sont désormais enregistrées pour le magasin par défaut conformément à la case à cocher Utiliser la valeur par défaut comme prévu. Auparavant, les métadonnées avec la valeur NULL n’étaient pas enregistrées lorsque cette case était décochée.
  • Les vendeurs peuvent désormais supprimer une image existante de la page des détails du produit, puis charger une nouvelle image portant le même nom. Auparavant, dans ces circonstances, la page du produit storefront n’affichait pas la bonne image.
  • La requête productDetail renvoie désormais le nom du produit au lieu de null lorsque l’attribut image de produit alt est défini comme vide.
  • Les commandes qui contiennent à la fois des produits téléchargeables et des produits physiques incluent désormais des liens de travail vers le produit téléchargeable dès que la commande est terminée. Auparavant, les liens vers les produits téléchargeables n’étaient pas disponibles tant que les produits physiques dans la même commande n’étaient pas livrés.
  • Les réécritures d’URL sont désormais mises à jour lorsqu’une catégorie est déplacée d’une catégorie magasin/racine vers une autre catégorie magasin/racine. Les entrées de base de données obsolètes sont désormais supprimées lorsque les sous-catégories sont transférées vers de nouvelles catégories parentes. La base de données ne contient désormais que les entrées pertinentes. Auparavant, le url_path n’était pas mis à jour avec l’identifiant de magasin approprié.
  • Le point d’entrée REST V1/products/<sku>/media peut désormais traiter le chargement simultané de plusieurs images multimédias. Auparavant, lors du traitement simultané de plusieurs requêtes, des données incohérentes étaient créées, et Magento Open Source envoyait une erreur lorsque ces données étaient enregistrées dans la base de données.
  • Les performances de réindexation partielle pour les indexeurs de catégories de produits et de produits ont été améliorées. Auparavant, la tâche cron indexer_update_all_views exécutait des réindexeurs plusieurs fois par produit ou catégorie unique.
  • Lorsque le statut du stock de produit est automatiquement mis à jour vers le statut en rupture de stock en fonction de la configuration du stock (quantité), le statut du stock est ensuite mis à jour vers le statut en stock lors de la mise à jour de la quantité de stock. Auparavant, le paramètre stock_status_changed_auto était ignoré lorsque la configuration de stock d’un produit était mise à jour vers en stock.
  • Le tri des barres d’outils fonctionne désormais comme prévu sur les pages de recherche lorsque le paramètre Remember Category Pagination est activé. GitHub-33220
  • Les attributs à sélection multiple sont désormais enregistrés comme prévu lorsque la case Use Default Value de la portée de vue magasin est sélectionnée. Auparavant, cette case à cocher était décochée lorsque le produit était modifié et que la valeur par défaut était enregistrée.
  • Les utilisateurs administrateurs disposant d’un accès limité au site web peuvent désormais ajouter des images à un produit qui entre dans leur portée. Si l’utilisateur administrateur n’a pas les droits d’accès au produit, Magento Open Source affiche un message informatif. Auparavant, les utilisateurs administrateurs disposant d’un accès limité au site web ne pouvaient pas ajouter d’images aux produits auxquels ils avaient accès.
  • Magento Open Source affiche désormais le nom correct après le tri des produits par nom dans Admin > Category > Products in category dans les déploiements multi-boutiques où les noms de produits varient selon les magasins. GitHub-36208
  • La mutation addProductsToCart renvoie désormais des options personnalisables avec des données. Auparavant, il renvoyait uniquement des options personnalisables vides. GitHub-37599
  • L’état des produits en arrière-plan s’affiche désormais correctement sur le storefront. Auparavant, les produits disponibles pour l’expédition étaient incorrectement identifiés comme des commandes en souffrance.
  • Les produits exportés ont désormais la valeur manage_stock correcte lorsque la valeur use_config_manage_stock est égale à 1. Auparavant, cette valeur par défaut était incorrecte.
  • L’accès aux produits téléchargeables à partir de l’administrateur n’entraîne plus d’erreur lorsque l’utilisateur administrateur modifie la vue de magasin de la vue utilisée lors de la création du produit à une autre vue de magasin. Les prix des produits sont désormais convertis en valeur flottante lorsqu’un utilisateur administrateur passe de la vue de magasin de toutes les vues de magasin à la vue de magasin par défaut. Auparavant, Magento Open Source envoyait une erreur. GitHub-37519
  • Magento Open Source n’affiche plus de message d’avertissement lorsque vous enregistrez un produit qui a été créé avec des options personnalisées après la suppression de son image.
  • Les images miniatures de produit s’affichent désormais comme prévu dans l’e-mail d’alerte de stock de produit envoyé lorsqu’un produit est de nouveau en stock. Auparavant, cette image n’était pas affichée dans l’e-mail d’alerte.
  • Le nombre de produits dans l’arborescence des catégories (Admin Catalog > Category) est désormais exact. Auparavant, le nombre de produits de catégorie ne pouvait pas être récupéré de la table catalog_category_product_index. La faute de frappe qui a déclenché ce bogue a été corrigée. GitHub-35417
  • L’image principale du produit sur la page des détails du produit ne se déplace plus visiblement vers le bas lors du chargement de la page lorsque product_image_white_borders dans le thème view.xml est désactivé. Auparavant, l’image du produit était visiblement déplacée vers le bas au chargement de la page en raison de paramètres de hauteur incorrects dans Fotorama JS.
  • Les clients sont désormais informés des baisses de prix lorsque le client est abonné à des alertes de chute de prix. Auparavant, les notifications de baisse de prix n’étaient pas toujours envoyées en raison de la mise en cache au niveau de l’application.
  • La validation côté serveur a été ajoutée au processus de création d’attributs de produit via l’API web. Vous ne pouvez pas activer le champ Use in Layered Navigation Catalog lorsque la valeur du champ Catalog Input Type for Store Owner est Text Field, Text Area, Text Editor, Date ou Date and Time. Auparavant, les produits étaient omis des catégories et des résultats de recherche.
  • La page de catégorie se recharge désormais avec la pagination correcte une fois qu’un acheteur a ouvert la page, modifié la pagination, accède à une page de produit, puis revient à la page de catégorie. GitHub-36563
  • Les produits simples en rupture de stock qui sont des options pour un produit configurable s’affichent désormais comme désactivés sur le storefront lorsque Display Out of Stock Products est défini sur Oui. Auparavant, toutes les options s’affichaient comme disponibles, en dépit de leur état et de leur disponibilité réelle.
  • La mise à jour de l’attribut de portée du site web dans une vue de magasin spécifique ne remplace plus la valeur de cet attribut dans la portée globale. Auparavant, l’importation des prix des produits lorsque plusieurs lignes étaient disponibles avec le même SKU et store_view_code entraînait des prix inexacts pour les portées de consultation par défaut et Toutes les boutiques.
  • Les marchands peuvent désormais ajouter une image de GIF à la galerie d’images d’un produit à partir de l’administrateur. Auparavant, Magento Open Source affichait cette erreur : imagecolorsforindex(): Argument #2 ($color) is out of range.
  • Des vérifications ont été ajoutées pour gérer les erreurs qui résultent de clés de tableau non définies. Auparavant, une erreur se produisait lors de la génération de la liste blanche des schémas déclaratifs.
  • Magento Open Source renvoie désormais un résultat valide pour la date personnalisée 01/01/1970. Auparavant, l’attribut personnalisé renvoyait cette erreur : Invalid input datetime format of value '1/01/1970. GitHub-37274
  • Les requêtes routes qui utilisent des fragments renvoient désormais des informations de catégorie comme prévu. Auparavant, une erreur de serveur interne se produisait sur la page de catégorie. GitHub-35906
  • Les problèmes liés au processus de réindexation partielle cataloginventory_stock ont été résolus et les performances de l’indexeur ont été améliorées. Auparavant, les catégories de stock et de produit n’étaient pas mises à jour avec précision.
  • Magento Open Source génère désormais une redirection 301 pour un produit lorsque la catégorie à laquelle il appartient a été déplacée vers un nouveau parent. GitHub-37039

Règles du catalogue

  • Les règles du catalogue sont désormais correctement indexées lorsqu’elles sont activées par la mise à jour du planning. Par conséquent, les prix réduits sont désormais correctement générés et indexés. Auparavant, lorsque deux règles de catalogue étaient disponibles et qu’une règle était activée après la première règle avant que l’opération d’indexation de règle de catalogue ne soit terminée, les prix de remise de règle de catalogue n’étaient pas générés pour la deuxième règle de catalogue.
  • Les règles du catalogue sont désormais appliquées comme prévu dans un environnement multisite.

Produits configurables

  • Les vendeurs peuvent désormais sélectionner Skip quantity at this time et Skip image uploading at this lors de la configuration d’un produit configurable sans affecter la source des produits simples associés. Auparavant, la sélection de Skip quantity at this time entraînait la disparition des sources de produits.
  • L’étiquette As low as n’est plus affichée pour un prix de produit configurable lorsque toutes les options ont le même prix.
  • Les utilisateurs administrateurs disposant d’autorisations de site web peuvent désormais enregistrer un produit enfant qui fait partie d’un produit configurable dans un autre contexte de magasin. Les processus de réindexation ignorent désormais ce type de produit configurable.
  • Les produits configurables comportant deux produits enfants ne sont plus marqués comme étant en rupture de stock lorsqu’un produit enfant est désactivé par une mise à jour planifiée. Il s’agissait d’un problème connu pour la version 2.4.7-beta1.
  • Les performances des opérations d’enregistrement pour les produits configurables avec plusieurs options ont été améliorées. Auparavant, les délais d’expiration pouvaient survenir lors des opérations d’enregistrement de produit. GitHub-36928
  • L’affichage du storefront des prix configurables des produits change désormais comme prévu lorsqu’un acheteur sélectionne une option de produit. GitHub-37378

Coupons

  • Les codes coupon comportant un nombre limité d’utilisateurs par client peuvent désormais être utilisés une seconde fois lorsque la commande pour laquelle ils ont été utilisés échoue. Auparavant, le code promotion n’était pas publié lorsque la commande précédente était annulée.
  • Les codes coupon contenant des espaces ne sont plus invalidés. Auparavant, si un code de bon contenait un caractère d’espace (avant ou après le code réel), la validation échouait. GitHub-38048
  • La valeur de bon à usage unique d’un acheteur est désormais restaurée comme prévu lorsque la commande à laquelle il a été appliqué est annulée.
  • Le point de terminaison GET V1/coupons/<couponId> renvoie désormais la réponse attendue complète pour les coupons créés manuellement, comme pour les coupons générés automatiquement. Auparavant, certains champs étaient omis (par exemple, usage_limit, usage_per_customer et created_at).

cron

  • La tâche cron aggregate_sales_report_bestsellers_data ne crée plus de tables MySQL temporaires très volumineuses et s’exécute correctement. Cette tâche cron insère désormais des données par magasin, et non pour tous les magasins à la fois. Auparavant, cette tâche cron pouvait entraîner des erreurs No space left on device.
  • Le nombre d’enregistrements en attente dans la table cron_schedule a été réduit en empêchant les tâches cron d’acquérir des verrous de tâche cron inutiles. Auparavant, les tâches cron tentaient d’acquérir des verrous lorsqu’il était trop tard pour exécuter la tâche. Les tâches Cron dans cron_schedule n’ont pas été marquées comme manquées, même si elles avaient déjà dépassé l’heure planifiée. Magento Open Source a également affiché cette erreur à plusieurs reprises dans le journal des erreurs : report.WARNING: Could not acquire lock for cron job: indexer_update_all_views.
  • Correction de l'erreur fatale "diviser par zéro" dans les expressions cron. GitHub-37804
  • Le processus sales_clean_quotes cron a été optimisé pour s’exécuter plus rapidement en ajoutant un index composite sur store_id et updated_at columns dans la table des guillemets. Cette modification améliore les performances de la tâche cron lors du traitement de nombreux guillemets.
  • Les utilisateurs administrateurs peuvent désormais afficher la tâche que le processus bin/magento cron:run effectue actuellement. Le titre du processus en cours d’exécution répertorie désormais les noms des groupes et des tâches. GitHub-34321

Client

  • Magento Open Source affiche désormais les champs Date of Birth, Tax/VAT Number, Gender, Telephone, Company et Fax sur la page de modification du client en fonction des paramètres de configuration. GitHub-36196

Email

  • Les emails contenant des diacritiques ou des accents (c'est-à-dire des emails utf8) sont désormais pris en charge pour les clients et les entreprises, ainsi que pour le placement de commandes par les invités et les clients enregistrés. Auparavant, Magento Open Source n’enregistrait pas les enregistrements de client contenant des diacritiques et affichait cette erreur : Something went wrong while saving the customer.
  • Les noms d’expéditeur d’emails ne peuvent plus inclure de deux-points. Une nouvelle règle de validation empêche désormais l’enregistrement des noms d’expéditeur contenant les deux-points de la section Stocker les adresses électroniques de l’administrateur Stores > General. Auparavant, les marchands pouvaient enregistrer un nom d’expéditeur contenant un caractère deux points, ce qui entraînait des erreurs au serveur de messagerie.
  • Les adresses électroniques du client peuvent désormais inclure des diacritiques. Auparavant, la validation frontale interdisait la création d’un utilisateur avec des signes diacritiques dans son adresse électronique. GitHub-12075
  • Les emails d’alerte de stock et de prix sont désormais traduits en fonction de la langue configurée pour la vue de magasin par défaut du site web. Auparavant, ces emails n’étaient pas traduits.
  • POST V1/order/notify-orders-are-ready-for-pickup envoie désormais un email pour avertir les clients qu’une commande est prête à être récupérée uniquement lorsque la commande est prête. L’e-mail est maintenant déclenché uniquement lorsque la demande a été satisfaite sans exception.

Frameworks

  • Amélioration du débogage en ajoutant la valeur UNCACHEABLE lors de la génération d’un en-tête HTTP avec vernis en cours d’utilisation. Auparavant, seules les valeurs HIT ou MISS étaient générées. GitHub-37912
  • Ajout du code pour la prise en charge de la gestion de la compression par défaut du vernis. GitHub-38309
  • La commande varnish:vcl:generate comprend désormais un input-file argument. Cela prend en charge l’ajout d’un VCL personnalisé à un référentiel Git, par rapport à la racine Commerce. GitHub-37363
  • La prise en charge de Varnish 4.x et 5.x a été supprimée du code base. GitHub-38304
  • phpcodesniffer-composer-installer dans composer.json a été mis à niveau vers la version 1.0.0. GitHub-36913
  • Les caractères qui ne sont pas conformes à RFC3986 ont été supprimés du code base. GitHub-38355
  • Correction d’une balise de document PHP incorrecte dans la classe Magento\Reports\Block\Adminhtml\Shopcart\Product\Grid. GitHub-38186
  • Refactorisation du code dans l’ensemble du code base créé lors de la pratique de codage, qui imposait que toute section de cache incluse dans le fichier app/etc/env.php inclurait une section frontale. Cette refactorisation résout les problèmes potentiels lors de la mise à niveau des déploiements Magento Open Source antérieurs à la version 2.4.4. GitHub-38363
  • Clarification du message d’erreur associé à StockItemValidator.php lorsqu’un identifiant de stock avec une valeur de 0 est fourni lors d’un appel API. GitHub-31107
  • Ajout d’un tableau vide par défaut à $tagGenerators dans CompositeTagGenerator pour empêcher les erreurs lors de la compilation d’injection de dépendance. Auparavant, l’exécution de la commande bin/magento setup:upgrade lorsque les modules Magento_DirectoryGraphQl et Magento_StoreGraphQl étaient désactivés entraînait une erreur. GitHub-38165
  • La classe AlgorithmProviderFactory inutilisée a été supprimée, ainsi que les dépendances de cette classe dans les classes JweAlgorithmManagerFactory.php, JweContentAlgorithmManagerFactory.php et JwsAlgorithmManagerFactory. GitHub-37783
  • Le fichier var/log/system.log ne contient plus de messages d’erreur main.INFO. Le journal des entrées de menu a été déplacé du niveau INFO vers DEBUG. Auparavant, le fichier var/log/system.log était inondé de messages de ce type : Add of item with id Magento_Theme::design_config was processed … .
  • Le préchargement des redis n’échoue plus lorsque exec() renvoie false (faux). La vérification a été ajoutée au processus de préchargement pour empêcher array_combine de recevoir false comme second argument. Par conséquent, le préchargement continuera à s’exécuter lorsque exec() renvoie false. GitHub-37509
  • Refactorisation du module Magento_CatalogWidget pour remplacer les fonctions d’échappement $block par des fonctions d’échappement $escaper. GitHub-37107
  • Swaziland a été mis à jour vers Eswatini tout au long de la base de code. GitHub-37873
  • Ajout de la nouvelle monnaie nicaraguayenne (NIO) à la liste des devises disponibles.
  • Correction d’un nom de variable dans CatalogRule/Controller/Adminhtml/Promo/Catalog/NewConditionHtml.php. GitHub-38093
  • Résolution des erreurs d’arrondi de sous-total survenues dans les transactions pour les produits pour lesquels la quantité décimale a été activée. GitHub-37817
  • Le filtre de date pour la grille client Admin fonctionne désormais comme prévu en fonction des paramètres régionaux spécifiés.
  • La commande bin/magento setup:upgrade n’échoue plus en raison du type de données de variable $schemaPatch. Auparavant, la valeur de chaîne était transmise à la fonction get_class, ce qui provoquait l’erreur. GitHub-37545
  • La connexion à la base de données MySQL est maintenant restaurée si la connexion expire au cours d’une transaction lorsque vous définissez max_messages = 0 pour le consommateur. Auparavant, la connexion était arrêtée.
  • Le module principal magento/module-release-notification a été marqué comme obsolète dans le code de développement 2.4 avec ce commentaire : Starting from Magento 2.4.7, Magento_ReleaseNotification module is deprecated in favor of another in-product messaging mechanism.
  • La génération du code proxy génère désormais des fichiers proxy et d’usine comme prévu pour les déploiements exécutés en mode de production. GitHub-35252
  • L'état indien du Ladakh est maintenant répertorié comme une option dans les menus déroulants de l'adresse d'administrateur State . GitHub-33698
  • Le télex de compte à rebours des événements s’affiche désormais comme prévu sur la page de catégorie.
  • La balise @author interdite a été supprimée de la base de code, y compris ces modules : Magento_user-variable-wee, Magento_Catalog et Magento_Customer, Magento_Wishlist, Magento_Review Tax, et dans l’ensemble de la structure. GitHub-37245, GitHub-37246, GitHub-37249, GitHub-37263
  • Le sérialiseur JSON dans le module User a été remplacé par un nouveau sérialiseur plus précis (JsonHexTag). Auparavant, Magento Open Source se bloquait parfois lors de la tentative d’utilisation de données sérialisées par le sérialiseur standard lorsqu’il contenait des éléments sans séquence d’échappement. GitHub-31377
  • Les erreurs de pipeline rompues ne se produisent plus lors de l’exécution d’une réindexation complète (bin/magento indexer:reindex). Les connexions AMPQ sont maintenant fermées avant que le gestionnaire de processus ne duplique les processus.
  • Le programme de validation des messages de la file d’attente valide désormais le sous-type de tous les éléments de tableau. Auparavant, le Magento Open Source lançait une exception.
  • La configuration de la connexion à la file d’attente par rubrique dans app/etc/env.php fonctionne désormais correctement. Auparavant, la file d’attente des alertes de produit ne se générait pas correctement lorsqu’une nouvelle file d’attente de messages était créée avec un exchange personnalisé. Si la connexion à la file d’attente d’une rubrique a été configurée dans app/etc/env.php avec un exchange personnalisé, une nouvelle liaison a été créée pour toutes les rubriques avec cet exchange personnalisé. Les vendeurs ne pouvaient pas traiter les alertes de produits.
  • Les formats temporels marqués d’un commentaire /* mariadb-5.3 */ ne provoquent plus d’erreurs pendant bin/magento setup:install lors de la mise à niveau du serveur MariaDB vers la version 10.5.1 ou ultérieure.
  • Le pilote AwsS3 fonctionne désormais comme prévu pour remplacer l’implémentation du stockage de fichiers par défaut de base. Auparavant, les données pouvaient être corrompues lorsque ce pilote était configuré pour le stockage des fichiers. GitHub-37844
  • Les commandes bin/magento config:show et set qui utilisent des variables $_ENV prennent désormais en charge l’utilisation de sites web et de codes de magasin contenant des majuscules ou des majuscules.
  • Ajout de classes avec !important utilisées dans Tailwind 3 pour la prise en charge de la mise en page CSS. GitHub-37568
  • Une dépendance jQuery manquante a été ajoutée au fichier trim-input.js. GitHub-37683
  • Les détails spécifiques à l’événement sont désormais transmis en tant que second attribut (context) de la méthode log. GitHub-37879
  • Des valeurs de rapport d’aspect ont été ajoutées aux images de catalogue et des scripts inutiles ont été supprimés de la structure de l’interface utilisateur. GitHub-37691
  • Révision des messages d’erreur déclenchés par une configuration XML non valide pour plus d’informations. GitHub-37788
  • Refactorisation du code obsolète lié à la création de propriétés dynamiques dans l’ensemble du code base.
  • Les performances des indexeurs pour les grands magasins disposant de bases de données de produits extrêmement actives ont été améliorées. Les indexeurs indexent désormais les dernières informations sur les produits une fois pour chaque index plutôt que plusieurs fois. Auparavant, les produits disparaissaient du site web et les données sur les produits pouvaient être obsolètes sur le site web. GitHub-30012
  • L’état d’enregistrement mview_state indique désormais avec précision l’état en fonction de l’activité de modification lorsqu’une connexion à la base de données esclave est disponible. Auparavant, ces enregistrements conservaient l’état waiting dans les déploiements cloud même lorsqu’il n’y avait aucune nouvelle entrée dans le journal des modifications.
  • Ajout de la prise en charge de l’option precision pour le format de devise afin de préserver la parité des fonctionnalités avec la classe ZendCurrency obsolète.
  • Les messages de cookie ont été convertis en attributs observables et les développeurs peuvent désormais manipuler l’état , ce qui peut potentiellement déclencher des modifications de l’interface utilisateur. Auparavant, les cookies étaient en lecture seule et ne pouvaient pas être manipulés. GitHub-37308
  • Les utilisateurs administrateurs peuvent désormais générer une facture lorsque leur instance de Magento Open Source est connectée au stockage S3. Auparavant, Magento Open Source affichait cette erreur : Cannot create image resource. File not found. GitHub-35706
  • Magento Open Source consigne désormais un message d’exception comme prévu lorsque la validation du numéro de TVA par le service de validation VIES échoue. GitHub-36065
  • Le nom Administrators a été supprimé de la requête utilisée pour récupérer le rôle d’administrateur lors de la création du rôle d’administrateur. GitHub-36998
  • La commande bin/magento setup:config:set n’échoue plus lorsqu’un nom d’utilisateur de base de données non valide est inclus dans le fichier app/etc/env.php. GitHub-37409
  • Le tri par colonne sur des mots réservés dans un composant par défaut de l'interface utilisateur d'administration n'entraîne plus d'erreur SQL dans var/log/exception.log. GitHub-37423
  • Ajout de AddDataForCostaRica.php pour fournir des informations sur l'état du Costa Rica. GitHub-37382.
  • Amélioration du message d’erreur pour le scénario où l’utilisateur tente d’accéder à une URL non valide à partir de l’administrateur. GitHub-35682.
  • Param $options[position] pour les symboles de devise fonctionne désormais comme prévu et prend en charge la personnalisation de la position du symbole de devise. Auparavant, après la migration à partir de Zend Framework 1, la méthode toCurrency ignorait le paramètre position . Ce problème se produisait dans l’interface d’administration.
  • Mutex a été mis en oeuvre pour les commandes afin d’empêcher les conditions de concurrence lors de la mise à jour par des requêtes simultanées. Auparavant, les requêtes simultanées (conditions de concurrence) pour les annulations de commande provoquaient des entrées dupliquées dans la table inventory_reservation.
  • La fonction populateWithArray transforme désormais les propriétés de l’objet pour gérer correctement la casse, ce qui la rend compatible avec les getters et setters AbstractModel. Auparavant, la mise en forme de la casse du serpent était incorrecte lorsque le nom de l’attribut de données contenait plusieurs lettres majuscules dans une ligne.
  • La valeur d’incrément automatique dans la table catalog_product_entity_varchar s’incrémente désormais correctement après l’enregistrement d’un produit. Auparavant, cette valeur augmentait de dix.
  • Magento Open Source ne renvoie plus cette exception de système de fichiers lorsque vous essayez de vider le cache JavaScript/CSS : No such file or directory.
  • La valeur de value_id dans customer_entity_int est désormais incrémentée correctement. Une requête de mise à jour est exécutée au lieu de insert on duplicate key update lors de la mise à jour d’une entité qui incorpore ces attributs. Par conséquent, les colonnes à incrémentation automatique utilisées dans le modèle de VEC se développent désormais de manière linéaire. Auparavant, le processus d’auto-incrémentation des colonnes ignorait les valeurs en raison de l’échec des requêtes d’insertion. GitHub-28387
  • Suppression de l’espace blanc superflu des attributs id qui ne le nécessitent pas. (Ce bogue a été introduit par une modification du code Magento Open Source 2.4.6.)
  • Les codes de magasin n’apparaissent plus dans l’URL du magasin lorsque celui-ci est en mode magasin unique. GitHub-36831
  • Des mises à jour mineures ont été apportées aux modules externes around. GitHub-31443
  • Les échantillons Helper ont été restructurés pour supprimer les alias d’importation trompeurs. GitHub-31373
  • Les utilisateurs administrateurs peuvent désormais supprimer ou renommer un fichier sitemap.xml comme prévu. Auparavant, un utilisateur administrateur pouvait supprimer le fichier de l’administrateur, mais il restait dans le système de fichiers. GitHub-37468
  • Les coupons ne sont plus marqués comme utilisés lorsque le paiement échoue pour la commande à laquelle ils ont été appliqués. Les messages de file d’attente sont maintenant traités dans l’ordre dans lequel ils sont publiés au démarrage du consommateur. Auparavant, le premier message était extrait de la file d’attente pour vérifier simplement si les messages étaient placés en file d’attente et était rejeté par la suite, ce qui provoquait le premier traitement du premier message en dernier.
  • Magento Open Source ne renvoie plus d’exception dans le fichier journal lorsqu’un utilisateur tente d’imprimer un libellé d’expédition. Auparavant, si une extension modifiait les en-têtes de réponse contenant une pièce jointe, le système envoyait une exception dans le fichier journal.
  • La prise en charge d’autres classes d’HTML a été ajoutée à elements.xsd. GitHub-36891

Correctifs généraux

  • Modification du nom de la variable reponseBody en responseBody dans app/code/Magento/CatalogRule/Controller/Adminhtml/Promo/Catalog/NewConditionHtml.php.GitHub-38093
  • La planification des mises à jour des produits n’efface plus les données d’attributs à sélection multiple. Auparavant, lorsqu’une mise à jour était planifiée pour un produit, les données d’attribut à sélection multiple du produit étaient effacées par erreur. GitHub-37675
  • L’enregistrement d’un produit avec une portée de magasin autre que celle par défaut n’entraîne plus l’application d’un champ de magasin inchangé lors du chargement à l’aide de ProductRepository. GitHub-8897
  • Des messages d’erreur informatifs ont été ajoutés à la validation des champs personnalisés sur les pages Détails du produit. GitHub-38006
  • Il est désormais possible d'utiliser des caractères spéciaux dans les champs de nom. Auparavant, le caractère d’esperluette (&) était limité dans le programme de validation du nom, ce qui bloquait les opérations d’ajout ou de modification du client lorsque le nom du client contenait une esperluette. GitHub-38080
  • Les utilisateurs administrateurs disposant d’un accès limité à un magasin spécifique peuvent désormais utiliser une action de mise à jour en masse pour mettre à jour les révisions de produits. Auparavant, le Magento Open Source lançait cette exception : report.CRITICAL: TypeError: array_intersect(): Argument #1 ($array) must be of type array, null given in app/code/Magento/AdminGws/Model/Models.php:439.
  • La fonctionnalité Afficher le mot de passe de la page de connexion storefront affiche désormais les mots de passe comme prévu. Auparavant, les mots de passe n’étaient pas affichés. GitHub-37432
  • La liste de comparaison des produits est désormais toujours spécifique au site web pour les clients invités et ne contient pas les produits qui ont été ajoutés à partir d’autres sites web, y compris les produits qui ont été affectés aux deux sites web.
  • Les blocs de contenu CMS contenant des émoticônes ne sont plus tronqués après l’émoticône lors de leur enregistrement dans la base de données. Auparavant, le contenu était tronqué après l’émoticône, car la configuration de base de données par défaut ne prenait pas en charge les caractères à quatre octets.
  • Les mots de passe s’affichent désormais comme prévu lorsque la case à cocher Show Password de la page de connexion est active.
  • L’attribut système Reset Password Token de l’entité client (rp_token) de validation des attributs a été supprimé lors de la création du compte client et la validation des caractéristiques est incluse uniquement dans l’e-mail client qui en résulte. Auparavant, Magento Open Source n’enregistrait pas l’enregistrement du client et affichait cette erreur : Something went wrong while saving the customer.
  • Vous pouvez désormais enregistrer les modifications apportées à la grille Pages d’administration et Bloc après la suppression d’une colonne. GitHub-37525
  • Les clients peuvent désormais se connecter avec un nouveau mot de passe d’un appareil après avoir réinitialisé leur mot de passe sur un autre appareil.
  • Le champ Etat/Province de l’adresse de l’administrateur conserve désormais la dernière valeur enregistrée comme prévu. Auparavant, lorsque vous supprimiez la valeur de ce champ, Magento Open Source continuait à afficher la valeur supprimée dans le champ Etat/Province. GitHub-36846
  • Les erreurs ne se produisent plus lors des demandes d’un flux RSS pour les catégories lorsque RSS Feed Top Level Category est activé. Auparavant, la navigation sur la page de catégorie de flux RSS entraînait des erreurs CRITICAL Elasticsearch dans les fichiers journaux lorsque RSS Feed Top Level Category était activé.
  • La valeur correcte est désormais enregistrée pour gws_store_groups lorsque la portée du rôle est modifiée lors de la création du rôle utilisateur. Auparavant, lorsque la portée du rôle était sélectionnée en tant que All, la valeur gws_store_groups était enregistrée comme nulle lors de la création de l’utilisateur, mais pas lors de la modification du rôle. En outre, si la portée du rôle a été sélectionnée comme Custom, la valeur gws_store_groups a toujours été enregistrée comme nulle.
  • Vous pouvez désormais accéder à la page de réinitialisation du mot de passe en cliquant sur le lien Réinitialiser le mot de passe de l’administrateur sur la page de connexion de l’administrateur lorsque le paramètre Add Store Code to Urls est activé. Le lien Réinitialisation du mot de passe de l’administrateur a précédemment ouvert la page de connexion ou la page 404.
  • La plage de dates dans le tableau de bord des statistiques d’administration est désormais calculée en fonction du fuseau horaire défini dans les paramètres de configuration, puis convertie au format UTC pour récupérer les données de la base de données.
  • Le filtre de hiérarchie CMS fonctionne comme prévu une fois que vous avez filtré une vue de magasin, puis cliqué sur Save sur Admin Content > Hierarchy. Auparavant, le fait de cliquer sur Save actualisait la page, mais le contexte était perdu et la vue de magasin sélectionnée ne s’affichait plus.
  • Cliquer sur le bouton Send invitation (Admin Marketing > Private sales > Invitation) envoie désormais une demande de POST avec la clé de formulaire et envoie l’invitation avec succès. Auparavant, lorsque vous cliquiez sur ce bouton, ni la méthode de POST HTTP, ni la clé de formulaire n’étaient présentes.
  • Les fichiers sans octet peuvent désormais être copiés vers un stockage distant avec AWS S3.
  • Les utilisateurs administrateurs peuvent désormais ajouter une nouvelle adresse client à partir de l’administrateur lorsqu’un client a été créé pour un autre site web dont l’ID de boutique ne correspond pas à l’ID du site web. Auparavant, Magento Open Source affichait ce message contextuel : Something went wrong. GitHub-36582
  • La page de l’éditeur de blocs CMS affiche désormais la valeur block_id du widget correcte. GitHub-29644

GraphQL

  • La requête getCustomerWishlist ne génère plus d’erreur de serveur interne lors de l’interrogation de listes contenant des produits configurables.
  • La requête customerCart renvoie désormais toutes les remises appliquées sur les produits en bundle comme prévu. Auparavant, le total des remises appliquées à un produit en bundle était renvoyé sous la forme de zéro.
  • La requête getCustomerWishlist ne génère plus d’erreur de serveur interne lors de l’interrogation de listes contenant des produits configurables.
  • La déclaration de l’indicateur is_subscribed, son résolveur, son cache et les tests associés ont été déplacés du module CustomerGraphQl vers le module NewsletterGraphQl.
  • La mutation addProductsToCart ne signale plus d’erreurs non liées dans user_errors. Auparavant, les erreurs liées au panier étaient incluses dans user_errors avec les erreurs d’opération attendues. GitHub-37908
  • Le filtre de produit de requête products peut désormais renvoyer des résultats de correspondance partielle ainsi que des correspondances complètes. Le nouvel attribut match_type (PARTIAL, FULL) prend en charge la spécification du type de correspondance. Auparavant, la requête renvoyait des correspondances complètes uniquement.
  • Mutex a été ajouté à la requête addConfigurableProductsToCart pour empêcher les conditions de concurrence lors d’une mise à jour par des requêtes simultanées. Auparavant, lorsqu’un commerçant envoyait deux demandes parallèles pour ajouter le même produit configurable à un panier, deux articles distincts avec le même SKU de produit étaient ajoutés. GitHub-37847
  • L’agrégation des produits dans les réponses GraphQL inclut désormais des valeurs non nulles pour les attributs lorsque Use in Layered Navigation est défini sur Filterable (no results). Auparavant, seules les valeurs non nulles étaient renvoyées.
  • Amélioration des performances de la requête setShippingAddressForEstimate pour les opérations liées au panier qui impliquent des attributs de produit personnalisés. Auparavant, la requête chargeait tous les attributs de produit lorsque les paramètres étaient envoyés en tant que variables.
  • Le champ de requête products ConfigurableProduct.configurable_options renvoie désormais uniquement les valeurs pour lesquelles au moins un produit est activé. Auparavant, ce champ renvoyait des produits simples désactivés.
  • Amélioration des performances de GetCategories query en réduisant le nombre de requêtes SQL inutiles qu’elles génèrent.
  • La gestion des erreurs d’adresses pour les composants de bibliothèque GraphQL fonctionne désormais comme prévu.
  • La requête products renvoie désormais tous les détails de tarification de storefront pertinents lorsque la tarification dynamique est définie sur non et que des remises sont appliquées. Auparavant, la plage de prix des produits n’était pas renvoyée. GitHub-35649
  • Les noms de transaction GraphQL incluent désormais des noms de requête de niveau supérieur uniquement dans les journaux New Relic. Auparavant, les noms de transaction incluaient également des noms de requête secondaires.
  • La gestion des erreurs d’adresses pour les composants de bibliothèque GraphQL fonctionne désormais comme prévu.
  • Lorsque le paramètre Visibility d’un produit est défini sur Catalog, products requêtes sur ce produit résolvent désormais correctement le paramètre. Auparavant, tout filtre fourni était basculé vers le paramètre Visibility: Catalog . GitHub-36591
  • La requête customer renvoie désormais un champ product_sale_price qui inclut la taxe sur les commandes lorsque le prix du produit a été configuré pour inclure la taxe. GitHub-36946
  • Les attributs de produit de type DateTime sont désormais associés au filtre FilterRangeTypeInput dans les requêtes de produits. Auparavant, ces attributs étaient mappés sur FilterMatchTypeInput. Suite à cette modification, les requêtes filtrées sur les attributs DateTime requièrent des valeurs from et to au lieu de valeurs de correspondance.
  • La requête customer renvoie désormais uniquement les révisions client liées à une vue de magasin spécifique comme prévu lorsqu’elle est filtrée par identifiant de magasin.
  • La requête categories ne renvoie plus d’erreur lorsque la valeur de réponse items.redirect_code contient une valeur nulle. GitHub-36675
  • La mutation changeCustomerPassword déclenche désormais le courrier électronique comme prévu après la réinitialisation réussie d’un mot de passe.
  • Les requêtes urlResolver et route renvoient désormais un résultat lorsque le Target Path de réécriture d’URL est une URL absolue. Auparavant, la requête urlResolver renvoyait la valeur NULL lorsque vous l’utilisiez pour récupérer les données de redirection.
  • La requête products renvoie désormais les libellés corrects. GitHub-29635
  • La requête categoryList renvoie désormais une section product renseignée du bloc options pour les produits enfants des produits du bundle comme prévu. Auparavant, aucune information sur le regroupement de produits enfants n’était renvoyée.
  • La requête route renvoie désormais les itinéraires pour les catégories et les produits comme prévu sans erreur de serveur interne. GitHub-36544
  • La requête products récupère désormais les valeurs url_key lorsque plusieurs catégories sont sélectionnées.
  • Les requêtes products renvoient désormais des agrégations uniquement pour les produits affectés au catalogue partagé spécifié.
  • Des noms de transaction ont été ajoutés aux transactions GraphQL New Relic. GitHub-36874
  • La méthode OptionValueProvider class get() renvoie désormais une valeur d’option d’attribut basée sur le option_id donné comme prévu. Auparavant, il renvoyait une erreur. GitHub-35910
  • La requête products renvoie désormais toutes les agrégations disponibles (filtres) et leurs libellés correctement traduits. Auparavant, les libellés d’agrégation de prix et de catégories n’étaient pas traduits comme prévu. GitHub-36140
  • Vous pouvez désormais utiliser un fragment ProductCard lors de l'interrogation de related_products, upsell_products et crossell_products sur ProductInterface. GitHub-29769
  • La requête products renvoie désormais les produits associés, de mise à niveau et de vente croisée dans l’ordre dans lequel ils ont été enregistrés. GitHub-36461
  • Les requêtes GraphQL renvoient désormais les données de produits associées triées par position. GitHub-33010
  • category_url_path a été ajouté à ProductAttributeFilterInput, qui prend en charge la demande de tous les produits pour une catégorie dans une seule requête. GitHub-32460
  • Correction d’une erreur dans laquelle la méthode qui définit le magasin actuel dans une mutation GraphQL était exécutée avant la méthode qui gère la validation. GitHub-31336

Image

  • Le formulaire de téléchargement de l’icône Admin favicon prend désormais en charge les types de fichiers .ico. GitHub-34858

Import/export

  • Le processus d’importation de produits analyse désormais les valeurs avec le séparateur correct. Auparavant, le processus d’importation utilisait la barre verticale ("|") pour analyser les valeurs à sélection multiple jusqu’à ce que le séparateur de valeurs déterminé ne soit pas égal à la valeur par défaut. Le processus d’importation a ensuite échoué.
  • Les redirections 301 sont désormais automatiquement créées lorsque les valeurs URL Key sont mises à jour par importation CSV.
  • Les taux de la table d’expédition sont désormais mis à jour comme prévu dans le fichier CSV d’importation des taux de la table. Le fichier de téléchargement de taux de tableau est temporairement stocké jusqu’à ce que la tâche cron du processeur de configuration asynchrone s’exécute. Cette tâche cron sélectionne le nouvel emplacement du fichier et le traite en conséquence. Auparavant, les taux de tableau n’étaient pas mis à jour comme prévu, car le processeur asynchrone recherchait le fichier au mauvais emplacement.
  • La grille Exporter les fichiers affiche désormais tous les fichiers exportés, indépendamment de l’horodatage. Auparavant, la grille n’affichait pas tous les fichiers exportés ayant le même horodatage. GitHub-36951
  • Les produits avec des options personnalisables peuvent désormais être importés avec succès. Auparavant, les données d’options étaient perdues lors de l’importation. GitHub-37598
  • Les caractères spéciaux des fichiers CSV exportés sont désormais représentés comme prévu dans Excel. GitHub-37921
  • Importer des sources de stock et des adresses de client à l’aide du Customers and Addresses (single file) se termine maintenant correctement.
  • L’importation du produit n’échoue plus en raison d’un manque de mémoire. Auparavant, l’importation d’un nombre indéfini de produits dans une base de données qui contenait déjà environ dix millions de produits échouait en raison d’un manque de mémoire.
  • Les contrôles de validation interrompent désormais le processus d’importation comme prévu lorsqu’il n’y a aucune donnée valide à importer. Magento Open Source affiche désormais cette erreur : There are no valid rows to import. Auparavant, la validation était transmise sous ces conditions, mais le processus d’importation échouait avec ce message : entity values are mixed. GitHub-32905
  • L’importation de clés d’URL avec le même produit n’écrase ou ne supprime plus les clés de vue de magasin par défaut existantes. Les réécritures d’URL sont désormais régénérées pour les vues de magasin uniquement lorsqu’il n’y a pas de valeur url_key remplacée. Auparavant, l’importation de réécritures d’URL avec la même clé d’URL remplaçait la clé d’URL de vue de magasin par défaut existante. (key_store Les réécritures d’URL ont été supprimées, mais la réécriture de l’URL au niveau de la vue de magasin par défaut pour le produit a toujours été définie sur key_store.)
  • Le nombre de produits ne change plus de manière inattendue lors de l’importation. La purge du cache est maintenant reportée jusqu’à après le processus d’importation.
  • L’état des actions d’importation planifiées représente désormais précisément le succès ou l’échec de l’opération d’importation. Auparavant, toutes les actions étaient consignées comme ayant réussi.
  • Magento Open Source prend désormais en compte le paramètre Disable Automatic Group Change Based on VAT ID lors de l’importation des enregistrements de client. Auparavant, la valeur disable_auto_group_change des fichiers d’importation était ignorée. GitHub-36409
  • Magento\Framework\Convert\Excel gère désormais correctement les nombres précédés d’un espace. Le code XML Excel code désormais les champs en tant que String. Auparavant, l’auteur Excel encodait ces valeurs en number, ce qui générait des fichiers non valides. GitHub-33422
  • Les marchands peuvent désormais spécifier les paramètres régionaux dans lesquels les données d’importation sont présentées et la manière dont les validateurs de données doivent analyser ces données. Si aucune valeur de paramètre régional n’est spécifiée, Magento Open Source utilise les paramètres régionaux de configuration par défaut (et non la vue de magasin par défaut) pour analyser les données. Dans les processus d’administration, les processus d’import et d’export continuent d’utiliser les paramètres régionaux de l’interface utilisateur d’administration pour importer, analyser et formater les données, respectivement.
  • L’importation de produits avec des attributs country_of_manufacture créés par un utilisateur administrateur avec des paramètres régionaux différents de ceux de l’utilisateur administrateur qui importe les produits ne génère plus d’erreur de validation. Auparavant, cette opération d’importation pouvait entraîner une erreur de validation de l’attribut country_of_manufacture.
  • Les produits exportés ont désormais la valeur manage_stock correcte lorsque la valeur use_config_manage_stock est égale à 1. Auparavant, cette valeur par défaut était incorrecte.
  • Magento Open Source affiche désormais un message d’erreur informatif dans la grille d’importation planifiée lorsqu’une image n’est pas importée correctement au cours d’une opération d’importation planifiée. Auparavant, aucun message d’erreur ne s’affichait.
  • Le processus d’importation de produit n’est plus interrompu lorsque des images de produit sont manquantes. Auparavant, lorsqu’une image de produit était manquante lors de l’importation d’un service tiers à l’aide d’un fichier CSV, Magento Open Source affichait cette erreur : Maximum error count has been reached or a system error is occurred!.
  • Le processus d’importation de produit ne génère plus d’erreur de validation lorsqu’une valeur d’attribut dans la colonne configurable_variations contient une virgule.
  • Le décodage a été exclu du processus d’exportation. Le texte du fichier d’exportation CSV reste inchangé après l’importation. Par conséquent, la description ne change pas après la réimportation. Auparavant, les balises d’HTML étaient supprimées dans l’éditeur de Page Builder après l’exportation et l’importation du produit.
  • Les configurations autres que par défaut (portée du site web ou du magasin) ajoutées en tant que variables d’environnement n’interrompent plus le processus app:config:import avec une erreur de récursion.
  • Les indexeurs de prix et de recherche catalogue en mode Mise à jour en mode Enregistrer ne sont plus invalidés après l’importation. Auparavant, la version du document de l’indexeur Elasticsearch changeait de version lorsque des produits nouveaux et existants étaient importés.
  • Les rapports de produit sont désormais exportés vers le répertoire var. Auparavant, ces rapports étaient exportés vers le répertoire racine du document, qui est un répertoire en lecture seule dans les instances cloud.
  • Les champs d’adresse client à sélection multiple vides n’interrompent plus ou n’interrompent plus le processus d’exportation.

Index

  • Amélioration des performances de l’indexeur catalogrule_product lorsqu’aucune règle de catalogue n’est définie. GitHub-34784
  • Les problèmes de performances de l’indexeur de prix ont été résolus. Les performances de l’indexeur ne se dégradent plus progressivement. L’indexeur a été restructuré pour augmenter la vitesse de traitement de l’indexeur en modifiant la manière dont les tables temporaires sont créées. Ces tables temporaires sont désormais recréées au lieu d’être traitées par des instructions de DELETE plus chronophages.
  • Les performances de l’indexeur de prix ont été améliorées. Un indice d’index a été ajouté à l’indexeur de prix, ce qui améliore les temps d’exécution des requêtes MySQL qui sont déclenchées lors de l’indexation.
  • Tous les indexeurs utilisent désormais les mêmes couleurs pour représenter l’état de l’indexeur. GitHub-34648
  • Les performances de l’indexeur de produits de règle de catalogue dans les déploiements où les règles ne sont pas affectées à tous les sites web ont été améliorées.
  • La création d’un type de produit personnalisé lorsque les indexeurs sont définis sur Update on schedule ne provoque plus l’échec de la tâche de mise à jour d’index cron. GitHub-36471
  • bin/magento indexer:reindex customer_grid n’échoue plus avec une erreur MySQL lorsque la grille du client inclut des attributs client personnalisés nouvellement créés. GitHub-36233
  • Le changement du mode d’indexeur pour plusieurs indexeurs (c’est-à-dire un changement de mode d’indexeur d’action de masse) modifie désormais le mode d’un indexeur uniquement lorsque le mode actuel diffère de celui appliqué. Cela améliore les performances en empêchant les déplacements inutiles vers la base de données. GitHub-36823
  • L’indexation des produits avec de nombreuses options d’attribut a été améliorée. GitHub-36386

Infrastructure

  • Ajout d’une instruction return manquante au contrôleur d’activation de l’utilisation de l’administrateur. Auparavant, il n’y avait pas d’instruction return et le contrôleur dans la classe FrontendController était mal géré. GitHub-31374
  • Remplacement de MySQL CREATE TEMPORARY TABLE ... LIKE par le CREATE TEMPORARY TABLE restructuré pour la conformité avec MySQL 8.x. GitHub-37926
  • Magento Open Source n’inclut plus le chemin d’accès complet à la racine du serveur dans le message d’erreur qui s’affiche lorsqu’une requête HTTP incorrecte a été envoyée au serveur. Seules les chaînes sont désormais transmises à la méthode explode comme second argument.
  • restricted_classes.php a remplacé Zend_Validate_File_Upload. Auparavant, le programme de validation se bloquait lors du chargement d’un fichier d’importation supérieur à la valeur configurée dans php.ini . GitHub-37281
  • Le moteur de modèle de courrier électronique peut désormais traiter correctement certaines directives imbriquées (par exemple, {{if}}{{depend}}...{{/depend}}{{/if}}). GitHub-36438
  • Les requêtes product avec des données d’agrégation renvoient désormais les valeurs d’étiquette correctes pour les attributs de produit de type booléen. GitHub-29123
  • Ajout de régions ukrainiennes à la table directory_country_region. GitHub-35187
  • Les fichiers CSS ne sont plus corrompus lors de la fusion lorsque var/tmp et pub/static se trouvent sur des systèmes de fichiers différents et CSS Merging Enabled est activé. Les fichiers temporaires ont été créés dans le même répertoire statique que le fichier cible pour s’assurer que les deux fichiers se trouvent sur le même système de fichiers. Par conséquent, l’appel pour le renommer est atomique. GitHub-29172
  • Correction d’une erreur potentielle lors de l’appel d’une fonction membre getId() sur int, qui déclenchait parfois une exception lorsqu’un client était affiché dans l’administrateur.
  • Les vérifications de type sont désormais appliquées pour le type de tableau dans le processeur de configuration du thème de conception. GitHub-34440

Inventory management

  • Les produits sont désormais automatiquement renvoyés à l’état En stock après une note de crédit incluant un retour de la quantité du produit. Auparavant, si un produit était en rupture de stock, mais qu’une note de crédit renvoyait le stock de ce produit, les vendeurs devaient modifier manuellement l’état du stock de produit.
  • Amélioration des performances de l’indexeur d’inventaire en mode asynchrone en supprimant les requêtes redondantes pour réindexer les éléments source par défaut.
  • Correction de problèmes liés à l’indexeur d’inventaire qui affectaient la précision du nombre de stocks de storefront pour les produits configurables. GitHub-36421
  • La mise à jour des éléments source de l’inventaire via REST V1/inventory/source-items fonctionne désormais plus rapidement. L’appel ne déclenche plus une réindexation ou une opération de nettoyage du cache sur les produits d’inventaire inchangés.
  • REST V1/products/<sku> déclenche désormais une réindexation automatisée du stock lors de la mise à jour de l’état du stock d’un produit. Auparavant, une réindexation de stock n’était pas déclenchée pour le produit qui était mis à jour.
  • Le statut du stock de produits configurables est désormais mis à jour sur le storefront comme prévu lorsque les produits enfants sont mis à jour par V1/inventory/source-items.
  • L’appel REST POST <store_code>/V1/inventory/source-items valide désormais la charge utile pour les espaces dans les éléments source d’inventaire renvoyés et envoie un message d’erreur sur la validation si nécessaire.
  • Les vendeurs peuvent désormais informer les acheteurs qu’une commande est prête à être récupérée lorsque le paramètre No Manage Stock est activé pour un produit. Auparavant, lorsque ce paramètre était activé, Magento Open Source affichait ce message d’erreur : Your order is not ready for pickup.
  • Les vendeurs peuvent désormais créer une note de crédit pour les commandes à partir desquelles un produit simple associé à un produit configurable a été supprimé. Auparavant, les commerçants ne pouvaient pas créer l’avoir de crédit et le Magento Open Source lançait une exception TypeError.
  • Le nombre source de la grille d’administration renvoie désormais des enregistrements valides après l’application d’un filtre. Auparavant, la méthode getSourcesCount renvoyait toujours le nombre total de sources après l’application d’un filtre.
  • La page Catégorie ne redirige plus vers le tableau de bord Admin lorsque vous triez les produits à l’aide de l’option Déplacer du stock vers le bas. Le problème a été résolu en ne plaçant l’instruction de jointure SQL dans l’instruction conditionnelle qu’après s’être assuré qu’elle n’est pas déjà incluse. Auparavant, la page était redirigée vers le tableau de bord Admin avec le message :Invalid security or form key. Please refresh the page.
  • AUTO_INCREMENT de la table inventory_source_item n’est plus augmenté avec toutes les opérations UPDATE. Auparavant, chaque mise à jour augmentait le AUTO_INCREMENT de cette table, ce qui entraînait par la suite l’indisponibilité de la valeur AUTO_INCREMENT lors de l’ajout d’un nouvel enregistrement à inventory_source_item table. Par conséquent, les utilisateurs administrateurs ont reçu l’erreur suivante lorsqu’ils ont tenté de créer un produit à partir de l’administrateur : Numeric value out of range....
  • Les utilisateurs administrateurs peuvent désormais ajouter un produit au panier d’un client à partir de l’administrateur pour une portée de vue de magasin spécifique avec Inventory management. Auparavant, l’ID de stock n’était pas déterminé correctement et les utilisateurs administrateurs ne pouvaient pas ajouter le produit au panier du client.
  • La synchronisation entre l’inventaire et le catalogue ne dépend plus du paramètre de configuration Synchronize with Catalog. Auparavant, les produits étaient correctement synchronisés uniquement lorsque ce paramètre était activé.
  • Magento Open Source ne renvoie plus d’erreur après le rechargement de la page lorsqu’un acheteur déduit une quantité de produit d’une commande qui correspond à la plage de produits disponibles lors de la sélection de la source d’expédition.
  • L’état du stock de produits configurables est désormais correctement mis à jour lorsqu’un produit configurable et sa valeur Stock Availability de produits enfants sont mis à jour par une mise à jour de stock en masse. Auparavant, vous ne pouviez pas renvoyer un produit configurable et ses produits enfants en stock par mise à jour en masse.
  • Le type de données pour les sources autres que les sources par défaut a été mis à jour vers DECIMAL (12, 4) afin de prendre en charge jusqu’à huit nombres entiers, ce qui est la même limite implémentée pour le stock par défaut. Cette valeur est désormais synchronisée avec les pages d’ajout et de modification des produits par l’administrateur, qui prennent en charge la validation des entrées pour huit chiffres au maximum pour tous les types de sources d’inventaire. Auparavant, l’entrée du champ Quantity (pour les sources autres que les sources par défaut) était prise en charge jusqu’à six chiffres uniquement.
  • Les sources par défaut et non par défaut affichent désormais les informations correctes pour la quantité vendable d’un produit lorsqu’une source autre que la source par défaut qui a été commandée sur le storefront est traitée pour envoi. Auparavant, Magento Open Source affichait un état de stock incorrect pour les sources de produits.
  • \Magento\Catalog\Model\Product::getIsSalable() renvoie désormais l’état du stock en fonction de la portée définie dans l’objet de produit (\Magento\Catalog\Model\Product::getStoreId()). Auparavant, getIsSalable() renvoyait l’état du stock en fonction de la portée actuelle, indépendamment de l’objet de produit.

Journalisation

  • Les utilisateurs administrateurs peuvent désormais consulter les journaux des actions en bloc créées par les intégrations dans la section Journal des actions en bloc de l’administrateur.

Connexion

  • La réinitialisation d’un mot de passe dans un navigateur puis la connexion à l’aide d’un autre navigateur ne génère plus d’exception. GitHub-36447
  • Les clients sont désormais redirigés vers la page de connexion après l’activation d’un compte comme prévu. Auparavant, les clients étaient automatiquement connectés.

Newsletter

  • Commerce vérifie désormais si la fonctionnalité d’abonnement à la newsletter est activée avant d’accepter de nouveaux abonnés à une newsletter. GitHub-33040

Commandes

  • Les produits déplacés du panier d’administration vers la liste des articles à commander sont désormais supprimés comme prévu du panier. GitHub-37538
  • Les commerçants peuvent désormais créer des notes de crédit comme prévu pour le remboursement partiel des commandes qui ont été payées en partie par des points de récompense. Auparavant, lorsqu’un commerçant créait un retour partiel, l’état de la commande était incorrectement identifié comme étant fermé, et la page de commande de l’administrateur n’affichait pas les options de note de crédit.
  • Magento Open Source applique désormais le montant de remise correct aux commandes partiellement annulées. Auparavant, le montant de remise calculé dans la colonne base_discount_cancelled était incorrectement calculé lorsqu’une commande était modifiée. La prise en charge de valeurs négatives a été ajoutée aux factures pour les commandes remises.
  • Magento Open Source trie désormais les attributs d’adresse client personnalisés en fonction de l’ordre de tri fourni lorsque l’utilisateur administrateur a créé la commande dans l’administrateur.
  • La page Grille de commandes d’administration se charge désormais comme prévu lorsqu’un commerçant lance une recherche à partir de cette page. Auparavant, lorsqu’un commerçant tentait de rechercher des commandes dans ce tableau, la page se figeait et le Magento Open Source affichait une erreur Request-URI Too Long dans la console du navigateur.
  • Amélioration des performances de la méthode OrderRepository::get() en réduisant le nombre de chargements d’une commande depuis la base de données. Auparavant, cette méthode chargeait une commande plusieurs fois. GitHub-36636
  • Les vendeurs peuvent désormais générer des notes de crédit pour les commandes qui contiennent certains articles avec un total nul lorsque d’autres articles de commande sont disponibles pour remboursement. Auparavant, les vendeurs ne pouvaient pas effectuer plusieurs remboursements lorsqu’un client bénéficiait d’une remise de 100 % sur certains articles de la commande.
  • Les liens entre les produits enfants et parents s’affichent désormais sur la page de commande lors du réorganisation du produit enfant à partir de l’administrateur. GitHub-37028
  • L’émulation démarre désormais pendant les appels send() une fois l’émulation terminée pendant l’appel getInfoBlockHtml() et aucune erreur n’est consignée. Auparavant, le fichier system.log était inondé avec cette erreur : main.ERROR: Environment emulation nesting is not allowed. GitHub-35603
  • Les vendeurs peuvent désormais générer des notes de crédit pour les commandes qui contiennent certains articles avec un total nul lorsque d’autres articles de commande sont disponibles pour remboursement. Auparavant, les vendeurs ne pouvaient pas effectuer plusieurs remboursements lorsqu’un client bénéficiait d’une remise de 100 % sur certains articles de la commande.
  • Les liens entre les produits enfants et parents s’affichent désormais sur la page de commande lors du réorganisation du produit enfant à partir de l’administrateur. GitHub-37028
  • La section d’en-tête de la page de commande contient désormais les informations attendues sur la facture, l’avoir et l’expédition envoyés. GitHub-27474
  • Les notes de crédit pour les commandes qui ne contiennent qu’un seul produit configurable sont désormais générées correctement. Auparavant, la fonction isLast() ne renvoyait pas true comme prévu. GitHub-36722
  • Amélioration des performances de la tâche cron aggregate_sales_report_bestsellers_data en optimisant la requête de données principale.
  • L’état de la commande est maintenant correct lorsqu’un remboursement partiel a été effectué pour une commande contenant des produits en regroupement. Auparavant, l’état de la commande était répertorié comme étant complet après l’émission d’un remboursement partiel, même si la commande restante n’était pas terminée. GitHub-37377
  • Les acheteurs ne peuvent plus commander un produit à l’aide d’un prix personnalisé lorsqu’une commande est générée pour la première fois à partir de l’administrateur à l’aide du prix personnalisé unique. Auparavant, si une commande contenait un article avec des prix personnalisés, ce prix personnalisé était appliqué pour les autres commandes passées avec la fonctionnalité de réorganisation.
  • Les acheteurs ne peuvent plus enregistrer les états de commande incorrects dans la page de commande. L’état de la commande n’est plus remplacé par Terminé lors de l’expédition d’un élément. Auparavant, Magento Open Source ne vérifiait pas l’état actuel de la commande avant d’enregistrer l’état de la commande après qu’un acheteur ait saisi un commentaire. GitHub-36562
  • La grille des commandes client est désormais synchronisée de manière asynchrone avec toutes les commandes, comme prévu. GitHub-36562
  • La fonctionnalité de filtrage par date d’achat de la section commandes client de la page commandes fonctionne désormais comme prévu. Auparavant, une erreur JavaScript se produisait lorsque la logique de conversion du fuseau horaire renvoyait une erreur lorsque le même fuseau horaire était fourni à la méthode .
  • Le tableau de bord Admin affiche désormais les statistiques de commandes correctes au premier chargement. Auparavant, le tableau de bord présentait des informations de commande incorrectes, mais présentait les informations correctes une fois la période mise à jour.
  • Les utilisateurs administrateurs sont désormais redirigés comme prévu vers la page de commande après avoir sélectionné une vue de magasin lors de la création d’une commande à partir de l’administrateur.
  • Le point d’entrée GET V1/orders/<OrderID> renvoie désormais des informations sur les produits configurables et simples dans l’ordre, quel que soit l’état du stock des produits simples. Les utilisateurs administrateurs ne peuvent passer des commandes maintenant que si les articles (produits) sélectionnés sont en stock ou pouvant être vendus. Auparavant, cette API renvoyait des informations uniquement sur les produits en stock.
  • La page de note de crédit ne se bloque plus lorsque la livraison gratuite est activée lorsque les prix d’expédition incluent des taxes et que les calculs de taxe sont appliqués après les remises. Auparavant, Magento Open Source lançait une exception Division by zero. GitHub-36800
  • L’utilisation du point de terminaison rest/V1/orders/{id}/comments pour publier un commentaire sur une commande sans fournir l’état de la commande n’affecte plus l’affichage de la commande. Auparavant, l’état de la commande était consigné comme NULL dans les tables sales_order et sales_order_grid, et ni la page Mes commandes ni la grille Admin order n’affichaient la commande. GitHub-34180

Page Builder

  • Les images conservent désormais les proportions correctes lorsqu’elles sont redimensionnées dans le créateur de pages. GitHub-37493
  • Le Créateur de pages affiche désormais les messages d’erreur selon les besoins lorsque vous tentez de télécharger une image dont la taille est supérieure à la taille maximale spécifiée. Auparavant, Commerce affichait un message d’alerte contextuel pour les fichiers image chargés dont la taille était inférieure au nombre maximal spécifié.
  • Les curseur de produit de la page CMS incluent désormais les produits parents de tous les produits enfants qui ont été sélectionnés pour inclusion dans le curseur. Auparavant, les produits parents étaient exclus du curseur.
  • Le contenu converti en HTML s’affiche désormais dans les modèles d’email comme prévu lorsque le module Magento_AsyncConfig est désactivé. Auparavant, les modèles d’email contenaient uniquement des HTMLS bruts.
  • Les performances des opérations d’enregistrement du Créateur de pages dans le navigateur Chrome ont été améliorées.
  • L’ajout d’un produit à un panier à partir du carrousel du Créateur de pages ne duplique plus la quantité d’article des pages comportant deux widgets différents affichant les mêmes produits.
  • Le générateur de pages n’ajoute plus l’attribut d’HTML tabindex aux balises de lien hypertexte a lorsque vous modifiez un lien hypertexte, puis enregistrez un modèle.
  • Le widget de produits et l’aperçu du Créateur de pages gèrent désormais correctement les caractères spéciaux d’HTML. Auparavant, le widget de produit n’affichait pas correctement les SKU contenant le caractère &.
  • Le contenu de l’élément de texte Page Builder est maintenant mis à jour comme prévu lorsque vous sélectionnez et mettez à jour le bloc de contenu complet en mode aperçu.
  • La copie et le collage de texte d’un éditeur de texte de Page Builder vers un autre fonctionnent désormais comme prévu. Auparavant, la page dans laquelle vous tentiez de coller du texte ne pouvait pas être enregistrée et Magento Open Source affichait cette erreur de console : [ERROR] Page Builder was rendering for 5 seconds without releasing locks..
  • Le type de contenu Page Builder column-block qui a été créé dans des versions plus anciennes de Page Builder s’affiche désormais correctement.
  • Le filtrage de la description des métadonnées de produit lors de la création du produit à partir de l’administrateur a été amélioré. Auparavant, si Page Builder était activé, la description des métadonnées du produit était générée en fonction du masque par défaut {{name}} {{description}}. Le masque de méta-description du produit par défaut est désormais composé de {{name}}. GitHub-36107
  • L'ajout d'un bloc dynamique sans contenu ne déclenche plus d'erreur.
  • Les problèmes d’affichage des colonnes dans le contenu du Créateur de pages ont été résolus. Auparavant, le contenu de type de contenu column-line n’était pas rendu. GitHub-3949

Paiement

  • Magento Open Source gère désormais correctement les erreurs 502 de PayPal en empêchant la création de commandes lorsque cette erreur se produit. Auparavant, les commandes étaient toujours créées malgré une erreur 502 de PayPal, ce qui entraînait des incohérences entre les enregistrements des Magento Open Sources et ceux de PayPal.
  • Les transactions PayPal Express Checkout incluent désormais les SKU des produits enfants et les titres complets des produits. Le fichier Magento/Paypal/Model/Cart.php collecte désormais des SKU de produit enfants avec leur titre de produit parent pour identifier le titre du produit avec le SKU enfant. GitHub-36808
  • Le paramètre de configuration Card Security Code Does Not Match est maintenant traité comme prévu pendant le processus de paiement de Payflow Pro. Auparavant, ce processus d’évaluation n’était jamais terminé, ce qui bloquait l’extraction.
  • L’option de mode de paiement Vault n’apparaît plus dans le workflow de passage en caisse de l’administrateur lorsque l’acheteur ne dispose pas d’un jeton Vault. GitHub-36273
  • Le bouton Venmo peut désormais être masqué lorsque les boutons PayPal sont activés. Auparavant, le bouton Venmo ne pouvait pas être supprimé du panier, du mini-panier, des détails du produit ou des pages de passage en caisse.
  • Les acheteurs peuvent désormais sélectionner un mode de livraison tout en appliquant le code de coupon lors du passage en caisse. Auparavant, dans ces conditions, le Magento Open Source lançait une erreur et attribuait à la commande le transport à taux fixe.
  • Les problèmes liés au traitement de vitrine des méthodes de paiement de crédit PayPal et PayPal ont été résolus.
  • Correction de problèmes liés aux URL de secours pour les commandes payées avec des paiements idéaux lorsque le paiement local est activé.
  • Les acheteurs ne peuvent plus créer de commande PayPal sans ajouter de nom.

Braintree

  • Les informations de paiement des Braintree sont désormais enregistrées par boutique et les acheteurs ne voient désormais que les informations de carte qui ont été enregistrées dans la boutique dans laquelle ils font leurs achats. Auparavant, les acheteurs pouvaient voir les informations de carte stockées de tous les magasins pendant le passage en caisse. GitHub-34253
  • Les acheteurs peuvent désormais extraire une commande envoyée à plusieurs adresses à l’aide d’un mode de paiement Braintree lorsque la coffre-fort pour le paiement par carte est désactivé. GitHub-37615
  • Les commandes partiellement facturées sont désormais capturées comme prévu dans le compte correct dans les déploiements où les marchands ont deux ID de compte marchand différents pour la même devise dans leur compte Braintree.
  • Magento Open Source ne génère plus d’erreur lors de la création d’une deuxième facture partielle pour une commande payée par Braintree lorsque l’option Enable Vault for Card Payments est activée. Auparavant, lorsqu’un commerçant tentait de créer une seconde facture, le Magento Open Source envoyait cette erreur : Your payment could not be taken. Please try again or use a different payment method. Payment method token is invalid.
  • L’option de mode de paiement Braintree Vault n’est plus automatiquement désélectionnée dans le workflow de passage en caisse lorsqu’un acheteur met à jour son adresse de facturation. Auparavant, le mode de paiement était désélectionné lorsque l’acheteur désélectionnait le bouton My billing and shipping address are the same.
  • Résolution de problèmes liés à l’extraction avec PayPal via Braintree après la mise à niveau d’Adobe Commerce 2.4.5-p2. GitHub-37242
  • Les numéros de téléphone sont désormais rendus comme prévu avec les adresses dans les champs d’adresse de livraison modale de payement Google. Auparavant, les numéros de téléphone étaient absents.
  • Les commandes sont désormais placées avec succès dans Braintree lorsque la réponse du Braintree inclut une valeur vide pour threeDSecureInfo/eciFlag. Auparavant, une erreur PHP se produisait lors de l’extraction lorsque cette valeur était vide.
  • Magento Open Source ne renvoie plus d’erreur lorsqu’un acheteur applique un coupon sur la page de vérification de commande lors de l’extraction avec Google Pay à partir du mini panier. Auparavant, les acheteurs étaient redirigés vers une page 404.
  • Les acheteurs peuvent désormais effectuer le passage en caisse à l’aide des paiements du Braintree et de Magento Open Source 2.4.6 avec ReCAPTCHA v2 ou v3 invisible. GitHub-37241
  • Les acheteurs ne peuvent plus cliquer sur le bouton PayPal pour acheter un produit configurable sans avoir au préalable sélectionné les options requises. Auparavant, les acheteurs pouvaient cliquer sur le bouton PayPal et étaient ensuite redirigés vers la page de produit avec une erreur :
  • Le bouton PayPal s’affiche désormais comme prévu sur les pages du panier et du mini panier. Auparavant, ce bouton n’était pas affiché sur la page du panier et était dupliqué sur la page du mini panier.

Performances

  • Plusieurs clics dans le menu déroulant d'action en masse de la page Ventes > Commandes ne génèrent plus plusieurs demandes de POST. GitHub-37997
  • Seules les réponses 200 ou 404 sont mises en cache lorsqu’un acheteur accède à une page qui déclenche une redirection 301, sauf si l’en-tête Cache-Control de la page contient private . Auparavant, un état HTTP 200 avec private dans l’en-tête Cache-Control était mis en cache et un état HTTP 301 était mis en cache, sauf s’il contenait private dans son en-tête Cache-Control. GitHub-36492
  • Suppression de Magento\Catalog\Controller\Adminhtml\Product\Initialization\Helper inutilisé de Magento\Catalog\Model\ProductRepository. Auparavant, ProductRepository chargeait cet assistant, qui est un contrôleur Adminhtml. GitHub-37864
  • Amélioration des performances de la vitesse de chargement des pages lorsque de nombreuses options sont ajoutées aux produits regroupés. GitHub-29409
  • Le processus d’attribution des produits aux catégories à partir de l’onglet Products in Category a été optimisé. Les boutons Assign et Remove de l’onglet Add Product by SKU sont désormais désactivés jusqu’à ce que les produits soient complètement chargés dans la grille. Auparavant, les utilisateurs administrateurs ne pouvaient pas ajouter de produits par SKU dans les catalogues qui contenaient des millions de produits enregistrés.
  • La performance de la mutation addProductToCart lors de l’exécution avec de nombreux attributs de produit personnalisés s’est améliorée. Auparavant, lorsque cette mutation était exécutée avec de nombreux attributs de produit (environ 1 000), Magento Open Source tentait de charger tous les attributs de produit.
  • Les problèmes de performances lors du chargement des attributs de produit utilisés par les règles de panier ont été résolus. Seuls les attributs de produit des règles de panier actives sont désormais chargés.
  • La commande bin/magento setup:perf:generate-fixtures setup/performance-toolkit/profiles/ee/small.xml s’exécute désormais plusieurs fois avec succès. Auparavant, cette erreur était générée lors de l’exécution de plusieurs fois : Coupon with the same code already exists.

Promotion

  • Les effets de la règle de prix Fixed amount discount for whole cart, lorsqu’elle est appliquée à la règle Apply to shipping amount, sont désormais répartis proportionnellement entre les produits et les montants d’expédition. Auparavant, les calculs de remise étaient incorrects.
  • Le paramètre Discard Subsequent Rules est désormais appliqué comme prévu. Lorsque ce paramètre est activé, d’autres règles de priorité basse peuvent être appliquées à un autre produit uniquement. GitHub-35707

reCAPTCHA

  • L’invisible reCAPTCHA v3 fonctionne désormais comme prévu pour le bouton de page de passage en caisse Sign in. Auparavant, les clients ne pouvaient pas se connecter et Commerce générait des erreurs JavaScript.
  • Le Google reCAPTCHA dans le workflow de passage en caisse fonctionne désormais comme prévu pour les contrôles, les commandes et les modes de paiement personnalisés.
  • Les formulaires Adobe Commerce ne peuvent plus être envoyés avant le chargement de la case à cocher Google ReCAPTCHA .
  • Le widget reCAPTCHA précède désormais le bouton Place Order sur la page de paiement. Auparavant, le widget s’affichait en haut de la page.

Rapports

  • Le rapport Commandes (REPORTS > Sales > Orders) inclut désormais les valeurs de commande correctes lorsque les commandes sont générées par des magasins qui utilisent des devises autres que les devises par défaut. Auparavant, ce rapport incluait des valeurs incorrectes. GitHub-36742
  • Les informations trompeuses figurant dans le formulaire de rapport des commandes client ont été révisées pour plus de clarté.
  • Les utilisateurs administrateurs peuvent désormais rechercher des enregistrements avec des emails contenant des signes + (plus) à partir de la page Rapport Paniers abandonnés . GitHub-36560

Rechercher search-heading

  • Les suggestions de recherche à saisie automatique sur le front de recherche de l’en-tête fonctionnent désormais comme prévu. Auparavant, la saisie automatique ne renseignait pas ce champ lorsque cette fonction était activée. GitHub-37557
  • Les performances des requêtes effectuées à partir de la barre de recherche Admin ont été améliorées par l’ajout d’un indexeur. Auparavant, plus la table search_query était grande, plus la requête prenait du temps.
  • Le tri alphabétique des produits par nom fonctionne désormais correctement pour les noms contenant des caractères turcs.
  • La propriété d’attribut de produit Use in Search Results Layered Navigation s’affiche désormais uniquement lorsque le paramètre Use in Search est défini sur Yes.
  • Les filtres de prix de recherche avancée et de SKU fonctionnent désormais correctement lorsqu’ils sont appliqués ensemble dans une recherche avancée. GitHub-37581
  • Les recherches ne sont plus effectuées pour les champs de recherche vides. Cela réduit la taille de la table search_query. Auparavant, des requêtes incorrectes ou des requêtes sur des champs de recherche vides renvoyaient un jeu de données énorme, ce qui augmentait la taille de la table search_query et entraînait des problèmes avec /tmp.
  • Les filtres Storefront fonctionnent désormais comme prévu lors du tri des entrées de catalogue avec des attributs personnalisés de liste déroulante.
  • Les résultats de la recherche affichent désormais les résultats pertinents en fonction du poids de la recherche des attributs, comme prévu.
  • Le texte informatif sous le champ d’entrée Storefront Properties de l’attribut Search Weight sur Admin Stores > Attributes > Product décrit désormais les valeurs possibles. GitHub-36646

Expédition

  • Les règles de prix du panier fonctionnent désormais comme prévu lorsqu’un produit en bundle est ajouté au panier lorsque les attributs de prix dynamiques sont désactivés. La livraison gratuite et le taux de la table correct sont appliqués que l’attribut dynamique soit activé ou désactivé. Auparavant, la livraison gratuite n’était pas appliquée comme prévu.
  • Magento Open Source passe désormais à une nouvelle page d’expédition, comme prévu, après la création d’une livraison partielle pour une commande. Auparavant, après la création d’une livraison partielle, Magento Open Source n’avait pas créé de page d’expédition complète pour les produits restants de la commande. GitHub-38063
  • Le montant total pour l'envoi d'une commande à plusieurs adresses est désormais correctement calculé. Auparavant, lorsqu’un guillemet contenait plusieurs adresses de livraison, le collecteur total mettait à jour le montant de la livraison pour l’adresse donnée dans $quote->getShippingAddress() au lieu de la transmettre par $shippingAssignment comme prévu. GitHub-37283
  • Magento Open Source ne renvoie plus d’exception lors de l’extraction avec plusieurs adresses de livraison lorsque l’utilisateur administrateur a utilisé la fonction de connexion en tant que client.
  • Les produits sont désormais correctement répertoriés sur la page Créer des packages Grille de produits lorsque vous ajoutez des produits à un package après la création du libellé d’expédition.
  • La requête cart renvoie désormais des remises sur les frais d’expédition discrets sous la forme de remises sur les frais d’expédition distinctes avec des étiquettes de remise uniques. La nouvelle propriété de remise applied_to prend en charge la différenciation entre les remises appliquées à un article de panier. Auparavant, toutes les remises sur les frais de livraison étaient combinées en une valeur Shipping Discount codée en dur.
  • Lorsqu’un utilisateur administrateur crée une réorganisation, les adresses de facturation et de livraison de la commande initiale renseignent automatiquement les champs pertinents lorsque l’utilisateur administrateur clique sur le bouton Reorder (Admin Sales > Orders > View ). Si les mêmes adresses sont enregistrées dans le carnet d'adresses de l'acheteur, la réorganisation incorporera toujours une version mise à jour de ces adresses. Auparavant, le champ Adresse de livraison était prérenseigné avec les données mises à jour, mais le champ Adresse de facturation ne l’était pas.
  • La zone de texte Shipping Policy est désormais visible dans la portée Vue de la boutique d’administration lorsque Apply custom Shipping Policy est activé et qu’une stratégie de livraison personnalisée est disponible. GitHub-36425
  • La requête cart renvoie désormais une valeur selected_shipping_method qui correspond à l’un des codes d’opérateur et de méthode available_shipping_methods. Auparavant, lorsque l’une des méthodes d’expédition sélectionnées contenait un trait de soulignement, ces codes opérateur/méthode ne correspondaient pas. GitHub-36606
  • La mutation setShippingAddressesOnCart ne renvoie plus d’erreur lorsque la seconde valeur du tableau de rue est nulle. Auparavant, cette exception était générée : The address failed to save. Verify the address and try again. GitHub-35160

Plan du site

  • Le plan de site XML fonctionne désormais comme prévu dans un déploiement à plusieurs étages. Auparavant, les plans de site ne contenaient pas les pages par défaut attribuées pour chaque magasin. GitHub-35001
  • Les vendeurs peuvent désormais créer et enregistrer un produit lorsque le site web id != 1 et le mode à boutique unique sont activés. Auparavant, l’action d’enregistrement échouait avec ce message : SQLSTATE[23000]: Integrity constraint violation: 1452 Cannot add or update a child row: a foreign key constraint fails. GitHub-35009

Taxe

  • Les factures affichent désormais le sous-total correct lorsque les taxes sont configurées et que FPT est activé.
  • Magento Open Source affiche désormais la valeur correcte de la valeur Regular Price lorsqu’une option personnalisée est sélectionnée pour un produit dont la valeur est Special Price lorsque Price Display Settings est défini pour inclure une taxe.
  • La taxe est désormais incluse comme prévu dans le prix d’expédition du workflow de passage en caisse, comme spécifié par les paramètres de configuration.
  • La valeur de réponse cart de requête applied_taxes inclut désormais toutes les règles de taxe individuelles comme prévu. Auparavant, elle renvoyait la valeur fiscale totale lorsque plusieurs règles de taxe étaient configurées.
  • L’icône Réduire/Développer de la section Additional Settings lors de la création de règles de taxe fonctionne désormais comme prévu. Auparavant, seule l’icône d’agrandissement fonctionnait. GitHub-37922
  • Vous pouvez désormais modifier la valeur du Pays et de la région du taux d’imposition à partir de la page de modification de la règle sur les impôts comme prévu. Auparavant, les modifications effectuées à partir de cette page n’étaient pas enregistrées.
  • Le montant de la taxe dans la zone d’estimation du panier est maintenant actualisé comme prévu lors de la mise à jour du mode de livraison. Auparavant, le taux de taxe n’était pas mis à jour après qu’un acheteur a changé de pays lors du passage en caisse.
  • La valeur tax class pour les produits simples nouvellement créés est désormais définie sur la valeur du produit parent lors de la création de nouvelles variations d’un produit configurable existant dans la portée Affichage de la boutique. Auparavant, cette valeur était définie sur "none". Par conséquent, aucune taxe n’a été ajoutée à ces produits dans le panier et les clients ont été sous-taxés. GitHub-37180

Test

  • Amélioration du test AdminCreateOrderWithVirtualProductFromDefaultSourceWithBackorders afin d’éliminer les échecs provoqués par une fin prématurée du champ de courrier électronique.
  • StorefrontVerifyProductAfterPartialReindexOnSeveralWebsitesTest a été restructuré pour améliorer la fiabilité. GitHub-38359
  • Correction du test AdminSimpleProductwithTextandVisualSwatch en introduisant une étape supplémentaire qui définit explicitement les attributs à utiliser dans la recherche.
  • Correction d’une faute de frappe dans le test unitaire SortbyTest. GitHub-37792
  • Suppression des références à des classes inexistantes dans les tests unitaires. GitHub-37636
  • Amélioration du test AdminCreateOrderWithVirtualProductFromDefaultSourceWithBackorders afin d’éliminer les échecs provoqués par une fin prématurée du champ de courrier électronique.
  • Refactorisation du test Magento\GraphQl\Catalog\ProductSearchTest::testFilterProductsBySingleCategoryId afin de gérer l’ordre aléatoire des catégories dans les réponses de requête products.
  • Le test \Magento\Test\Integrity\Di\CompilerTest::testConstructorIntegrity vérifie désormais toutes les classes PHP des modules enregistrés par ComponentRegistrar().
  • Les problèmes de performances avec les tableaux volumineux dans TableNameSniff ont été résolus.
  • CollectionTest::testGetDateRangeFirstPart() prend désormais en compte l’heure d’été.

Structure de l’IU

  • L’attribut crossorigin a été ajouté à linkTypes pour les éléments HEAD.GitHub-32509
  • Le téléchargeur d’images fonctionne désormais comme prévu dans les lignes dynamiques. Les images sont désormais correctement chargées lorsqu’elles sont envoyées sous la forme d’un tableau multinational. GitHub-37957
  • Les styles de chargement de fichier ne sont plus dupliqués dans le thème Luma. GitHub-32373
  • Les champs de rue du formulaire d’adresse de modification du compte client du champ de rue sont désormais correctement enregistrés. Ces champs sont désormais correctement triés par les clés données du formulaire. GitHub-37973
  • Les valeurs CLS (Cumulative Layout Shift) ont été améliorées pour les pages des détails du produit. (Cette mesure quantifie la stabilité visuelle des mises en page.) GitHub-35410
  • Amélioration de la messagerie des erreurs qui se produisent lors du rendu du modèle. Magento Open Source affiche désormais un message informatif. Auparavant, Magento Open Source affichait des fuites d’HTML lorsqu’une erreur PHP se produisait.
  • Les attributs client personnalisés (type File attached) fonctionnent désormais correctement avec les images qui ont été supprimées, puis téléchargées. Auparavant, les attributs personnalisés chargés, puis supprimés, puis chargés à nouveau ne pouvaient pas être enregistrés à partir du storefront.
  • Correction d’une erreur de syntaxe dans le fichier de modèle de calendrier. GitHub-37725
  • Les utilisateurs administrateurs peuvent désormais modifier le logo storefront lorsque le mode de magasin unique est activé. Auparavant, Magento Open Source affichait le logo de secours par défaut. GitHub-35952
  • Les valeurs de configuration des mixins ne sont plus vides et les mixins jQuery fonctionnent désormais indépendamment de la position de chargement. Auparavant, les mixins jQuery n’étaient pas chargés de manière cohérente sur tous les navigateurs.
  • Les mots de passe s’affichent désormais comme prévu lorsque la case à cocher Show Password de la page de connexion est active.
  • Magento Open Source affiche désormais les prix corrects pour les produits en regroupement avec des prix spéciaux.
  • Mise à jour du lien vers la page de liste des problèmes GitHub dans le fichier de modèle de pied de page du front de stockage. GitHub-37214
  • Le widget Récemment consultés affiche désormais le montant correct de la taxe sur les prix des produits groupés. GitHub-35881
  • Les utilisateurs administrateurs peuvent désormais faire glisser et déposer les options personnalisables créées pour le produit simple comme prévu. GitHub-36051
  • L’ordre des types d’attributs de menu déroulant du produit correspond désormais à l’ordre des images sur la page de produit configurable. GitHub-37285
  • Les messages système se chargent désormais plus rapidement. Seuls les messages affichés sont chargés. Auparavant, tous les messages étaient chargés à partir de la base de données, ce qui prenait du temps.
  • La suppression du noeud de chemin de navigation en définissant remove=true via le code XML de mise en page n’entraîne plus la suppression du titre de la page sur la page de catégorie. Auparavant, la suppression du chemin de navigation de cette manière supprimait le titre de la page de la page de catégorie.
  • Le formulaire d’enregistrement du client se charge désormais comme prévu lorsqu’il comprend des attributs de client à sélection multiple. Auparavant, le Magento Open Source lançait cette exception : [2023-03-05T05:57:40.032602+00:00] report.CRITICAL: Exception: Deprecated Functionality: explode(): Passing null to parameter #2 ($string) of type string is deprecated in /magento2ee/app/code/Magento/CustomAttributeManagement/Block/Form/Renderer/Multiselect.php on line 53 in /lib/internal/Magento/Framework/App/ErrorHandler.php:62. GitHub-37189
  • Les messages de bienvenue contenant des guillemets simples sont désormais rendus correctement sur le storefront sans erreur de console. Auparavant, si un message de bienvenue contenait un guillemet simple, le message de bienvenue n’était pas chargé lors du rendu du storefront. Magento Open Source affichait également des erreurs de console.
  • Magento Open Source ne renvoie plus d’erreur lorsque vous essayez de modifier rapidement l’affichage entre l’historique des commentaires et le rapport dans la page Ordre d’administration. Auparavant, Magento Open Source affichait cette erreur générique : A technical problem with the server created an error.
  • Les utilisateurs administrateurs dont les privilèges sont limités à un site web peuvent désormais mettre à jour les attributs de produit spécifiques à un site web définis sur une portée all stores view.
  • Le widget de loupe se charge désormais comme prévu sur la page du produit.
  • Les options personnalisables multi-lignes sont désormais rendues correctement dans les documents de PDF de facture, d’envoi et de note de crédit. Auparavant, le texte multiligne était précédé d’un saut de page inattendu. Si le texte dépassait la page, il était tronqué.
  • Les utilisateurs administrateurs peuvent désormais ajouter une nouvelle adresse client à partir de l’administrateur lorsqu’un client a été créé pour un autre site web dont l’ID de boutique ne correspond pas à l’ID du site web. Auparavant, Magento Open Source affichait ce message contextuel : Something went wrong. GitHub-36582
  • Les messages d’erreur associés à l’envoi de commentaires sur la page des détails de la commande sont désormais plus informatifs. Auparavant, lorsqu’un acheteur cliquait sur Submit comment sans modifier l’état de l’ordre ni saisir du texte dans la zone de commentaire, le Magento Open Source affichait ce message : The comment is missing. Enter and try again.
  • L’icône Calendrier s’affiche désormais comme prévu dans les champs de la période sur Admin Marketing > Cart Price Rules une fois la date sélectionnée pour un champ. Auparavant, après avoir sélectionné une date pour un champ, l’icône Calendrier ne s’affichait plus dans les autres champs et le Magento Open Source affichait le texte d’espace réservé. GitHub-36499
  • Les formulaires d’enregistrement de client qui incluent des champs à sélection multiple se chargent désormais correctement. Auparavant, ce formulaire ne se chargeait pas lorsqu’il contenait des champs à sélection multiple et l’erreur suivante était déclenchée : report.CRITICAL: Exception: Deprecated Functionality: explode(): Passing null to parameter #2 ($string) of type string is deprecated in /magento2ee/app/code/Magento/CustomAttributeManagement/Block/Form/Renderer/Multiselect.php on line 53 in /lib/internal/Magento/Framework/App/ErrorHandler.php:62. GitHub-37189
  • Le fait de cliquer sur une miniature vidéo en mode Plein écran de la galerie de produits affiche désormais la vidéo comme prévu. Auparavant, la vidéo ne s’affichait pas et la console du navigateur affichait une erreur JavaScript. GitHub-36456
  • Ajout d’une variable à la ligne de copyright automatiquement mise à jour chaque année. GitHub-36776
  • Le curseur de l’image sur la page du produit fonctionne désormais comme prévu dans la vue mobile. Auparavant, seule la première image s’affichait correctement. GitHub-37232

URL rewrites

  • Les réécritures d’URL sont désormais générées en fonction de la configuration de visibilité au niveau du magasin dans les déploiements multi-magasin. Auparavant, les réécritures d’URL n’étaient pas générées pour les magasins autres que les magasins par défaut lorsque la visibilité du produit était définie sur non visible sous la portée de magasin par défaut.
  • Category::getUrl() ne récupère plus une redirection 301. GitHub-38152
  • Magento Open Source ne génère plus de réécritures d’URL de produit pour les catégories racine et pour les produits définis sur Not Visible Individually dans les configurations multi-magasin lors de la génération de réécritures d’URL manquantes pour les magasins personnalisés.
  • Les balises URL canoniques reflètent désormais les modifications attendues après la mise à jour de la propriété Clé URL de catégorie. Auparavant, l’URL de catégorie obsolète était utilisée, ce qui déclenchait immédiatement la redirection vers la nouvelle URL.
  • Les réécritures d’URL de produit de catégorie sont désormais générées comme prévu pour toutes les vues de magasin lorsqu’un produit est ajouté à une catégorie. GitHub-32910
  • Magento Open Source ne renvoie plus d’erreur lorsque vous essayez de créer une redirection 301/302 pour une URL de produit lorsque l’option Générer une URL de catégorie/produit" réécrit est activée. Lorsqu’un produit est créé et affecté à une catégorie, des réécritures d’URL automatisées sont créées : une pour l’URL directe et une pour le produit par le biais du chemin de catégorie. Lorsqu’une nouvelle réécriture d’URL de produit est créée, les corrélations entre les produits, les catégories et les magasins sont vérifiées. Ce contrôle est désormais basé sur les propriétés d’entité corrélées (catégorie et produit). Auparavant, cette vérification était effectuée sur les réécritures d’URL préexistantes.
  • Les réécritures d’URL de catégorie sont désormais générées pour toutes les vues de magasin lorsqu’une nouvelle catégorie est importée à partir d’un fichier CSV.
  • Les configurations de suffixe d’URL de produit et de suffixe d’URL de catégorie correspondent désormais aux suffixes dans la table url_rewrite. Auparavant, les conditions de concurrence lors de la mise à jour des configurations de suffixes d’URL se produisaient, et les suffixes d’URL configurés et la table url_rewrite ne correspondaient pas.
  • Magento Open Source effectue désormais le rendu de l’arborescence des catégories à tous les niveaux lors de la création de réécritures d’URL de catégorie. Auparavant, seuls les trois premiers niveaux des catégories s’affichaient. GitHub-36973
  • Les réécritures d’URL de catégorie sont désormais présentes dans le fichier CSV lors de l’importation d’une nouvelle catégorie.
  • Les pages CMS multi-magasin sans réécriture d’URL sont désormais transférées comme prévu. Auparavant, les pages CMS multi-magasin demandées sans réécriture d’URL étaient redirigées vers la page d’accueil du magasin, mais les pages CMS d’origine n’étaient pas redirigées.

Structure de l’API web

  • Magento Open Source n’affiche plus d’avertissement Integration not secure dans Admin System > Extensions > Integrations lorsque les champs Callback URL et Identity link URL sont vides. GitHub-36407
  • Ajout des attributs d’extension taxes, itemized_taxes et additional_itemized_taxes à Magento\Sales\Api\Data\OrderInterface. Ces attributs vous permettent d’enregistrer les taxes appliquées avec les appels REST de commande.
  • L’API REST des prix de niveau prend désormais en charge les quantités décimales. Auparavant, cette API n’autorisait pas les quantités décimales même lorsque le paramètre Use Decimal Quantity était activé.
  • Le point d’entrée REST V1/orders/{id}/comments ne modifie plus l’état d’une commande lors de l’ajout d’un commentaire à l’état d’une commande en attente. Il donne maintenant une erreur informative. Auparavant, ce point de fin modifiait l’état de la commande lors de l’ajout d’un commentaire.
  • Le point d’entrée API REST GET et POST V1/products/attributes ne renvoie plus la même valeur pour l’attribut is_filterable pour les options Filterable(with results) et Filterable(no results) de l’option Use in Layered Navigation. Auparavant, ce point de terminaison renvoyait la même valeur car la propriété d’attribut is_filterable était de type Boolean, ce qui ne permettait pas de définir cette propriété sur Filterable(no results). GitHub-37979
  • Le champ media_gallery_entries manquant a été ajouté au point de terminaison REST V1/configurable-products/sku/children. Auparavant, le code nécessaire pour stocker et afficher media_gallery_entries manquait à cette fonction. GitHub-37607
  • La méthode REST V1/carts/mine/estimate-shipping-methods valide désormais tous les niveaux de données de champ de charge utile et renvoie un code HTTP 400 pour les données non valides. Auparavant, seul le premier niveau de la payload de l’API était validé. Si des données non valides étaient renvoyées dans des niveaux non validés de la payload, Magento Open Source renvoyait un code d’état 500.
  • Les opérations d’API REST en bloc asynchrones pour mettre à jour les produits avec des prix de niveau et différents ensembles d’attributs se terminent désormais correctement. Auparavant, les produits avec différents ensembles d’attributs ne pouvaient pas être mis à jour de cette manière, et Magento Open Source affichait cette erreur : The product was unable to be saved. Please try again.
  • Le point de terminaison POST /V1/products/tier-prices renvoie désormais un message d’erreur plus informatif lorsqu’un nom de groupe de clients non valide est utilisé lors de la création du prix de niveau. Auparavant, Magento Open Source renvoyait une erreur de ce type : Notice: Undefined index: XXXXX in ~/public_html/vendor/magento/module-catalog/Model/Product/Price/Validation/TierPriceValidator.php on line 474". GitHub-36431
  • Vous pouvez désormais exécuter une requête d’API en bloc asynchrone autorisée pour créer des clients avec un ID de groupe autre que celui par défaut. Auparavant, ces demandes réinitialisaient l’ID de groupe à la valeur par défaut.
  • Les clients créés à l’aide de l’API en bloc reçoivent désormais des courriers électroniques d’enregistrement des clients dans la langue configurée sur le site web qui leur est assigné. Auparavant, tous les emails étaient envoyés aux paramètres régionaux par défaut, et non aux paramètres régionaux du site web auquel le client est affecté.
  • L’appel POST V1/guest-carts n’envoie plus de commandes d’invités lorsque Allow Guest Checkout est désactivé.
  • Magento Open Source renvoie désormais avec succès l’attribut content (code image base64) dans les réponses de l’API de média de produit GET V1/products/sku/media. L’attribut content n’apparaissait pas auparavant dans la réponse.

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 Magento Open Source 2.4.7 à l’aide de Composer.

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