Magento Open Source 2.4.7 Faits saillants

Recherchez les points forts suivants dans cette version.

Améliorations de la sécurité

Cette version comprend les mêmes correctifs de sécurité et améliorations de la sécurité de la plateforme que ceux inclus dans Adobe Commerce 2.4.6-p5, 2.4.5-p7 et 2.4.4-p8. Consultez le Bulletin de sécurité d’Adobe pour connaître la dernière discussion sur ces problèmes résolus.

Aucune attaque confirmée liée à ces problèmes ne s’est produite à ce jour. Cependant, certaines vulnérabilités peuvent potentiellement être exploitées pour accéder aux informations sur les clients ou prendre le contrôle de sessions d’administration. La plupart de ces problèmes nécessitent qu’un attaquant obtienne d’abord l’accès à l’administrateur. Par conséquent, nous vous rappelons de prendre toutes les mesures nécessaires pour protéger votre administrateur, y compris, mais sans s’y limiter, ces efforts :

  • Liste d’adresses IP autorisées
  • 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 de la sécurité supplémentaires

Les améliorations apportées à la sécurité dans cette version améliorent la conformité aux dernières bonnes pratiques de sécurité.

  • 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 qui sont définies via la syntaxe de la directive de modèle ou les setCacheKey méthodes 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 traits d’union (-) et des traits de soulignement (_).
  • Limitations du nombre de codes de coupon générés automatiquement. Magento Open Source limite désormais le nombre de codes promo générés automatiquement. La valeur maximale par défaut est de 250 000. Les commerçants peuvent utiliser la nouvelle Code Quantity Limit option de configuration (Stores > Settings:Configuration > Customers > Promotions) pour éviter de surcharger potentiellement 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 plus grande randomisation, ce qui rend les URL générées moins prévisibles.

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

  • Ajout de la prise en charge de l’intégrité des sous-ressources (SRI) pour se conformer aux exigences PCI 4.0 pour la 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 fonction SRI par défaut est implémentée uniquement sur les pages de paiement pour les zones Admin et Storefront. Cependant, les commerçants peuvent étendre la configuration par défaut à d’autres pages. Voir Intégrité des sous-ressources dans le Guide du développeur de Commerce PHP.

  • Modifications apportées à la politique de sécurité du contenu (CSP) : mises à jour et améliorations de la configuration des politiques de sécurité du contenu (CSP) d’Adobe Commerce pour se conformer aux exigences PCI 4.0. Pour plus de détails, consultez Politiques de sécurité du contenu dans le Guide du développeur de Commerce PHP.

    • La configuration CSP par défaut pour les pages de paiement des zones Commerce Admin et Storefront est désormais en 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, CSP était configuré 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 à usage unique pour chaque requête. Les chaînes sont ensuite associées à l’en-tête CSP.

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

      REMARQUE
      La mise à jour de la configuration du CSP en mode restrict peut bloquer les scripts intégrés existants sur les pages de paiement dans Admin et Storefront, ce qui entraîne l’erreur de navigateur suivante lorsqu’une page se charge : 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 autorisée pour autoriser les scripts requis. Voir Dépannage dans le Guide du développeur de Commerce PHP.
  • Limitation de taux native pour les informations de paiement transmises via les API REST et GraphQL. Les commerçants peuvent désormais configurer la limitation de taux pour les informations de paiement transmises à l’aide de REST et de GraphQL. Cette couche de protection supplémentaire permet de prévenir les attaques par carte et de réduire potentiellement le volume d’attaques par carte qui testent plusieurs numéros de carte de crédit à la fois. Il s’agit d’une modification du comportement par défaut d’un point d’entrée REST existant. Voir Limitation de débit.

  • 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 des true. Les commerçants peuvent activer le comportement d’origine en définissant l’option Activer la connexion au passage en caisse des invités dans l’interface d’administration sur yes, mais cela peut exposer les informations du client à des utilisateurs non authentifiés.

Améliorations de Platform

Les mises à niveau de Platform pour cette version améliorent la conformité aux dernières bonnes pratiques de sécurité.

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

  • 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 commerçants exécutant des déploiements 2.4.7 doivent migrer vers PHP 8.3.

Magento Open Source 2.4.7 est toujours compatible avec PHP 8.1, uniquement pour la mise à niveau. PHP 8.1 n'est pas pris en charge et n'est pas recommandé. Magento Open Source code de base 2.4.7, toutes les extensions groupées et toutes les extensions et services SaaS appartenant à Adobe 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 respectivement jusqu’en août 2024 et décembre 2024, mais Adobe a recommandé d’utiliser Magento Open Source 2.4.7 uniquement avec RabbitMQ 3.13.

  • Composer 2.7.x. La compatibilité avec Composer 2.2.x reste.

  • 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 avons recommandé d’utiliser Magento Open Source 2.4.7 uniquement avec Varnish Cache version 7.4 ou version 6.0 LTS.

  • de compatibilité Elasticsearch 8.11

  • de prise en charge d’OpenSearch 2.12 et d’OpenSearch 1.3

  • Redis 7.2

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

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

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

Mises à niveau supplémentaires

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

  • L’intégration🔗 Magento Open Source avec FedEx a été migrée des anciens services Web FedEx WSDL vers les dernières API FedEx RESTful. Les services Web FedEx pour le suivi, la validation des adresses et la validation des codes postaux WSDLS seront retirés 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 prête à l'emploi avec la nouvelle méthode d'expédition d'USPS, USPS Ground Advantage, publiée en juillet 2023. Cette nouvelle intégration peut être utilisée pour récupérer les tarifs d'expédition et planifier les livraisons et les retours via le 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é lancée :

    • USPS Retail Ground
    • Service De Package De Première Classe
    • Sélection de parcelle sol
  • Les modules d’expédition Temando ont été supprimés de la base de code Magento Open Source principale. 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 comporte les améliorations suivantes en termes de performances et d’évolutivité de Magento Open Source :

  • Gestion améliorée de l’indexeur. La nouvelle commande indexer:set-status prend en charge la gestion dynamique du statut de l’indexeur. Les utilisateurs administrateurs peuvent utiliser cette commande pour modifier le statut 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 bloc importantes, telles que des importations ou des 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 s’est amélioré pour les pages de liste de produits qui incluent des produits complexes avec plus de 100 options. Les performances des requêtes GraphQL pour répertorier les produits par catégorie ont également été améliorées.

  • Amélioration des performances des règles de vente. Amélioration des performances des déploiements d’entreprise avec un grand nombre (environ 100 000) règles de vente actives. Les déploiements d’entreprise qui implémentent fortement les 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 verront aucune dégradation des performances liée au nombre de règles de prix de panier configurées pendant les opérations de paiement.

  • Opérations de sauvegarde plus rapides 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 de plus de 500 magasins peut prendre beaucoup de temps. Le nouveau module de configuration asynchrone permet des opérations d’enregistrement de configuration asynchrone en exécutant une tâche cron qui utilise un consommateur 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 bin/magento cache:clean config commande préchauffe 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 avant d’écrire config_scopes des données dans le cache, ce qui réduit également le temps pendant que d’autres demandes sont 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 stocké/stocké leur compte PayPal ont la possibilité de payer avec :

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

  • Vault Apple Pay Payments: autorisez les clients connectés à enregistrer/stocker leurs Apple Pay paiements sur leur compte Boutique Commerce afin de les utiliser lors de transactions futures. Cela réduit le nombre d’étapes à la caisse et crée une expérience de paiement plus rapide pour le client de retour.

  • Vault Google Pay Payments: autorisez les clients connectés à enregistrer/stocker leurs Google Pay paiements sur leur compte Boutique Commerce afin de les utiliser lors de transactions futures. Cela réduit le nombre d’étapes à la caisse et crée une expérience de paiement plus rapide pour le client de retour.

  • Vault Venmo Payments: autorisez les clients connectés à sauvegarder/stocker leurs Venmo comptes sur leur compte Boutique Commerce pour les utiliser lors de transactions futures. Cela réduit le nombre d’étapes à la caisse et crée une expérience de paiement plus rapide pour le client de retour.

  • Vault ACH Payments: autorisez les clients connectés à sauvegarder/stocker leurs paiements ACH sur leur compte Boutique Commerce afin de les utiliser lors de transactions futures. Cela réduit le nombre d’étapes à la caisse et crée une expérience de paiement plus rapide pour le client de retour.

  • Express PaymentBoutons en haut du passage en caisse : pour encourager un passage en caisse plus rapide, nous avons introduit Express Payment des options au début du passage en caisse. Les clients peuvent désormais payer par PayPal, PayPal Pay Later, Apple Payet Google Pay Express les paiements.

  • Braintreeles notes de mise à jour et les liens d’assistance dans la configuration d’administration les commerçants peuvent désormais accéder directement à l’assistance et aux notes de mise à jour de Braintree à partir de Commerce Admin.

  • Prise en charge de GraphQL pour tous les modes de paiement Braintree à l’exception deVenmo : d’autres configurations sont exposées dans l’API GraphQL. Cela s’avère particulièrement utile pour les applications découplées.

  • Vaultingles paiements dans la zone de compte—Les clients connectés peuvent désormais coffre/magasin de nouvelles cartes de crédit/débit et de nouveaux comptes PayPal dans la zone de compte client. Auparavant, les clients ne pouvaient mettre leurs paiements en chambre forte que lorsqu’ils les enregistraient pour une utilisation ultérieure lors de l’exécution d’une transaction lors du passage en caisse. Désormais, ils peuvent mettre en chambre forte les nouvelles cartes de crédit/débit et les nouveaux comptes PayPal sans avoir à créer de nouvelle transaction.

  • Transactions sans frottement : les transactions sans frottement accélèrent le processus de paiement en réduisant le nombre de clics/étapes des clients pour effectuer une transaction par carte de crédit/débit en ligne. Auparavant (lorsque la 3DS était activée), chaque client était confronté à un défi 3DS. Grâce à la nouvelle fonctionnalité Transactions sans friction, les clients ne sont sollicités pour la 3DS que lorsque la banque le demande. Cela réduit les abandons de panier, augmente les taux de conversion et conduit à plus de ventes.

  • Webhooks de litige : lorsqu’un client conteste une transaction dans Braintree, l’état du litige est désormais transmis au service Commerce. Il est consultable dans la grille de Sales > Order et attaché à chaque commande.

GrapheQL

Magento Open Source 2.4.7 inclut des capacités de mise en cache GraphQL améliorées, la prise en charge du schéma GraphQL pour les attributs personnalisés, la prise en charge de l’annulation de commande sans tête et une mise en cache améliorée du résolveur.

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

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

  • Les éléments de commande incluent désormais des images de produit. OrderItemInterface expose les images des produits, ce qui permet de les associer aux 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êtes GraphQL suivants peuvent désormais être mis en cache dans le cache GraphQL Resolver Results, ce qui améliore les performances lorsque des requêtes sont soumises avec des requêtes 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, en passant son identifiant et un motif d’annulation.

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

    • extension/ajout de la prise en charge des attributs personnalisés à des zones spécifiques telles que l’adresse du client
    • ajout de la mise en cache pour les attributs personnalisés
    • prise en charge améliorée des attributs personnalisés existants pour les produits
  • Les fonctionnalités de mise en cache GraphQL améliorées améliorent la vitesse de chargement des pages. La fonctionnalité de mise en cache a été ajoutée à ces requêtes, améliorant ainsi la vitesse 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. Il est maintenant appelé 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 de commande 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 de gestion de 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étapaquet d’extension Magento Open Source

Cette version comprend le métapaquet Extension de Magento Open Source v1.0.0, qui regroupe automatiquement certaines extensions de Magento Open Source avec cette version principale. La version de cette extension incluse dans ce métapaquet 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 planning de publication indépendant.

Le métapaquet Extension de Magento Open Source pour Magento Open Source 2.4.7 comprend les extensions suivantes :

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

PWA Studio

PWA Studio v14.0 est compatible avec Magento Open Source 2.4.7-beta1. Il comprend plusieurs améliorations pour améliorer l’accessibilité. Pour plus d’informations sur les correctifs, voir Versions de PWA Studio. Consultez Compatibilité des versions pour obtenir la liste des versions de PWA Studio et de leurs versions principales de Magento Open Source compatibles.

Framework d’API web

Cette version introduit deux nouveaux points d’entrée REST qui offrent une solution pour une limitation de l’GET de l’API REST et des points d’entrée POST V1/products/attributes. Ces points d’entrée 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 n’autorise pas la définition de cette propriété sur Filterable(no results).)

Deux nouveaux points d’entrée REST ont été implémentés comme solution :

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

Problèmes résolus

Nous avons corrigé des centaines de problèmes dans le code de base Magento Open Source 2.4.7. Un sous-ensemble des problèmes résolus inclus dans cette version est décrit ci-dessous.

Installation, mise à niveau, déploiement

  • Les manipulations inutiles du cache ont été supprimées du processus de configuration. Auparavant, Magento Open Source écrivait inutilement sa configuration sur le disque lorsqu’elle bin/magento setup:db-data:upgrade était exécutée, ce bin/magento setup:upgrade qui causait des problèmes avec les modules som lors de l’installation. GitHub-38124
  • Les problèmes de déploiement dus à une mémoire insuffisante et à des tables volumineuses ont été résolus. La bin/magento setup:upgrade commande n’échoue plus en raison d’erreurs de dépassement de mémoire liées aux tables MySQL volumineuses.
  • bin/magento setup:install se termine maintenant correctement après app/etc/config.php a été supprimé. Auparavant, le fichier manquant n’était pas régénéré pendant l’installation et Magento Open Source générait 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 les tables et les indexeurs de 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, Magento Open Source générait cette erreur lors de l’exécution de bin/magento setup:rollback --db : 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 la setup:upgrade.
  • La génération d’une sauvegarde de base de données fonctionne désormais comme prévu à partir d’Admin et de la ligne de commande. Auparavant, 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 du 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 s’exécute maintenant correctement lors de l’installation d’un nouveau module qui installe les tables et les indexeurs de 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 graphiques sont désormais désactivés par défaut sur le tableau de bord. GitHub-38430
  • Le menu Admin Sales affiche maintenant correctement les sous-menus. Auparavant, le saut de colonne ne fonctionnait pas correctement et certains sous-menus n’étaient pas affichés. GitHub-37812
  • Select Les options du menu déroulant sont désormais visibles sur les > Pages d’administration Content lorsque plusieurs pages sont sélectionnées dans la grille. GitHub-35386
  • Correction du chemin d’accès à la valeur par défaut dans les paramètres de system/dashboard/enable_charts configuration. Les graphiques sont maintenant affichés dans l’interface administrateur comme prévu. GitHub-37668
  • Correction d’un problème d’affichage avec les grilles du client d’administration. Auparavant, les colonnes de la grille n’étaient pas entièrement contenues dans la page affichée.
  • Les couleurs de pointage sont maintenant appliquées, comme prévu, aux lignes des grilles statiques Admin. 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 title balise et dans la balise pour les pages de meta title produits. GitHub-37680
  • La condition d’état des stocks de produits est désormais correctement appliquée aux règles de produits associés.
  • Le Login as Customer bouton 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 étendue différente. Auparavant, Commerce invalidait le cache d’un produit parent qui n’était pas affecté à l’étendue dans laquelle le produit enfant avait été modifié.
  • Les utilisateurs administrateurs peuvent désormais basculer entre les vues de filtre d’administration sans que les données de vue ne soient corrompues ou perdues. GitHub-37529

Lots de produits

  • La requête customerCart renvoie désormais toutes les remises appliquées sur les produits groupés comme prévu. Auparavant, le total des remises appliquées à un produit groupé était renvoyé en tant que zéro.
  • Les pages Détails du produit affichent désormais le prix correct pour les produits groupés pour lesquels une remise de 100 % a été appliquée. Auparavant, Magento Open Source n’appliquait pas de remise de 100 % aux prix des lots de produits.
  • Les règles de prix de panier sont désormais appliquées aux offres groupées de produits au lieu de chaque produit enfant pour les produits groupés à prix dynamiques.
  • 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 groupé. Le point d’entrée ajoute maintenant 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 GET V1/shipment/ API pour créer un envoi avec un produit groupé lorsque le type d’envoi du produit est 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 groupé dans leur panier de storefront. Auparavant, Adobe Commerce ne gérait pas les valeurs nulles pour les ItemId lorsque les produits étaient modifiés dans le panier du storefront et affichaient une erreur. GitHub-37696
  • Vous pouvez désormais ajouter des produits groupés à une commande d’administration à l’aide de SKU qui contiennent une barre oblique (/). Auparavant, les utilisateurs administrateurs ne pouvaient pas utiliser cette méthode pour ajouter des produits à une commande administrateur et Magento Open Source a généré une erreur JavaScript.
  • Les utilisateurs administrateurs peuvent désormais définir des valeurs décimales par défaut 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.
  • Performances optimisées pour l’enregistrement des produits groupés avec un grand nombre d’options
  • Les produits groupés sont désormais importés sans duplication des références SKU dans les options de produit. Auparavant, Magento Open Source créé plusieurs SKU en double dans les options de produit lorsque vous importiez des produits groupés avec des entrées en double.
  • Le prix du bundle du produit 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 groupés s’affichent désormais comme étant en rupture de stock lorsque le dernier de leurs produits enfants requis est acheté. Auparavant, les produits groupés étaient affichés comme étant en stock sur le storefront lorsque leurs produits simples étaient en rupture de stock.
  • Les problèmes de performances liés à l’ajout au panier de produits groupés avec des options non requises à 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 à la requête.
  • Les produits groupés créés avec POST V1/products réussissent désormais lorsque l’étendue de prix 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 Fast CDN (Caching Application=Fastly CDN). Cela affectait à la fois les clients invités et les clients enregistrés.
  • Les cookies de mise en 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 mise en cache incorrect et les pages pouvaient avoir été mises en cache plusieurs fois.
  • Les réponses de GraphQL GET opérations sur les pages CMS qui contiennent des blocs CMS sont maintenant effacées comme prévu dans le cache Fastly. Les mises à jour planifiées suivantes affichent désormais un contenu de mise à jour précis pour ces pages.
  • Le cache de page est maintenant effacé comme prévu pour un produit parent lorsque l’un de ses produits enfants a été enregistré de l’administrateur. Une vérification du plug-in a été introduite pour atteindre l’invalidation du cache pour les variantes configurables, similaires à 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 à partir 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 d’AWS pour la configuration EC2.
  • Le plug-in 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 pertinentes 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 passer en caisse

  • Magento Open Source optimise désormais les performances en ne chargeant pas les données de devis spécifiques à l’utilisateur lors de la génération de pages pouvant être mises en cache en page entière, 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 et de devis spécifiques à l’utilisateur ou à l’utilisatrice lors de la génération de ces pages, ce qui affectait les performances.
  • Les attributs personnalisés des adresses 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 ramène plus l’acheteur à une étape de paiement antérieure. Auparavant, l’acheteur était renvoyé à la page d’expédition.
  • La cart requête ne renvoie plus le mode d’expédition et l’adresse pour les paniers virtuels. Auparavant, lorsqu’un panier contenait à la fois des produits physiques et virtuels et que tous les produits physiques étaient supprimés, la réponse à la requête de panier continuait d’inclure des informations d’expédition.
  • Magento Open Source affiche désormais des messages informatifs lorsqu’une action d’ajout au panier est déclenchée. Auparavant, le The requested qty is not available n’était pas toujours affiché comme nécessaire sur le storefront.
  • Les temps de chargement des pages de passage en caisse ont été améliorés pour les clients avec des carnets d’adresses volumineux. Magento Open Source traite désormais uniquement le nombre d’adresses client spécifié dans le paramètre Customer Addresses Limit. Auparavant, Magento Open Source chargeait le carnet d’adresses entier.
  • La quantité de produit peut maintenant ê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é de produits de n’importe quel article lorsqu’un article était en rupture de stock.
  • Le filtre d’attribut de produit AdvancedSalesRule fonctionne désormais correctement avec le type principal d’attribut décimal. Par conséquent, les règles du panier avec Coupon Type défini sur No Coupon fonctionnent désormais comme prévu.
  • Le montant total d’une remise panier entier est désormais appliqué comme prévu aux paniers qui contiennent à la fois des produits groupés et configurables.
  • Les cookies de la section client respectent désormais le paramètre de domaine du cookie. Auparavant, le mini-panier n’était pas mis à jour comme prévu dans les magasins contenant des sous-domaines, même si la session était partagée.
  • L’expédition d’une commande à plusieurs adresses ne déclenche plus d’erreur pendant le traitement de l’identifiant de région.
  • Les montants de remise fixes appliqués au niveau du panier sont maintenant corrects.GitHub-37496
  • Les coupons sont maintenant appliqués avec succès à une commande lorsqu’un acheteur applique le coupon après avoir sélectionné la méthode d’expédition forfaitaire où une règle de prix de panier avec la méthode d’expédition définie comme condition s’applique. Auparavant, la page du panier affichait l’erreur Coupon n’est pas valide et le coupon n’était pas appliqué. GitHub-34866
  • Les coupons sont désormais appliqués avec succès à une commande lorsqu’un acheteur applique le coupon après avoir sélectionné la méthode d’expédition à taux forfaitaire dans laquelle une règle de prix de panier avec la méthode d’expédition définie comme condition s’applique. Auparavant, sur la page du panier affichée l’erreur Coupon non valide s’affichait et le coupon n’était pas appliqué. GitHub-34866
  • La My billing and shipping address are the same case à cocher reste désormais cochée par défaut lorsqu’un acheteur utilise la saisie semi-automatique Chrome pour remplir son adresse de livraison, puis clique sur Suivant avant que le bloc des modes d’expédition ne soit rechargé. GitHub-33725
  • La applied_rule_ids valeur du quote_item tableau comprend 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ée.
  • Les données de mini-panier et de client dans le stockage local se réinitialisent désormais 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’administration lorsque le panier persistant est activé.
  • L’estimateur de taxe et d’expédition du panier reflète désormais avec précision la configuration de destination par défaut. Auparavant, lorsque vous configuriez les paramètres de calcul de destination de taxe par défaut et que vous spécifiiez l’état/la région et le code postal, seule la valeur ZIP s’affichait dans le panier sous Estimate Tax and Shipping. Cela résultait de Magento Open Source définissant l’ID de région sur undefined avant d’appeler l’instruction conditionnelle qui définissait l’ID de région par défaut 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 groupés qui reflètent les paramètres de configuration de la taxe du panier. Auparavant, le mini-panier incluait toujours les taxes dans les prix des produits groupés.
  • L’estimation des frais d’expédition fournie à partir de la page du panier est maintenant exacte. collectShippingRates est maintenant défini une seule fois. Auparavant, l’estimation d’expédition était dupliquée. GitHub-36648
  • La requête cart ne renvoie plus d’erreur lorsqu’un produit du 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 vierge.
  • Les requêtes d’API invitées à POST V1/guest-carts/<cartId>/shipping-information ne renvoient plus de statut cancel si la page se recharge lors de la connexion dans un environnement mobile. Auparavant, Magento Open Source générait 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é d’expédition gratuite est désormais calculée comme prévu lorsque la condition de 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 est désormais initialisée uniquement lorsqu’elle est nécessaire plutôt que chaque fois que l’extraction d’invité est activée. Il est maintenant initialisé lorsque l’acheteur invité tente de passer à la caisse et que le paiement invité est désactivé. 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 de coupon de prix de panier et des coupons non valides étaient appliqués aux commandes. GitHub-37660
  • Vous pouvez maintenant enregistrer une nouvelle règle de prix de panier avec l’extension Magento_OfflineShipping désactivée. Auparavant, Magento Open Source générait cette erreur : report.ERROR: Warning: Undefined array key "simple_free_shipping". GitHub-37580
  • Les règles de prix de panier sont désormais appliquées comme prévu lorsqu’une règle de prix de panier lié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 le tableau sales_order_item et la règle de prix du panier n’était pas appliquée à la commande.
  • Les coupons sont désormais appliqués avec succès à une commande lorsqu’un acheteur applique le coupon après avoir sélectionné la méthode d’expédition à taux forfaitaire dans laquelle une règle de prix de 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 bin/magento cache:flush ne vide plus l’intégralité du cache de pleine page intégré ou de vernis, sauf indication contraire. GitHub-38301
  • Les commerçants 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 générait cette erreur SQL : report.CRITICAL: PDOException: SQLSTATE[42S02]: Base table or view not found: 1146 Table.
  • Magento Open Source no longer displays duplicate images when the product color is changed on a product detail page. GitHub-36243
  • Optimisation de l’algorithme de synchronisation des valeurs spécifiques au site web après l’ajout d’une nouvelle boutique ou la modification d’une boutique existante dans des environnements multi-boutiques 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 a pu être arrêtée, ce qui a laissé des répertoires masqués temporaires qui n’ont jamais été supprimés.
  • Les prix des produits groupés sont désormais calculés correctement 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 du produit dans le champ Meta Description de la page des détails du produit lorsque ce champ est vide. Auparavant, lorsqu’une description de produit contenait du code HTML généré par Page Builder ou un autre éditeur HTML, l’HTML s’affichait dans le champ Description des métadonnées 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ées sont désormais affichées conformément à la configuration de l’affichage en 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 en 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 prévue. Auparavant, les métadonnées avec NULL valeur n’étaient pas enregistrées lorsque cette case était décochée.
  • Les commerçants 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 produit de storefront n’affichait pas l’image correcte.
  • La requête productDetail renvoie désormais le nom du produit au lieu de la valeur null lorsque l’attribut de alt de l’image du produit est défini comme vide.
  • Les commandes qui comprennent à la fois des produits téléchargeables et physiques comprennent désormais des liens de travail vers le produit téléchargeable dès que la commande est terminée. Auparavant, les liens vers des produits téléchargeables n’étaient pas disponibles tant que les produits physiques de la même commande n’avaient pas été expédiés.
  • Les réécritures d’URL sont désormais mises à jour lorsqu’une catégorie est déplacée d’un magasin/d’une catégorie racine vers un autre magasin/une autre catégorie 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 comprend désormais que les entrées pertinentes. Auparavant, le url_path n’était pas mis à jour avec l’ID de magasin approprié.
  • Le point de terminaison REST V1/products/<sku>/media peut désormais traiter le transfert simultané de plusieurs images multimédias. Auparavant, lors du traitement simultané de plusieurs demandes, des données incohérentes étaient créées et Magento Open Source générait une erreur lorsque ces données étaient enregistrées dans la base de données.
  • Les performances de réindexation partielle des indexeurs Produits de catégorie et Catégories de produits ont été améliorées. Auparavant, la indexer_update_all_views tâche cron exécutait des réindexeurs plusieurs fois par produit ou catégorie.
  • Lorsque le statut du stock de produits est automatiquement mis à jour à rupture de stock en fonction de la configuration du stock (quantité), le statut du stock est ensuite mis à jour à rupture de stock lorsque la quantité de stock est mise à jour. Auparavant, le paramètre stock_status_changed_auto était ignoré lorsque la configuration de stock d’un produit était mise à jour sur en stock.
  • Le tri de la barre 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 Use Default Value case à cocher dans la portée de la vue du magasin est sélectionnée. Auparavant, cette case à cocher n’était pas 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 champ d’application. Si l’utilisateur administrateur ne dispose pas de 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 avoir trié les produits par nom dans Admin > Category > Products in category dans les déploiements multimagasins où les noms de produits varient d’un magasin à l’autre. GitHub-36208
  • La mutation addProductsToCart renvoie désormais des options personnalisables avec des données. Auparavant, elle renvoyait uniquement les options personnalisables vides. GitHub-37599
  • Le statut du produit en retard s’affiche désormais correctement sur le storefront. Auparavant, les produits disponibles pour expédition étaient incorrectement identifiés comme en retard.
  • 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 du 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 avec succès en virgule flottante lorsqu’un utilisateur administrateur bascule l’affichage du magasin de toutes les vues du magasin vers l’affichage du magasin par défaut. Auparavant, Magento Open Source générait une erreur. GitHub-37519
  • Magento Open Source n’affiche plus de message d’avertissement lorsque vous enregistrez un produit créé avec des options personnalisées après avoir supprimé son image.
  • Les images miniatures des produits s’affichent désormais comme prévu dans l’e-mail d’alerte de stock de produits envoyé lorsqu’un produit est de nouveau en stock. Auparavant, cette image n’était pas affichée dans le courrier électronique d’alerte
  • Le nombre de produits dans l’arborescence des catégories (Catalog d’administration > Category) est désormais exact. Auparavant, le nombre de produits de la catégorie ne pouvait pas être récupéré à partir du tableau 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 de détails du produit ne se déplace plus visiblement vers le bas pendant le chargement de la page lorsque product_image_white_borders le thème view.xml est désactivé. Auparavant, l’image du produit se déplaçait visiblement vers le bas pendant le 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 des produits lorsqu’ils sont abonnés aux alertes de baisse 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 étaient affichées comme disponibles, malgré leur statut et leur disponibilité réelle.
  • La mise à jour de l’attribut d’étendue du site Web dans une vue de magasin spécifique ne remplace plus la valeur de cet attribut dans l’étendue globale. Auparavant, l’importation des prix des produits lorsque plusieurs lignes sont disponibles avec le même SKU entraînait store_view_code des prix inexacts pour les étendues d’affichage par défaut et Toutes les boutiques.
  • Les commerçants peuvent désormais ajouter une image 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 résultant de clés de tableau non définies. Auparavant, une erreur s’était produite lors de la génération de la liste autorisée du schéma déclaratif.
  • Magento Open Source renvoie désormais un résultat valide pour le 01/01/1970 de date personnalisé. 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 les informations de catégorie attendues. Auparavant, une erreur de serveur interne s’était produite 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 se sont 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 de catalogue

  • Les règles de catalogue sont désormais correctement indexées lorsqu’elles sont activées par la mise à jour planifiée. 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 la première règle de catalogue ne soit terminée, les prix de remise de la règle de catalogue n’étaient pas générés pour la seconde règle de catalogue.
  • Les règles de catalogue sont désormais appliquées comme prévu dans un environnement multi-sites web.

Produits configurables

  • Les commerçants peuvent désormais sélectionner des Skip quantity at this time et des 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 des Skip quantity at this time entraînait la disparition des sources de produits.
  • Le libellé As low as ne s’affiche plus 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 avec 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 de la version 2.4.7-bêta1.
  • 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 pendant les opérations d’enregistrement du produit. GitHub-36928
  • L’affichage en storefront des prix des produits configurables change désormais comme prévu lorsqu’un acheteur sélectionne une option de produit. GitHub-37378

Coupons

  • Les codes promotionnels avec un nombre limité d’utilisations par client peuvent désormais être utilisés une seconde fois lorsque la commande pour laquelle ils ont été utilisés précédemment échoue. Auparavant, le code promotion n’était pas publié lorsque la commande précédente était annulée.
  • Les codes promo contenant des espaces ne sont plus invalidés. Auparavant, si un code de coupon contenait un espace (avant ou après le code réel), la validation échouait. GitHub-38048
  • La valeur du coupon à 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 GET V1/coupons/<couponId> point de terminaison renvoie désormais la réponse complète attendue pour les coupons créés manuellement, tout comme il le fait pour les coupons générés automatiquement. Auparavant, certains champs étaient omis (par exemple, usage_limit, et usage_per_customer created_at).

cron

  • La tâche cron aggregate_sales_report_bestsellers_data ne crée plus de très grandes tables MySQL temporaires et se termine désormais correctement. Cette tâche cron insère désormais des données par magasin, et non pour tous les magasins en même temps. 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’essayer d’acquérir des verrous de tâche cron inutiles. Auparavant, les tâches cron essayaient d’acquérir des verrous lorsqu’il était trop tard pour exécuter la tâche. Les tâches Cron n’étaient cron_schedule pas marquées comme manquées, même si elles avaient déjà dépassé l’heure prévue. 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 sales_clean_quotes processus 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 devis. Cette modification améliore les performances des tâches cron lors du traitement de nombreux devis.
  • Les utilisateurs administrateurs peuvent désormais visualiser la tâche actuellement effectuée par le bin/magento cron:run processus. 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 modifier le client en fonction des paramètres de configuration. GitHub-36196

E-mail

  • Les e-mails contenant des signes diacritiques ou des accents (c’est-à-dire, un e-mail utf8) sont désormais pris en charge pour les clients et les sociétés, ainsi que pour le passage de commandes par les invités et les clients enregistrés. Auparavant, Magento Open Source n’enregistrait pas les enregistrements de clients contenant des signes diacritiques et affichait cette erreur : Something went wrong while saving the customer.
  • Les noms des expéditeurs d’e-mails ne peuvent plus contenir de caractères deux-points. Une nouvelle règle de validation empêche désormais l’enregistrement des noms d’expéditeur qui contiennent des caractères deux-points dans la section Stocker les adresses e-mail d’Admin Stores > General. Auparavant, les commerçants pouvaient enregistrer un nom d’expéditeur qui contenait un caractère deux-points, ce qui entraînait des erreurs de serveur de messagerie.
  • Les adresses e-mail des clients peuvent désormais inclure des signes diacritiques. Auparavant, la validation frontale interdisait la création d’un utilisateur avec des signes diacritiques dans son adresse e-mail. GitHub-12075
  • Les e-mails de Stock et d’alerte de prix sont désormais traduits en fonction de la langue configurée pour l’affichage de la boutique par défaut du site Web. Auparavant, ces e-mails n’étaient pas traduits.
  • POST V1/order/notify-orders-are-ready-for-pickup envoie désormais un e-mail 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 n’est désormais déclenché que lorsque la demande a été honorée sans exception.

Cadres

  • Amélioration du débogage en ajoutant la valeur UNCACHEABLE lors de la sortie 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 de code pour prendre en charge la gestion par défaut de la compression Vernis. GitHub-38309
  • La commande varnish:vcl:generate comprend désormais un input-file argument . Cela prend en charge l’ajout d’une VCL personnalisée à 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 de la base de code. GitHub-38304
  • phpcodesniffer-composer-installer in composer.json a été mis à niveau vers la version 1.0.0. GitHub-36913
  • Les caractères non conformes aux RFC3986 ont été supprimés de la base de code. GitHub-38355
  • Correction d'une balise de document PHP incorrecte dans la classe Magento\Reports\Block\Adminhtml\Shopcart\Product\Grid. GitHub-38186
  • Le code refactorisé dans toute la base de code qui a été créée lorsque les pratiques de codage ont dicté 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 Magento Open Source déploiements antérieurs à la version 2.4.4. GitHub-38363
  • Clarification du message d’erreur associé lorsqu’un StockItemValidator.php ID de stock avec une valeur de 0 est fourni lors d’un appel API. GitHub-31107
  • Ajout d’un tableau vide par défaut à in CompositeTagGenerator pour éviter les erreurs lors de $tagGenerators la compilation d’injection de dépendance. Auparavant, l’exécution de la bin/magento setup:upgrade commande lorsque les Magento_DirectoryGraphQl modules et Magento_StoreGraphQl étaient désactivés générait 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 d’entrée de menu a été déplacé du niveau INFO vers DEBUG. Auparavant, le fichier var/log/system.log était inondé de messages comme celui-ci : Add of item with id Magento_Theme::design_config was processed … .
  • Le préchargement Redis n’échoue plus lorsque exec() renvoie false. La vérification a été ajoutée au processus de préchargement pour empêcher array_combine de recevoir des false en tant que second argument. Par conséquent, le préchargement continuera à s’exécuter lorsque exec() retourne 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 pour Eswatini dans toute la base de code. GitHub-37873
  • Ajout de la nouvelle monnaie nicaraguayenne (NIO) à la liste des monnaies disponibles.
  • Correction d’un nom de variable dans CatalogRule/Controller/Adminhtml/Promo/Catalog/NewConditionHtml.php. GitHub-38093
  • Correction des erreurs d'arrondi du sous-total qui se produisaient dans les transactions pour les produits pour lesquels la quantité décimale a été activée. GitHub-37817
  • Le filtre de date de la grille de clients d’administration fonctionne désormais comme prévu en fonction du paramètre régional spécifié.
  • 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 des max_messages = 0 pour le client. Auparavant, la connexion était interrompue.
  • Le magento/module-release-notification module principal a été marqué comme obsolète dans le code 2.4-develop 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 de 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 production. GitHub-35252
  • L'état indien du Ladakh est maintenant listé comme une option dans les menus déroulants Admin State. GitHub-33698
  • L’indicateur 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 les modules suivants : Magento_user-variable-wee, Magento_Catalog et Magento_Customer, Magento_Wishlist, Magento_Review Tax, ainsi que dans l’ensemble du framework. GitHub-37245, GitHub-37246, GitHub-37249, GitHub-37263
  • Le sérialiseur JSON du User module a été remplacé par un nouveau sérialiseur plus précis (JsonHexTag). Auparavant, Magento Open Source se bloquait parfois lorsque vous tentiez d’utiliser des données sérialisées par le sérialiseur standard lorsqu’elles contenaient des éléments sans é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 désormais fermées avant que le process manager ne bifurque les processus.
  • Le programme de validation des messages de la file d’attente valide désormais le sous-type de tous les éléments du tableau. Auparavant, Magento Open Source avait généré une exception.
  • La configuration de connexion à la file d’attente par rubrique dans app/etc/env.php fonctionne désormais correctement. Auparavant, la file d’attente d’alerte de produit ne se générait pas correctement lorsqu’une nouvelle file d’attente de messages était créée avec un échange personnalisé. Si la connexion de file d’attente pour une rubrique a été configurée dans app/etc/env.php avec un échange personnalisé, une nouvelle liaison a été créée pour toutes les rubriques avec cet échange personnalisé. Les commerçants ne pouvaient pas traiter les alertes de produits.
  • Les formats temporels marqués d’un commentaire /* mariadb-5.3 */ ne provoquent plus d’erreurs lors de la mise à niveau du serveur MariaDB vers la version 10.5.1 ou une version ultérieure bin/magento setup:install.
  • Le pilote AwsS3 fonctionne maintenant comme prévu pour remplacer l'implémentation de base du stockage de fichiers par défaut. Auparavant, les données pouvaient être endommagées lorsque ce pilote était configuré pour le stockage de fichiers. GitHub-37844
  • bin/magento config:show et set les commandes qui utilisent $_ENV des variables prennent désormais en charge l’utilisation de codes de site Web et de magasin contenant des caractères en majuscules ou en majuscules.
  • Ajout de classes avec !important telles qu’utilisées dans Tailwind 3 pour la prise en charge de la disposition CSS. GitHub-37568
  • Une dépendance manquante jQuery a été ajoutée au trim-input.js fichier. GitHub-37683
  • Les détails spécifiques à l’événement sont maintenant transmis en tant que deuxième attribut (context) de la log méthode. GitHub-37879
  • Des valeurs de format ont été ajoutées aux images du catalogue et les scripts inutiles ont été supprimés de la structure de l’interface utilisateur. GitHub-37691
  • Amélioration des messages d’erreur déclenchés par une configuration XML non valide afin d’être plus informatifs. GitHub-37788
  • Code obsolète restructuré lié à la création de propriétés dynamiques dans l’ensemble de la base de code.
  • Les performances des indexeurs pour les grands magasins avec des bases de données de produits extrêmement actives se sont améliorées. Les indexeurs indexent désormais les informations produit les plus récentes une fois pour chaque index plutôt que plusieurs fois. Auparavant, les produits disparaissaient du site web et les données des produits pouvaient être obsolètes sur le site web. GitHub-30012
  • mview_state statut d'enregistrement indique désormais précisément l'état en fonction de l'activité du journal des modifications lorsqu'une connexion à la base de données esclave est disponible. Auparavant, ces enregistrements restaient dans un é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 monétaire afin de préserver la parité des fonctionnalités avec la classe de 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 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 du Administrators a été supprimé de la requête utilisée pour récupérer le rôle d’un 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 les mots réservés dans un composant de l’interface utilisateur d’administration par défaut n’entraîne plus d’erreur SQL dans les 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 ou l’utilisatrice 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 depuis Zend Framework 1, la méthode toCurrency ignorait le paramètre position. Ce problème survenait dans toute l’interface d’administration.
  • Mutex a été implémenté 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 entraînaient des entrées dupliquées dans la table inventory_reservation.
  • La fonction populateWithArray transforme désormais correctement les propriétés d’objet en casse de serpent, ce qui la rend compatible avec les getters et setters AbstractModel. Auparavant, la mise en forme de la casse de serpent était incorrecte lorsque le nom de l’attribut de données contenait plusieurs lettres majuscules à la suite.
  • La valeur d’incrémentation automatique dans le tableau 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 tentez 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 d’auto-incrémentation utilisées dans le modèle EAV augmentent désormais de manière linéaire. Auparavant, le processus d’incrémentation automatique pour les colonnes ignorait les valeurs en raison de l’échec des requêtes d’insertion. GitHub-28387
  • Suppression des espaces inutiles des attributs de id qui ne les nécessitent pas. (Ce bogue a été introduit par un changement de code dans 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 around modules externes. GitHub-31443
  • Les échantillons Helper ont été restructurés afin de supprimer les alias d’importation trompeurs. GitHub-31373
  • Les utilisateurs administrateurs peuvent maintenant supprimer ou renommer un sitemap.xml fichier 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 désormais traités dans l’ordre dans lequel ils sont publiés lorsque le client est démarré. Auparavant, le premier message était extrait de la file d’attente pour simplement vérifier si les messages étaient placés en file d’attente, puis était rejeté, ce qui entraînait le dernier traitement du premier message.
  • Magento Open Source ne renvoie plus d’exception dans le fichier journal lorsqu’un utilisateur tente d’imprimer une étiquette d’expédition. Auparavant, si une extension modifiait les en-têtes de réponse contenant une pièce jointe, le système générait une exception dans le fichier journal.
  • La prise en charge d’autres classes HTML a été ajoutée à elements.xsd. GitHub-36891

Correctifs généraux

  • Changement du nom de la reponseBody variable en responseBody .app/code/Magento/CatalogRule/Controller/Adminhtml/Promo/Catalog/NewConditionHtml.phpGitHub-38093
  • La planification des mises à jour de produits n’efface plus les données d’attribut à 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 étendue de magasin autre que celle par défaut n’entraîne plus la modification de la portée du magasin des attributs lorsqu’ils sont chargés à l’aide de ProductRepository. GitHub-8897
  • Des messages d’erreur informatifs ont été ajoutés à la validation des champs personnalisés sur les pages de détails du produit. GitHub-38006
  • Les caractères spéciaux peuvent désormais être utilisés dans les champs de nom. Auparavant, l’esperluette (&) était limitée dans le programme de validation des noms, ce qui bloquait les opérations d’ajout ou de modification des clients lorsque le nom du client contenait une esperluette. GitHub-38080
  • Les utilisateurs administrateurs disposant d’un accès restreint à un magasin spécifique peuvent désormais utiliser une action de mise à jour en masse pour mettre à jour les avis de produits. Auparavant, Magento Open Source avait généré l’exception suivante : 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 de 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 acheteurs 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é attribués aux deux sites Web.
  • Les blocs de contenu CMS qui contiennent des emojis ne sont plus tronqués après l’emoji lors de l’enregistrement dans la base de données. Auparavant, le contenu était tronqué après l’emoji 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 sont maintenant affichés comme prévu lorsque la Show Password case sur la page de connexion est active.
  • L’attribut système du jeton de réinitialisation de mot de passe de la validation de l’entité client (rp_token) a été supprimé de la validation des attributs lors de la création du compte client et la validation des diacritiques est incluse uniquement dans l’e-mail du 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 depuis un appareil après avoir réinitialisé leur mot de passe sur un autre appareil.
  • Le champ Adresse du client administrateur État/Province 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 État/Province. GitHub-36846
  • Les erreurs ne se produisent plus lors des demandes de flux RSS pour les catégories lorsque le RSS Feed Top Level Category est activé. Auparavant, la navigation sur la page de catégorie de flux RSS entraînait des erreurs de Elasticsearch CRITICAL dans les fichiers journaux lorsque RSS Feed Top Level Category l’activation était activée.
  • La valeur correcte est désormais enregistrée lorsque gws_store_groups l’étendue du rôle est modifiée lors de la création du rôle utilisateur. Auparavant, lorsque l’étendue du rôle était sélectionnée comme All, la valeur était enregistrée comme nulle lors de la création de l’utilisateur gws_store_groups , mais pas lors de la modification du rôle. En outre, si l’étendue du rôle a été sélectionnée sur Custom, la gws_store_groups valeur était toujours enregistrée comme nulle.
  • La page de réinitialisation du mot de passe est maintenant accessible en cliquant sur le lien Mot de passe de réinitialisation de l’administrateur sur la page de connexion administrateur lorsque le Add Store Code to Urls paramètre est activé. Le lien Admin reset password ouvrait précédemment la page de connexion ou la page 404.
  • La période du 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 converti en 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 dans Admin Content > Hierarchy. Auparavant, cliquer sur Save actualisait la page, mais le contexte était perdu et la vue de magasin sélectionnée n’était plus affichée.
  • Cliquez sur le Send invitation bouton (Admin Marketing > Private sales > Invitation) envoie maintenant 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 à zéro octet peuvent désormais être copiés avec succès vers le stockage à distance avec AWS S3.
  • Les utilisateurs administrateurs peuvent désormais ajouter une nouvelle adresse client à partir de l’administrateur lorsque ce client a été créé pour un autre site Web dont l’ID de magasin ne correspond pas à l’ID de 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 de widget block_id correcte. GitHub-29644

GrapheQL

  • La requête getCustomerWishlist n’entraîne 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 groupés comme prévu. Auparavant, le total des remises appliquées à un produit groupé était renvoyé en tant que zéro.
  • La requête getCustomerWishlist n’entraîne plus d’erreur de serveur interne lors de l’interrogation de listes contenant des produits configurables.
  • La déclaration de l’indicateur is_subscribed, de son résolveur, du cache et des tests associés a été déplacée du module CustomerGraphQl vers le module NewsletterGraphQl.
  • La mutation addProductsToCart ne signale plus d’erreurs sans rapport dans les 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 uniquement les correspondances complètes.
  • 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 ConfigurableProduct.configurable_options de requête products renvoie désormais uniquement les valeurs qui ont au moins un produit activé. Auparavant, ce champ renvoyait des produits simples désactivés.
  • Amélioration des performances du GetCategories query en réduisant le nombre de requêtes SQL inutiles qu’il génère.
  • La gestion des erreurs d’adresse pour les composants de la bibliothèque GraphQL fonctionne désormais comme prévu.
  • La requête products renvoie désormais tous les détails de tarification storefront pertinents lorsque la tarification dynamique est définie sur non et que des remises sont appliquées. Auparavant, la fourchette de prix des produits n’était pas renvoyée. GitHub-35649
  • Les noms des transactions GraphQL incluent désormais uniquement les noms des requêtes de niveau supérieur dans les journaux New Relic. Auparavant, les noms de transaction incluaient également des noms de requête secondaires.
  • La gestion des erreurs d’adresse pour les composants de la bibliothèque GraphQL fonctionne désormais comme prévu.
  • Lorsque le paramètre Visibilité 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 de 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 mappés au filtre FilterRangeTypeInput dans les requêtes de produits. Auparavant, ces attributs étaient mappés à FilterMatchTypeInput. Suite à cette modification, les requêtes qui filtrent sur des attributs DateTime nécessitent des valeurs from et to au lieu de valeurs correspondantes.
  • La requête customer renvoie désormais uniquement les avis clients liés à une vue de magasin spécifique, comme prévu, lorsqu’elle est filtrée par ID 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 l’e-mail 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 des libellés corrects. GitHub-29635
  • La categoryList requête renvoie maintenant une section remplie product du bloc pour les options produits enfants des produits groupés, comme prévu. Auparavant, aucune information sur les produits enfants du lot n’était renvoyée.
  • La route requête renvoie maintenant les itinéraires pour les catégories et les produits comme prévu sans erreur interne du serveur. GitHub-36544
  • La products requête récupère désormais des url_key valeurs lorsque plusieurs catégories sont sélectionnées.
  • products requêtes renvoient désormais des agrégations uniquement pour les produits affectés au catalogue partagé spécifié.
  • Les noms des transactions ont été ajoutés aux transactions New Relic GraphQL. GitHub-36874
  • La OptionValueProvider méthode class get() renvoie désormais une valeur d’option d’attribut basée sur l’élément donné, option_id comme prévu. Auparavant, il renvoyait une erreur. GitHub-35910
  • La products requête renvoie maintenant toutes les agrégations (filtres) disponibles et leurs étiquettes correctement traduites. Auparavant, les libellés d’agrégation des prix et des catégories n’étaient pas traduits comme prévu. GitHub-36140
  • Vous pouvez désormais utiliser un ProductCard de fragment 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 montée en gamme 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 des produits associés, triées par position. GitHub-33010
  • category_url_path a été ajouté à ProductAttributeFilterInput, qui prend en charge la demande de tous les produits d’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 exécutée avant la méthode qui gère la validation. GitHub-31336

Image

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

Importer/exporter

  • Le processus d’importation de produit analyse désormais les valeurs avec le séparateur correct. Auparavant, le processus d’importation utilisait l’opérateur de 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 l’importation d’un fichier 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 chargement du taux de table est temporairement stocké jusqu’à l’exécution de la tâche cron du processeur de configuration asynchrone . Cette tâche cron récupère le nouvel emplacement du fichier et le traite en conséquence. Auparavant, les taux de mise à jour des tableaux 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, quel que soit l’horodatage. Auparavant, la grille n’affichait pas tous les fichiers exportés qui avaient la même date et heure. GitHub-36951
  • Les produits dotés d’options personnalisables peuvent désormais être importés avec succès. Auparavant, les données des options étaient perdues pendant l’importation. GitHub-37598
  • Les caractères spéciaux des fichiers CSV exportés sont maintenant représentés comme prévu dans Excel. GitHub-37921
  • L’importation des sources de stock et des adresses client à l’aide de cette Customers and Addresses (single file) option se termine désormais avec succès.
  • L’importation de produits n’échoue plus en raison d’un manque de mémoire. Auparavant, l’importation d’un nombre illimité de produits dans une base de données contenant 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 et Magento Open Source affiche désormais cette erreur : There are no valid rows to import. Auparavant, la validation réussissait dans ces conditions, mais le processus d’importation échouait avec le message suivant : entity values are mixed. GitHub-32905
  • L’importation de clés d’URL avec le même produit ne remplace ni ne supprime les clés existantes d’affichage de magasin par défaut. Les réécritures d’URL ne sont désormais régénérées pour les vues de magasin que lorsqu’il n’existe aucune valeur de url_key remplacée. Auparavant, l’importation de réécritures d’URL avec la même clé URL remplaçait la clé d’URL d’affichage de magasin par défaut existante. (key_store réécritures d’URL ont été supprimées, mais la réécriture d’URL au niveau d’affichage par défaut du magasin pour le produit était toujours définie sur key_store.)
  • Le nombre de produits ne change plus de manière inattendue pendant l’importation. Le vidage du cache est désormais reporté jusqu’à la fin du processus d’importation.
  • L’état des actions d’importation planifiées représente désormais avec précision 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étrage lors de l’import Disable Automatic Group Change Based on VAT ID des enregistrements client. Auparavant, la disable_auto_group_change valeur des fichiers d’importation était ignorée. GitHub-36409
  • Magento\Framework\Convert\Excelgère désormais les nombres précédés d’un espace. Le fichier XML Excel code désormais les champs sous la forme d’un String. Auparavant, le rédacteur Excel codait ces valeurs en tant que number, ce qui générait des fichiers non valides. GitHub-33422
  • Les commerçants peuvent désormais spécifier le paramètre régional dans lequel 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 le paramètre régional de configuration par défaut (et non la vue de magasin par défaut) pour analyser les données. Dans l’administration, les processus d’importation et d’exportation 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 de country_of_manufacture créés par un utilisateur administrateur avec un paramètre régional différent de celui de l’utilisateur administrateur qui importe les produits ne renvoie plus d’erreur de validation. Auparavant, cette opération d’importation pouvait entraîner une erreur de validation sur l’attribut country_of_manufacture.
  • Les produits exportés ont maintenant la valeur correcte manage_stock lorsque la use_config_manage_stock valeur est 1égale à . 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 avec succès lors d’une opération d’importation planifiée. Auparavant, aucun message d’erreur ne s’affichait.
  • Le processus d’importation de produits n’est plus interrompu lorsque des images de produits 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 produits ne renvoie plus d’erreur de validation lorsqu’une valeur d’attribut dans configurable_variations la colonne 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 HTML étaient supprimées dans l’éditeur Page Builder après l’exportation et l’importation du produit.
  • Les configurations non par défaut (portée du site web ou du magasin) ajoutées en tant que variables d’environnement n’interrompent plus le processus de app:config:import avec une erreur de récursivité.
  • Les indexeurs de prix et de recherche catalogue du mode Mise à jour lors de l’enregistrement ne sont plus invalidés après l’importation. Auparavant, la version du document de l’indexeur d’Elasticsearch était modifiée lors de l’importation de produits nouveaux et existants.
  • 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 liés aux performances de l'indexeur des prix ont été résolus. Les performances de l’indexeur ne se dégradent plus progressivement. L'indexeur a été refactorisé pour augmenter la vitesse de traitement de l'indexeur en modifiant la façon dont les tables temporaires sont créées. Ces tables temporaires sont maintenant recréées au lieu d’être traitées par des instructions DELETE plus longues.
  • Les performances de l’indexeur de prix ont été améliorées. Une indication d’index a été ajoutée à l’indexeur de prix pour améliorer les temps d’exécution des requêtes MySQL déclenchées lors de l’indexation.
  • Tous les indexeurs utilisent désormais les mêmes couleurs pour représenter leur état. GitHub-34648
  • Les performances de l’indexeur de produit de règles 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 n’entraîne plus l’échec de la tâche de mise à jour de l’index cron . GitHub-36471
  • bin/magento indexer:reindex customer_grid ne fonctionne plus avec une erreur MySQL lorsque la grille client inclut des attributs client personnalisés nouvellement créés. GitHub-36233
  • La modification du mode d’indexation pour plusieurs indexeurs (c’est-à-dire un changement de mode d’indexation 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 évitant 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 par l'administrateur. Auparavant, il n'y avait pas d'instruction return et le contrôleur de FrontendController classe était mal géré. GitHub-31374
  • Remplacement de MySQL CREATE TEMPORARY TABLE ... LIKE par CREATE TEMPORARY TABLE refactorisé pour assurer la conformité à 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 qu’il 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 en tant que deuxième 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 plus volumineux que la valeur configurée dans php.ini . GitHub-37281
  • Le moteur de modèle d’e-mail peut désormais traiter correctement certaines directives imbriquées (par exemple, {{if}}{{depend}}...{{/depend}}{{/if}}). GitHub-36438
  • product requêtes avec des données d’agrégation renvoient désormais les valeurs de libellé correctes pour les attributs de produit de type booléen. GitHub-29123
  • Ajout des régions ukrainiennes au tableau 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 que CSS Merging Enabled est activé. Des 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’interface d’administration.
  • 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

Gestion des stocks

  • Les produits repassent désormais automatiquement au statut En stock après un avoir qui inclut un retour de la quantité de produit. Auparavant, si un produit était en rupture de stock, mais qu'un avoir renvoyait du stock de ce produit, les commerçants devaient modifier manuellement le statut du stock du 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 sources par défaut.
  • Correction de problèmes liés à l’indexeur d’inventaire qui affectaient la précision de l’inventaire du stock de storefront des produits configurables. GitHub-36421
  • La mise à jour des articles d’origine de stock via REST V1/inventory/source-items fonctionne désormais plus rapidement. L’appel ne déclenche plus de réindexation ou d’opération de nettoyage du cache sur les produits d’inventaire inchangés.
  • Le V1/products/<sku> REST déclenche désormais une réindexation automatique des stocks lors de la mise à jour de l’état des stocks d’un produit. Auparavant, une réindexation de stock n’était pas déclenchée pour le produit 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 payload pour les espaces blancs dans les éléments sources d’inventaire renvoyés et envoie un message d’erreur sur la validation, le cas échéant.
  • Les commerçants peuvent désormais informer les acheteurs qu’une commande est prête à être retirée lorsque le paramètre No Manage Stock est activé pour un produit. Auparavant, lorsque ce paramètre était activé, Magento Open Source affichait le message d’erreur suivant : Your order is not ready for pickup.
  • Les commerçants peuvent désormais créer un avoir 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, et Magento Open Source a généré une exception TypeError.
  • Le nombre de sources de 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 d’administration lorsque vous triez des produits à l’aide de l’option « Déplacer les stocks vers le bas ». Le problème a été résolu en plaçant l'instruction de jointure SQL dans l'instruction conditionnelle uniquement après s'être assuré qu'elle n'est pas déjà incluse. Auparavant, la page était redirigée vers le tableau de bord d’administration avec le message : Invalid security or form key. Please refresh the page.
  • La AUTO_INCREMENT de la table inventory_source_item n’est plus augmentée à chaque opération de UPDATE. Auparavant, chaque mise à jour augmentait la AUTO_INCREMENT de ce tableau, ce qui entraînait finalement l’exclusion de la valeur AUTO_INCREMENT lors de l’ajout d’un nouvel enregistrement au inventory_source_item table. Par conséquent, les utilisateurs administrateurs ont reçu l’erreur suivante lorsqu’ils ont essayé de créer un nouveau produit à partir de l’administrateur : Numeric value out of range....
  • Les utilisateurs administrateurs peuvent désormais ajouter un produit à un panier client à partir de l’administration pour une portée d’affichage de magasin particulière 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 repose plus sur le paramètre de configuration Synchronize with Catalog. Auparavant, les produits n’étaient correctement synchronisés que 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 se situe dans la plage de produits disponibles lors de la sélection de la source d’expédition.
  • Le statut du stock de produits configurables est désormais correctement mis à jour lorsqu'un produit configurable et sa valeur de Stock Availability de produits enfants sont mis à jour par une mise à jour en masse du stock. Auparavant, vous ne pouviez pas renvoyer en stock un produit configurable et ses produits enfants par mise à jour en masse.
  • Le type de données pour les sources non par défaut a été mis à jour à DECIMAL (12, 4) pour prendre en charge jusqu’à huit chiffres entiers, ce qui correspond à la limite implémentée pour le stock par défaut. Cette valeur est désormais synchronisée avec les pages Admin Ajouter et modifier des produits , qui prennent en charge la validation des entrées pour un maximum de huit chiffres pour tous les types de sources d’inventaire. Auparavant, l’entrée du champ (pour les sources autres que celles Quantity par défaut) était prise en charge jusqu’à six chiffres uniquement.
  • Les sources par défaut et les autres sources affichent désormais les informations correctes pour la quantité vendable du produit lorsqu’une source autre que celle par défaut commandée dans la vitrine est traitée pour expédition. 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 selon le périmètre défini dans l’objet de produit (\Magento\Catalog\Model\Product::getStoreId()). Auparavant, l’état getIsSalable() des stocks renvoyait en fonction de la portée actuelle, quel que soit l’objet du produit.

Journalisation

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

Login

  • La réinitialisation d’un mot de passe dans un navigateur et la connexion ultérieure via un autre navigateur n’entraînent plus d’exception. GitHub-36447
  • Les clients sont maintenant 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 Admin vers la liste des articles à commander sont désormais supprimés comme prévu du panier. GitHub-37538
  • Les commerçants peuvent maintenant créer des avoirs comme prévu pour le retour 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, le statut de la commande était incorrectement identifié comme fermé, et la page de commande Admin n'affichait pas les options d'avoir.
  • Magento Open Source applique désormais le montant de remise correct aux commandes partiellement annulées. Auparavant, le montant de la remise calculé dans la colonne base_discount_cancelled était incorrectement calculé lorsqu’une commande était modifiée. La prise en charge des valeurs négatives a été ajoutée aux factures pour les commandes avec remise.
  • 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éé l’ordre dans l’Administration.
  • La page Admin - Grille des commandes client se charge désormais comme prévu lorsqu’un commerçant lance une recherche à partir de cette page. Previously, when a merchant tried to search orders from this table, the page froze, and Magento Open Source displayed a Request-URI Too Long error in the browser console.
  • Amélioration des performances de la méthode OrderRepository::get() en réduisant le nombre de fois où elle charge une commande à partir de la base de données. Auparavant, cette méthode chargeait une commande plusieurs fois. GitHub-36636
  • Les commerçants peuvent désormais générer des avoirs pour les commandes contenant certains articles dont le total est nul lorsque d'autres articles de commande peuvent être remboursés. Auparavant, les commerçants 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 sont désormais affichés sur la page de commande lors de la réorganisation du produit enfant à partir de l’administrateur. GitHub-37028
  • L’émulation commence désormais pendant les appels send() une fois qu’elle est terminée pendant l’appel getInfoBlockHtml() et qu’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 commerçants peuvent désormais générer des avoirs pour les commandes contenant certains articles dont le total est nul lorsque d'autres articles de commande peuvent être remboursés. Auparavant, les commerçants 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 sont désormais affichés sur la page de commande lors de la 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 envoyée, le mémo de crédit et l’expédition. GitHub-27474
  • Les notes de crédit pour les commandes qui ne contiennent qu’un seul produit configurable sont maintenant générées correctement. Auparavant, la isLast() fonction ne retournait true pas comme prévu. GitHub-36722
  • Amélioration des performances de la aggregate_sales_report_bestsellers_data tâche cron en optimisant la requête de données principale.
  • Le statut de la commande est maintenant correct lorsqu’un remboursement partiel a été effectué pour une commande contenant des produits groupés. Auparavant, le statut de la commande était répertorié comme terminé après l’émission d’un remboursement partiel, même si la commande restante n’était pas complète. 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éapprovisionnement.
  • Les acheteurs ne peuvent plus enregistrer les statuts de commande incorrects sur la page de commande. L’état de la commande n’est plus modifié de Terminé à Traitement lorsqu’un article est expédié. 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 entré un commentaire. GitHub-36562
  • La grille des commandes client est maintenant 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 de fuseau horaire générait une erreur lorsque le même fuseau horaire était fourni à la méthode.
  • Le tableau de bord Admin affiche désormais les statistiques de commande correctes lors du premier chargement. Auparavant, le tableau de bord affichait des informations de commande incorrectes, mais affichait les informations correctes une fois la période mise à jour.
  • Les utilisateurs administrateurs sont maintenant 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 nouvelle commande à partir de l’administrateur.
  • Le GET V1/orders/<OrderID> point de terminaison renvoie désormais des informations sur les produits configurables et simples de la commande, quel que soit l’état du stock des produits simples. Les utilisateurs administrateurs peuvent passer des commandes maintenant uniquement si les articles sélectionnés (produits) sont en stock ou vendables. Auparavant, cette API renvoyait uniquement des informations sur les produits qui étaient en stock.
  • La page avoir ne se bloque plus lorsque la livraison gratuite est activée lorsque le prix d'expédition inclut la taxe et que les calculs de taxe sont appliqués après les remises. Auparavant, Magento Open Source a généré une exception Division by zero. GitHub-36800
  • L’utilisation du point de terminaison pour publier un commentaire sur une commande sans indiquer l’état de la rest/V1/orders/{id}/comments commande n’affecte plus l’affichage de la commande. Auparavant, l’état de la commande était enregistré comme NULL dans les sales_order tableaux et sales_order_grid et ni la page Mes commandes ni la grille de commande Admin n’affichaient la commande. GitHub-34180

Créateur de pages

  • Les images conservent désormais les proportions correctes lorsqu’elles sont redimensionnées dans le créateur de pages. GitHub-37493
  • Page Builder affiche désormais les messages d’erreur dont vous avez besoin lorsque vous essayez de charger une image d’une taille supérieure à la taille de fichier 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 maximum spécifié.
  • Les curseurs de produit de 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 est maintenant affiché dans les modèles d’e-mail comme prévu lorsque le Magento_AsyncConfig module est désactivé. Auparavant, les modèles de courrier électronique contenaient uniquement du code HTML brut.
  • Les performances des opérations d’enregistrement de Page Builder dans le navigateur Chrome ont été améliorées.
  • L’ajout d’un produit au panier à partir du carrousel Page Builder ne duplique plus la quantité d’articles des pages avec deux widgets différents affichant les mêmes produits.
  • Page Builder n’ajoute plus l’attribut tabindex HTML 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 de Page Builder gèrent désormais correctement les caractères spéciaux HTML. Auparavant, le widget de produit n’affichait pas correctement les SKU qui contenaient le caractère &.
  • Le contenu de l’élément de texte Page Builder est désormais 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 Page Builder vers un autre fonctionnent désormais comme prévu. Auparavant, la page dans laquelle vous tentiez de coller du texte n’avait pas pu ê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 column-block de Page Builder créé dans les anciennes versions de Page Builder s’affiche désormais correctement.
  • Le filtrage de la description des métadonnées du 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 de Page Builder ont été résolus. Auparavant, column-line contenu de type de contenu 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 commande 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 Magento Open Source et ceux de PayPal.
  • Les transactions PayPal Express Checkout incluent désormais des SKU de produits enfants et des titres de produits complets. Le fichier Magento/Paypal/Model/Cart.php collecte désormais les SKU de produit enfants avec leur titre de produit parent afin d’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 le passage en caisse.
  • L’option Mode de paiement du coffre n’apparaît plus dans le workflow de passage en caisse de l’administrateur lorsque l’acheteur ne dispose pas d’un jeton de coffre. 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 d’expédition lors de l’application du code de coupon lors de la commande. Auparavant, dans ces conditions, Magento Open Source générait une erreur et affectait un frais d’expédition forfaitaire à la commande.
  • Les problèmes liés au traitement en storefront des méthodes de paiement PayPal et PayPal ont été résolus.
  • Correction de problèmes liés aux URL de secours pour les commandes payées avec par les paiements Idéal lorsque le paiement local est activé.
  • Les acheteurs ne peuvent plus créer une commande PayPal sans ajouter de nom.

Braintree

  • Braintree informations de paiement sont désormais enregistrées par magasin et les acheteurs ne voient désormais que les informations de carte enregistrées dans le magasin dans lequel ils effectuent leurs achats. Auparavant, les acheteurs pouvaient voir les informations de carte stockées de tous les magasins lors du paiement. GitHub-34253
  • Les acheteurs peuvent désormais vérifier une commande envoyée à plusieurs adresses à l’aide d’un mode de paiement Braintree lorsque le coffre pour les paiements par carte est désactivé. GitHub-37615
  • Les commandes partiellement facturées sont désormais capturées comme prévu dans le bon compte 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 renvoie plus d’erreur lors de la création d’une deuxième facture partielle pour une commande payée par Braintree lorsque le Enable Vault for Card Payments est activé. Auparavant, lorsqu’un commerçant tentait de créer une seconde facture, Magento Open Source générait 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 processus de paiement 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 My billing and shipping address are the same bouton.
  • Résolution de problèmes liés à la vérification avec PayPal via Braintree après la mise à niveau à partir d’Adobe Commerce 2.4.5-p2. GitHub-37242
  • Les numéros de téléphone sont maintenant rendus comme prévu avec les adresses dans les champs d’adresse d’expédition de la fenêtre contextuelle Google Pay. Auparavant, les numéros de téléphone étaient absents.
  • Les commandes sont maintenant passées avec succès avec Braintree lorsque la réponse Braintree inclut une valeur vide pour threeDSecureInfo/eciFlag. Auparavant, une erreur PHP se produisait lors du paiement lorsque cette valeur était vide.
  • Magento Open Source ne renvoie plus d’erreur lorsqu’un acheteur applique un coupon sur la page de révision de commande lors du paiement avec Google Pay à partir du mini-panier. Auparavant, les acheteurs étaient redirigés vers une page 404.
  • Les acheteurs peuvent désormais effectuer le paiement à l’aide de Braintree Payments et Magento Open Source 2.4.6 avec ReCAPTCHA v2 ou v3 invisible. GitHub-37241
  • Les acheteurs ne peuvent plus cliquer sur le bouton pour acheter un produit configurable sans d’abord PayPal sélectionner les options requises. Auparavant, les acheteurs pouvaient cliquer sur le PayPal bouton et étaient ensuite redirigés vers la page du produit avec une erreur :
  • Le PayPal bouton s’affiche désormais comme prévu sur les pages panier et mini-panier. Auparavant, ce bouton n’était pas affiché sur la page du panier et dupliqué sur la page du mini-panier.

Performances

  • Les clics multiples 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 de contrôle du cache de la page contient des private . Auparavant, un statut HTTP 200 avec private dans l’en-tête Cache-Control était mis en cache et un statut HTTP 301 était mis en cache, sauf s’il contenait private dans son en-tête Cache-Control. GitHub-36492
  • Suppression de l’inutilisé Magento\Catalog\Controller\Adminhtml\Product\Initialization\Helper du Magento\Catalog\Model\ProductRepositoryfichier . Auparavant, ProductRepository chargé cet assistant qui est un Adminhtml contrôleur. GitHub-37864
  • Amélioration des performances de la vitesse de chargement des pages lorsque de nombreuses options sont ajoutées aux produits groupés. GitHub-29409
  • Le processus d’affectation des produits aux catégories à partir de l’onglet Products in Category a été optimisé. Les Assign boutons et Remove de l’onglet sont maintenant désactivés jusqu’à ce que les Add Product by SKU produits soient entièrement chargés dans la grille. Auparavant, les utilisateurs administrateurs ne pouvaient pas ajouter de produits par SKU dans des catalogues contenant des millions de produits enregistrés.
  • Les performances de la mutation addProductToCart lors de l’exécution avec de nombreux attributs de produit personnalisés ont été améliorées. 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 correctement lorsqu’elle est exécutée plusieurs fois. Auparavant, il générait cette erreur lorsqu’il était exécuté plusieurs fois : Coupon with the same code already exists.

Promotion

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

reCAPTCHA

  • ReCAPTCHA v3 invisible fonctionne désormais comme prévu pour le bouton de page Sign in de paiement. Auparavant, les acheteurs ne pouvaient pas se connecter et Commerce générait des erreurs JavaScript.
  • Le reCAPTCHA Google du workflow de passage en caisse fonctionne désormais comme prévu pour les chèques, les mandats et les modes de paiement personnalisés.
  • Adobe Commerce forms ne peut plus être envoyé avant le chargement de la case à cocher Google ReCAPTCHA .
  • Le widget reCAPTCHA précède maintenant le bouton Place Order sur la page de paiement. Auparavant, le widget s’affichait en haut de la page.

Rapports

  • L'état 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 celles définies par défaut. Auparavant, ce rapport incluait des valeurs incorrectes. GitHub-36742
  • Les informations trompeuses figurant dans le formulaire de rapport de commande client ont été révisées pour plus de clarté.
  • Les utilisateurs administrateurs peuvent désormais rechercher des enregistrements dans les e-mails contenant des signes + (plus) à partir de la page Rapport sur les paniers abandonnés . GitHub-36560

Rechercher

  • Les suggestions de recherche de saisie automatique sur le mini front de recherche de l’en-tête fonctionnent désormais comme prévu. Auparavant, la saisie automatique ne remplissait pas ce champ lorsque cette fonctionnalité était activée. GitHub-37557
  • Les performances des requêtes effectuées à partir de la barre de recherche d’administration ont été améliorées par l’ajout d’un indexeur. Auparavant, plus la table search_query était grande, plus la requête prenait de 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 Use in Search paramètre est défini sur Yes.
  • Le prix de la recherche avancée et les filtres SKU fonctionnent désormais correctement lorsqu’ils sont appliqués ensemble dans une recherche avancée. GitHub-37581
  • Les champs de recherche vides ne sont plus recherchés. La taille de la table search_query est ainsi réduite. Auparavant, les requêtes incorrectes ou les requêtes sur des champs de recherche vides renvoyaient un jeu de données volumineux, ce qui augmentait la taille de la table de search_query et entraînait des problèmes de /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 recherche affichent désormais les résultats pertinents en fonction du poids de recherche des attributs comme prévu.
  • Le texte d’information sous le champ d’entrée Storefront Properties de l’attribut Search Weight dans Admin Stores > Attributes > Product décrit désormais les valeurs possibles. GitHub-36646

Expédition

  • Les règles de prix de panier fonctionnent désormais comme prévu lorsqu’un produit groupé est ajouté au panier lorsque les attributs de prix dynamiques sont désactivés. La livraison gratuite et le taux de 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 maintenant à une nouvelle page d’expédition comme prévu après la création d’une expédition partielle pour une commande. Auparavant, après avoir créé une expédition partielle, Magento Open Source ne créait pas de page d’expédition complète pour les produits restants de la commande. GitHub-38063
  • Le montant total pour l’expédition d’une commande à plusieurs adresses est maintenant correctement calculé. Auparavant, lorsqu’un devis contenait plusieurs adresses de livraison, l’adhérent total mettait à jour le montant des frais d’expédition pour l’adresse indiquée au $quote->getShippingAddress() lieu de le $shippingAssignment transmettre comme prévu. GitHub-37283
  • Magento Open Source ne lève plus d’exception lors du paiement avec plusieurs adresses de livraison lorsque l’utilisateur administrateur a utilisé la fonctionnalité de connexion en tant que client.
  • Les produits sont désormais correctement répertoriés dans la grille Produits de la page Créer des packages lorsque vous ajoutez des produits à un package après la création de l’étiquette d’expédition.
  • La requête cart renvoie désormais les remises sur les livraisons discrètes sous la forme de remises sur les livraisons 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 du panier. Auparavant, toutes les remises d’expédition étaient combinées en une valeur Shipping Discount codée en dur.
  • Lorsque l’utilisateur au statut d’administrateur crée une nouvelle commande, les adresses de facturation et d’expédition de la commande initiale renseignent automatiquement les champs appropriés lorsque l’utilisateur au statut d’administrateur clique sur le bouton Reorder (Sales d’administrateur > Orders > View ). Si les mêmes adresses sont enregistrées dans le carnet d’adresses de l’acheteur, la nouvelle commande incorporera toujours une version mise à jour de ces adresses. Auparavant, le champ Adresse d’expédition était prérempli avec les données mises à jour, mais pas le champ Adresse de facturation.
  • La Shipping Policy zone de texte est maintenant visible dans l’étendue de la vue Boutique d’administration lorsque Apply custom Shipping Policy cette option est activée et qu’une stratégie d’expédition personnalisée est disponible. GitHub-36425
  • La cart requête renvoie désormais une selected_shipping_method valeur qui correspond à l’un des codes de transporteur available_shipping_methods et de méthode. Auparavant, lorsque l’un des modes d’expédition sélectionnés contenait un trait de soulignement, ces codes de transporteur/méthode ne correspondaient pas. GitHub-36606
  • La setShippingAddressesOnCart mutation ne renvoie plus d’erreur lorsque la deuxième valeur du tableau de la 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 marchands peuvent désormais créer et enregistrer un produit lorsque le site Web id != 1 et le mode magasin 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 qui a une valeur Special Price lorsque la Price Display Settings est définie pour inclure la taxe.
  • La taxe est désormais incluse comme prévu dans le prix d’expédition du workflow de passage en caisse, tel que spécifié par les paramètres de configuration.
  • La valeur de réponse de applied_taxes de requête cart inclut désormais toutes les règles fiscales individuelles comme prévu. Auparavant, elle renvoyait la valeur fiscale totale lorsque plusieurs règles fiscales étaient configurées.
  • L’icône Réduire/Développer de la section Additional Settings lors de la création de la règle de taxe fonctionne désormais comme prévu. Auparavant, seule l’icône Développer 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 des règles fiscales comme prévu. Auparavant, les modifications apportées à partir de cette page n’étaient pas enregistrées.
  • Le montant des taxes dans la zone d’estimation du panier est maintenant actualisé comme prévu lorsque le mode d’expédition est mis à jour. Auparavant, le taux de taxe n’était pas mis à jour après qu’un acheteur ait 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 variantes d’un produit configurable existant dans la portée Vue du magasin. Auparavant, cette valeur était définie sur Aucune. 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 AdminCreateOrderWithVirtualProductFromDefaultSourceWithBackorders test afin d’éliminer les échecs causés par le remplissage prématuré du champ de courriel.
  • StorefrontVerifyProductAfterPartialReindexOnSeveralWebsitesTest a été remanié afin d’améliorer la fiabilité. GitHub-38359
  • Correction du AdminSimpleProductwithTextandVisualSwatch test 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 AdminCreateOrderWithVirtualProductFromDefaultSourceWithBackorders test afin d’éliminer les échecs causés par le remplissage prématuré du champ de courriel.
  • Test de Magento\GraphQl\Catalog\ProductSearchTest::testFilterProductsBySingleCategoryId refactorisé pour gérer l’ordre aléatoire des catégories dans les réponses de requête products.
  • \Magento\Test\Integrity\Di\CompilerTest::testConstructorIntegrity test vérifie maintenant toutes les classes PHP à partir des modules enregistrés par ComponentRegistrar().
  • Les problèmes de performances des baies volumineuses dans TableNameSniff ont été résolus.
  • CollectionTest::testGetDateRangeFirstPart() prend désormais en compte l’heure d’été.

Framework de l’interface utilisateur

  • 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 sur le formulaire d’adresse de modification du compte client de champ de rue sont maintenant enregistrés correctement. Ces champs sont désormais correctement triés selon les clés indiquées dans le formulaire. GitHub-37973
  • Les valeurs CLS (Cumulative Layout Shift) ont été améliorées pour les pages de 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 pendant le rendu du modèle. Magento Open Source affiche désormais un message informatif. Auparavant, Magento Open Source affichait des fuites HTML lorsqu’une erreur PHP se produisait.
  • Les attributs personnalisés du client (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 et 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 du storefront lorsque le mode 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 quelle que soit la position de chargement. Auparavant, les mixins jQuery n’étaient pas chargés de manière cohérente dans les navigateurs.
  • Les mots de passe s’affichent désormais comme prévu lorsque la case Show Password de la page de connexion est activée.
  • Magento Open Source affiche désormais des prix corrects pour les produits groupés fixes avec des prix spéciaux.
  • Mise à jour du lien vers la page de liste Problèmes GitHub dans le fichier de modèle de pied de page du storefront. GitHub-37214
  • Le widget Récemment consultés affiche désormais le montant correct de taxe dans les prix de produits groupés. GitHub-35881
  • Les utilisateurs administrateurs peuvent maintenant glisser-déposer les options personnalisables créées pour le produit simple comme prévu. GitHub-36051
  • L’ordre des types d’attributs Liste déroulante de 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 nœud de chemin de navigation en définissant remove=true à travers la mise en page XML n’entraîne plus la suppression du titre de la page sur la page de catégorie. Auparavant, la suppression des chemins de navigation de cette manière supprimait le titre de la page de la catégorie.
  • Le formulaire d’enregistrement des clients se charge désormais comme prévu lorsqu’il inclut des attributs client à sélection multiple. Auparavant, Magento Open Source avait généré l’exception suivante : [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 la vitrine sans erreur de console. Auparavant, si un message de bienvenue contenait un guillemet unique, le message de bienvenue n’était pas chargé pendant le rendu de la vitrine. Magento Open Source affichait également des erreurs dans la console.
  • Magento Open Source ne renvoie plus d’erreur lorsque vous tentez de changer rapidement d’affichage entre l’historique des commentaires et les retours dans la page Commande d’administration . Auparavant, Magento Open Source affichait cette erreur générique : A technical problem with the server created an error.
  • Les utilisateurs administrateurs disposant de privilèges limités à un site Web peuvent désormais mettre à jour les attributs de produit spécifiques au site Web définis sur une all stores view étendue.
  • Le widget de loupe se charge maintenant comme prévu sur la page du produit.
  • Les options personnalisables multiligne sont désormais correctement rendues dans les documents PDF de facture, d’expédition et d’avoir. Auparavant, le texte multiligne était précédé d’un saut de page inattendu et, si le texte dépassait la page, le texte était tronqué.
  • Les utilisateurs administrateurs peuvent désormais ajouter une nouvelle adresse de client à partir de l’administration lorsque ce client a été créé pour un autre site web dont l’ID de magasin ne correspond pas à l’ID du site web. Auparavant, Magento Open Source affichait le message pop-up suivant : 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 le statut de la commande ni saisir de texte dans la zone de commentaire, Magento Open Source affichait le message suivant : The comment is missing. Enter and try again.
  • L’icône de calendrier s’affiche désormais comme prévu dans les champs de période dans Admin Marketing > Cart Price Rules après la sélection d’une date pour un champ. Auparavant, après avoir sélectionné une date pour un champ, l’icône de calendrier n’était plus affichée sur les autres champs et le texte d’espace réservé Magento Open Source était affiché. GitHub-36499
  • Les formulaires d’enregistrement de clients qui comprennent 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
  • Cliquez sur une miniature vidéo en mode plein écran de la galerie de produits pour afficher 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 qui est automatiquement mise à jour chaque année. GitHub-36776
  • Le curseur d’image de la page de produit fonctionne désormais comme prévu dans la vue mobile. Auparavant, seule la première image était affichée. GitHub-37232

Réécritures d’URL

  • 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 ceux par défaut lorsque la visibilité du produit était définie sur non visible dans la portée du magasin par défaut.
  • Category::getUrl() ne récupère plus de redirection 301. GitHub-38152
  • Magento Open Source ne génère plus de réécritures d’URL de produit pour les catégories racines et pour les produits définis pour Not Visible Individually dans des configurations multi-magasin lors de la génération de réécritures d’URL manquantes pour les magasins personnalisés.
  • Les balises d’URL canoniques reflètent désormais les modifications attendues après la mise à jour de la propriété Clé d’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 tentez de créer une redirection 301/302 pour une URL de produit lorsque l’option Générer les réécritures d’URL de catégorie/produit 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 via le chemin d’accès à la catégorie. Lorsqu’une nouvelle réécriture d’URL de produit est créée, les corrélations entre le produit, la catégorie et le magasin 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 des suffixes d’URL de produit et de suffixes d’URL de catégorie correspondent désormais aux suffixes dans le url_rewrite tableau. 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 le url_rewrite tableau 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 de catégories étaient affichés. GitHub-36973
  • Les réécritures d’URL de catégorie sont maintenant présentes dans le fichier CSV lors de l’import d’une nouvelle catégorie.
  • Les pages CMS multi-magasins sans réécriture d’URL sont maintenant 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 de la boutique, mais les pages CMS d’origine n’étaient pas redirigées.

Framework d’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 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 de l’V1/orders/{id}/comments REST ne modifie plus le statut d’une commande lors de la tentative d’ajout d’un commentaire au statut d’une commande en attente. Elle renvoie désormais une erreur informative. Auparavant, ce point d’entrée modifiait le statut de la commande lors de l’ajout d’un commentaire.
  • Le point d’entrée GET et POST V1/products/attributes de l’API REST 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 d’entrée 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 d’entrée de V1/configurable-products/sku/children REST. Auparavant, cette fonction ne contenait pas le code nécessaire pour stocker et afficher les media_gallery_entries. GitHub-37607
  • La méthode REST V1/carts/mine/estimate-shipping-methods valide désormais tous les niveaux de données de champ de payload et renvoie un code HTTP 400 pour les données non valides. Auparavant, seul le premier niveau de payload de l’API était validé, et 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 jeux d’attributs sont désormais terminées. Auparavant, les produits avec des jeux d’attributs différents 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 d’entrée 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 demande d’API asynchrone en bloc autorisée pour créer des clients avec un ID de groupe autre que celui par défaut. Auparavant, ces requêtes réinitialisaient l’ID de groupe à la valeur par défaut.
  • Les clients créés à l’aide de l’API Bulk reçoivent désormais des e-mails d’enregistrement client dans la langue configurée dans le site Web qui leur est attribué. Auparavant, tous les e-mails é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 d’image base64) dans GET V1/products/sku/media réponses de l’API de média de produit. L’attribut content n’apparaissait pas auparavant dans la réponse.