Notes de mise à jour de Magento Open Source 2.4.6
Magento Open Source 2.4.6 introduit la prise en charge de PHP 8.2. PHP 8.1 reste entièrement pris en charge, mais la prise en charge de PHP 7.4 a été supprimée. Il comprend des améliorations importantes des performances et de l’évolutivité. Les opérations GraphQL pour les opérations de panier en masse et la réponse de rendu de l’arborescence de catégories ont été optimisées.
Cette version comprend des correctifs et améliorations relatifs à la qualité. Les dépendances du compositeur principal et les bibliothèques tierces ont été mises à niveau vers les dernières versions compatibles avec PHP 8.2.
Autres informations de mise à jour
Bien que le code de ces fonctionnalités soit fourni avec des versions du code principal du Magento Open Source, plusieurs de ces projets sont également publiés indépendamment. Les correctifs de bogues pour ces projets sont documentés dans les informations de mise à jour distinctes et spécifiques au projet disponibles dans la documentation de chaque projet.
Faits saillants de Magento Open Source 2.4.6
Recherchez les points forts suivants dans cette version.
Amélioration de la sécurité
Cette version comprend huit correctifs de sécurité et améliorations de la sécurité de la plateforme.
Aucune attaque confirmée liée à ces problèmes n'a été survenue à ce jour. Cependant, certaines vulnérabilités peuvent être exploitées pour accéder aux informations sur les clients ou prendre le contrôle des sessions d’administrateur. La plupart de ces problèmes nécessitent qu’un attaquant obtienne d’abord l’accès à l’administrateur. Par conséquent, nous vous rappelons de prendre toutes les mesures nécessaires pour protéger votre administrateur, y compris, mais sans s’y limiter, les actions suivantes :
- PLACE SUR LA LISTE AUTORISÉE IP
- authentification à deux facteurs
- utilisation d'un VPN
- utilisation d’un emplacement unique plutôt que
/admin
- bonne hygiène des mots de passe
Voir Bulletin de sécurité Adobe pour la dernière discussion sur ces problèmes résolus.
Améliorations supplémentaires de la sécurité
Les améliorations de la sécurité de cette version améliorent la conformité aux dernières bonnes pratiques en matière de sécurité, notamment :
-
Les lacunes dans les journaux d’actions d’administration ont été corrigées grâce à un audit plus spécifique des actions dans les vues de grille, les actions de masse et les exportations.
-
La validation reCAPTCHA n’échoue plus lors de l’extraction lorsque des erreurs inattendues se produisent pendant le traitement du paiement. GitHub-35093
-
Nouvelle configuration système pour demander une confirmation par email lorsqu’un utilisateur administrateur modifie son adresse email. Pour réduire la vulnérabilité du site, un nouveau paramètre de configuration système (désactivé par défaut) a été ajouté afin d’exiger une confirmation par email lorsqu’un utilisateur administrateur modifie son email : Stores > Settings:Configuration > Customers > Customer Configuration > Account Information Options > Require email confirmation if an email has been changed. Lorsque cette option est activée, l’application demande une confirmation par courrier électronique chaque fois que l’utilisateur administrateur modifie son adresse électronique. Le module suivant est affecté par cette modification :
Magento_Customer
.
Améliorations de la plateforme
Magento Open Source 2.4.6 introduit la prise en charge de PHP 8.2. PHP 8.1 reste entièrement pris en charge.
La prise en charge de PHP 7.4 a été supprimée de cette version. Vous ne pouvez pas exécuter Magento Open Source 2.4.6 sur PHP 7.4.
Magento Open Source prend désormais en charge :
-
Compositeur 2.2.x. Le compositeur 1.x a été supprimé.
-
Redis 7.0.x Bien que la compatibilité avec Redis 6.2 soit maintenue, nous vous recommandons de déployer cette version avec Redis 7.0.x, car Redis 6.2 devrait atteindre sa fin de vie en 2024.
-
OpenSearch est désormais pris en charge en tant que moteur de recherche par défaut pour les déploiements sur site et cloud de Magento Open Source. Il est pris en charge en tant que moteur de recherche indépendant pour Magento Open Source. Cette version prend en charge OpenSearch v2.x et a été testée avec OpenSearch 2.5. Bien que la compatibilité avec OpenSearch 1.x soit maintenue, nous vous recommandons d’utiliser cette version avec OpenSearch 2.x. Vous pouvez installer et exécuter Magento Open Source et Magento Open Source 2.4.6 avec OpenSearch 2.x sur le cloud et sur site. Prérequis du moteur de recherche.
-
Elasticsearch 8.x Voir Elasticsearch de mise à niveau.
-
MariaDB 10.6 (version LTS). Cette version est toujours compatible avec MariaDB 10.4, mais nous vous recommandons de la mettre à niveau vers MariaDB 10.6.
Autres mises à niveau et remplacements
-
Le schéma DHL a été migré de la v6.2 à la v10.0.
-
Les bibliothèques JavaScript obsolètes ont été mises à jour vers leurs dernières versions et les dépendances obsolètes ont été supprimées. Ces modifications sont rétrocompatibles.
-
La compatibilité PHP 7.4 a été supprimée des bases de code Commerce et Magento Open Source.
-
Les dépendances Symfony ont été mises à niveau vers la nouvelle version de LTS. Les dépendances incluent :
friendsofphp/php-cs-fixer
symfony/console
symfony/event-dispatcher
symfony/finder
symfony/process
web-token/jwt-framework
-
jquery-migrate
a été supprimé des bases de code Commerce et Magento Open Source. GitHub-21406 -
Mise à niveau
jQuery/fileUpload
vers la version 10.32. -
Les composants ZF1 (Zend framework) ayant atteint la fin de vie ont été supprimés du code base. Voir Mise en évidence des modifications incompatibles avec l’arrière.
-
Les dépendances Laminas ont été mises à jour pour prendre en charge PHP 8.2.
-
La variable
laminas/laminas-dependency-plugin
Le module externe du compositeur a été supprimé. GitHub-36515 -
Remplacé
Zend_Filter
aveclaminas/laminas-filter
. -
Mise à niveau
web-token/jwt-framework
vers la version 3.0.5. (dernière version) -
Mise à niveau
allure-framework/allure-phpunit
vers v2.x. -
Mise à niveau de la fonction
Chart-js
bibliothèque vers v3.9.1
Mises à jour de l’accessibilité
Cette version s’est concentrée sur la création d’une expérience de storefront sur Venia (PWA) plus perceptible, exploitable, compréhensible et robuste. Ces améliorations incluent :
- Le libellé de texte visuel pour la propriété Sign in correspond désormais à son nom accessible. (La bonne pratique recommande que le nom accessible d’un élément d’interface utilisateur commence par le texte du libellé visible.)
- Des noms accessibles descriptifs ont été ajoutés aux boutons dans tout le storefront.
- Des libellés descriptifs verbaux ont été ajoutés aux Has Video des cases à cocher dans les filtres de recherche.
- Les utilisateurs de clavier uniquement peuvent désormais accéder à toutes les fonctionnalités de la page sur le storefront. Auparavant, les acheteurs ne pouvaient pas accéder aux liens de sous-navigation en utilisant uniquement des touches.
Intégration d’Adobe Commerce avec Adobe IMS
Les modules Adobe IMS suivants ont été découplés du code principal Adobe Commerce et Magento Open Source et sont désormais mis en package sous la forme d’un métappackage distinct :
adobe-ims
adobe-ims-api
admin-adobe-ims
La nouvelle adobe-ims-metapackage
v2.2.0 est fourni avec Adobe Commerce 2.4.6 et Magento Open Source 2.4.6. Aucune fonctionnalité n’a été modifiée dans cette version.
Braintree
- La variable Pay Later Les boutons et bannières (messages) pour l'Italie et l'Espagne ont été activés pour le Braintree.
- La messagerie PayLater avec PayPal Vault a été activée.
- Ajout de la protection contre les fraudes et des hooks Web ACH. Le point d’extension Web de protection contre les fraudes est déclenché lorsqu’une décision de risque a été prise en Braintree. Le point d’extension web ACH est déclenché lorsque l’état d’un paiement ACH est mis à jour vers
settled
ousettlement decline
.
- Ajout du point d’extension Web LPM (Local payment Methods).
GraphQL
Les performances de GraphQL améliorées incluent :
Amélioration du temps de réponse lors de l’interrogation des catégories pour lesquelles des autorisations de catégorie sont activées. Les temps de réponse se sont améliorés lors de l’interrogation de produits dans des catégories pour lesquelles des autorisations de catégorie sont activées et qui contiennent de nombreux groupes de clients ou catalogues partagés. Les modifications de code qui prennent en charge cette amélioration des performances incluent :
- L’opération de résolveur GraphQL a été optimisée.
- Le fournisseur de données ne redéfinit plus les données mises en cache au moment de l’exécution pour chaque nouveau produit en cours de traitement, ce qui a une amélioration des performances.
- Le traitement des autorisations de produit a été optimisé dans le résolveur GraphQL. Les autorisations de produit sont désormais appliquées aux collections de produits par produit.
- Autorisations optimisées lues dans les catalogues partagés dans le
addProductsToCart
mutation. - Les autorisations de produit ont été optimisées avec des fragments intégrés de produit.
Optimisation des performances du rendu de l’arborescence des catégories. La variable categoryList
La requête a été optimisée pour prendre en charge les clients avec un grand nombre de catégories. Les vendeurs qui utilisent cette requête pour rechercher plus de 1 500 catégories avec jusqu’à cinq niveaux de sous-catégories imbriquées remarqueront une amélioration des performances. Le chargement des enfants de catégorie en refactorisant le code a été amélioré en supprimant les appels de méthode inutiles, en améliorant la mise en cache de l’arborescence des catégories et en chargeant les données de catégorie de manière récursive. Les modifications de code qui prennent en charge cette amélioration des performances incluent :
- La récupération des métadonnées des attributs personnalisés pour les modèles de catégorie a été améliorée.
- La récupération des ID de catégorie a été améliorée et
getChildren
les appels ont été réduits. - Le chargement des enfants de catégorie a été amélioré.
Réduction des temps de réponse des requêtes des opérations de panier en masse. Les mutations de produits ajoutés ont été optimisées afin d’améliorer les performances des requêtes lors de l’ajout de jusqu’à 500 produits simples et configurables. Les produits en bundle ne sont pas affectés. Les mutations optimisées incluent : addProductsToCart
, addConfigurableProductsToCart
, addDownloadableProductsToCart
, addSimpleProductsToCart
, addVirtualProductsToCart
,addWishlistItemsToCart
, et updateCartItems
.
La requête client prend désormais en charge le tri des commandes.. La variable orders
objet de sortie de l’objet customer
La requête contient désormais un champ de tri. Vous pouvez désormais trier les commandes par numéro de commande ou date de création et dans un ordre croissant ou décroissant.
Nouvelles mutations :
deleteCustomer
Page Builder
La version 1.7.3 du créateur de pages est compatible avec Magento Open Source 2.4.6.
PWA Studio
PWA Studio v.13.0.x est compatible avec Magento Open Source 2.4.6. Plusieurs améliorations ont été apportées à l’accessibilité. Pour plus d’informations sur les correctifs, voir Versions PWA Studio. Voir Compatibilité des versions pour obtenir la liste des versions de PWA Studio et de leurs versions principales Adobe Commerce compatibles.
Problème connu
Problème: New Relic n’est actuellement pas compatible avec PHP 8.2. Les déploiements exécutant New Relic peuvent exécuter Adobe Commerce 2.4.6 sur PHP 8.1, mais pas PHP 8.2. Solution: exécutez Adobe Commerce 2.4.6 sur PHP 8.1 jusqu’à ce qu’une nouvelle version de New Relic soit publiée, prenant en charge PHP 8.2. Cette version est prévue pour l’été 2023.
Problèmes résolus
Nous avons corrigé des centaines de problèmes dans le code principal Magento Open Source 2.4.6.
Installation, mise à niveau, déploiement
- Le déploiement de contenu statique n’expire plus ou échoue lors de déploiements standard ou compacts avec plusieurs paramètres régionaux et sites web.
- La stratégie compacte ne provoque plus de référence non valide à un domaine externe lors de l’exécution d’un déploiement de contenu statique (
bin/magento set:static-content:deploy -f --strategy compact
).
- Exécution
bin/magento setup:di:compile -vvv
(ou avec la fonction-v
ou-vv
options) renvoie désormais un message informatif sur l’échec. GitHub-35391
- Magento Open Source ne renvoie plus l’exception suivante lorsque vous exécutez le
bin/magento setup:upgrade
dans un déploiement exécutant déjà l’outil de migration de données :PHP Fatal error: Declaration of Migration\Logger\Logger::addRecord(int $level, string $message, array $context = []): bool must be compatible with Monolog\Logger::addRecord(int $level, string $message, array $context = [], ?Monolog\DateTimeImmutable $datetime = null): bool in /var/www/html/vendor/magento/data-migration-tool/src/Migration/Logger/Logger.php on line 34
. GitHub-35604
- La variable
bin/magento setup:db:status
n’échoue plus dans les environnements exécutant MySQL 8.0.29. Auparavant, la sortie de commande indiquait par erreur que le schéma déclaratif était obsolète. GitHub-35671
- La variable
composer install
ne remplace plus.gitignore
fichiers . GitHub-32888
- En cours
bin/magento sampledata:remove
pour supprimer les exemples de données après la mise à niveau sous Alpine Linux, ne ratez plus cette erreur :Undefined constant "MagentoHackathon\Composer\Magento\Deploystrategy\GLOB_BRACE
. GitHub-36062
bin/magento setup:upgrade
s’exécute maintenant correctement après la première exécutioncomposer install --no-dev
. GitHub-36351
- Les exceptions et les entrées de trace de pile d’exceptions sont désormais incluses dans
var/log/exception.log
. GitHub-36054
Magento Open Source renvoie désormais une erreur de validation de paramètre lorsque vous utilisez la ligne de commande pour définir une connexion Redis sans mot de passe.
Accessibilité
- La variable Proceed to Checkout, Review Order, et Place Order les boutons du workflow de passage en caisse fonctionnent désormais comme prévu avec les entrées clavier.
- Indicateur visuel de mise au point des boutons lors de l’utilisation de TAB ou SHIFT + TAB pour naviguer dans les contrôles de page fonctionne désormais comme prévu.
Lecteurs d’écran
- Le lecteur d’écran de la page de l’historique des commandes lit désormais la description correcte de l’image.
Les lecteurs d'écran annoncent maintenant :
- Nombre total d’éléments trouvés dans les résultats de recherche comme prévu
- Nom de l’utilisateur connecté lorsqu’un utilisateur parvient à se connecter à l’aide des commandes du clavier
- L’en-tête de page des résultats de recherche de produit lit désormais la valeur correcte pour la variable
<title>
element - Si les champs de saisie sont obligatoires
- Correction de l’état actuel des éléments d’accordéon (réduits et développés)
- Lorsque le contenu de la page a été actualisé après que l’utilisateur a cliqué sur la variable Create an account button
Lot de produits
- La mise à jour du produit groupé via l’API pour une vue de magasin spécifique ne remplace désormais pas d’autres données de vues de magasin pour le même produit groupé. Auparavant, les titres des options de bundle étaient remplacés par le titre de la première option pour les autres vues de magasin.
- Les produits groupés peuvent désormais être filtrés avec succès depuis l’administrateur. Catalog > Products en utilisant un paramètre régional néerlandais. Auparavant, Magento Open Source affichait cette erreur lorsque vous tentiez de filtrer sur
Type: Bundle Product
:Something went wrong with processing the default view and we have restored the filter to its original state
. GitHub-35704
- La grille de produits ne génère plus d’exception lorsque les produits regroupés ont un prix spécial supérieur à 1000. Auparavant, lorsque vous recherchiez le produit par SKU ou que vous accédiez à Catalog > Products, Magento Open Source a lancé cette erreur :
Non Numeric value encountered
. GitHub-36284)
- Les colonnes des PDF de note de crédit et de facture pour les commandes qui contiennent un mélange de bundle et de produits simples sont désormais restituées correctement. Auparavant, les colonnes étaient déformées ou mal alignées.
- Dans les requêtes GraphQL qui contiennent une
BundleProduct
fragment,items.options.product
contient les données comme prévu. Auparavant, l’objet pouvait être nul dans certains cas.
- Les quantités décimales des options de bundle sont désormais rendues correctement lorsque Quantity uses decimals est activée. Auparavant, seule la partie entière de la quantité était rendue, et non le composant fractionnel. Par exemple, une quantité de 1,5 a été rendue sous la forme 1,0. GitHub-35964
- Les requêtes de produit GraphQL renvoient désormais uniquement les options de produit groupé dans la portée du magasin interrogé.
- Les produits qui ne sont pas affectés à des catégories mais qui sont des options de produit pour des produits groupés ou groupés sont désormais renvoyés dans les réponses lorsque la variable Allow Category Browsing le paramètre de configuration est activé pour le client qui envoie la requête.
Cache
- Le cache de la page entière n’est plus vidé après l’exécution de la commande, sauf si le produit commandé est en rupture de stock. Auparavant, le cache était purgé pour la catégorie chaque fois qu’une expédition était créée.
- Les données sont maintenant mises en cache avec succès lorsque le cache L2 est configuré et que les données distantes sont partiellement expulsées. Auparavant, après avoir vidé uniquement le cache de données sans hachage de ces données, le nouveau cache n’était pas enregistré tant que les hachages de données existaient.
- Correction des défauts dans
CatalogUrlResolverIdentity
etCmsUrlResolverIdentity
qui empêchait la mise en cache. Cela a affecté la mise en cache des requêtes d’itinéraire sur plusieurs requêtes.
Panier et passage en caisse
- Les acheteurs peuvent désormais ajouter un article supplémentaire à leur panier lorsque celui-ci contient la quantité minimale du produit simple.
- Les appels de l’API REST pour récupérer les données du panier renvoient désormais le même
grand_total
etbase_grand_total
lorsque la devise de stockage et la devise de base sont identiques. GitHub-34649
- La valeur exportée de Maximum Qty Allowed in Shopping Cart correspond désormais à la valeur par défaut définie dans le paramètre de configuration Admin .
- Magento Open Source calcule désormais correctement le total général des remboursements des commandes avec une remise sur les frais d’expédition.
- Google reCAPTCHA fonctionne désormais comme prévu pour les commandes de storefront. Auparavant, Magento Open Source affichait ces erreurs lorsque Google ReCAPTCHA n’était pas sélectionné pour la première fois avant qu’un acheteur ne tente de passer une commande :
ReCaptcha validation failed, please try again
etNo such cart with id = ID
.
- L’actualisation de l’image CAPTCHA honore désormais le paramètre de configuration Admin et n’est pas déclenchée lorsque le paramètre est désactivé. Auparavant, l’actualisation était déclenchée chaque fois que le mode de paiement changeait, que le paramètre soit activé ou désactivé. GitHub-34855
- Magento Open Source affiche désormais une fenêtre contextuelle de confirmation comme prévu avant de rediriger un acheteur vers la page suivante lorsque l’acheteur modifie la quantité de produits sur la page du panier sans mettre à jour le panier, puis tente d’accéder à la page suivante.
- Les acheteurs peuvent désormais réduire la quantité d’un produit de leur panier après sa diminution dans l’administrateur. Auparavant, Magento Open Source renvoyait l’erreur suivante lorsqu’un acheteur tentait de réduire la quantité de produits :
The requested qty is not available
. GitHub-35780
- Magento Open Source ne renvoie plus d’erreur dans la console JavaScript lorsque la quantité de produit dépasse la quantité maximale configurée lors d’un passage en caisse multi-expédition. Magento Open Source affiche désormais un message d’erreur informatif. GitHub-36184
- La quantité d’articles sur la page du panier n’est plus représentée sous la forme d’un nombre négatif lorsqu’un acheteur utilise la touche Flèche vers le bas de son clavier pour modifier la quantité de produits. GitHub-36299
- Les acheteurs ne peuvent plus ajouter au panier un produit provenant d’une catégorie qui est désormais non autorisée après avoir modifié le groupe de clients auquel appartient l’acheteur. Magento Open Source vérifie désormais l’accès aux autorisations des groupes de clients pour des catégories spécifiques lorsque les paramètres de configuration des autorisations ont été modifiés.
- Les paniers clients ne sont plus vidés avant la création de la commande par l’administrateur et le contenu du panier est maintenant restauré si la commande est annulée ou abandonnée. Les articles ne sont désormais supprimés du panier qu’après la création de la commande. Auparavant, lorsqu’un utilisateur administrateur tentait de créer une commande sur la page Admin Gérer le panier, le panier était vidé.
- Le mini panier affiche désormais les images de produit correctes après l’exécution de
bin/magento catalog:image:resize
. Auparavant, toutes les images étaient remplacées par l’image d’espace réservé de produit par défaut. GitHub-35535
- L’extraction peut désormais se terminer avec succès lorsque l’adresse de livraison contient un attribut d’extension . Auparavant, Magento Open Source envoyait cette erreur :
Object of class Magento\Quote\Api\Data\AddressExtension could not be converted to string
. GitHub-34202
- La variable
addBundleProductsToCart
la mutation n’ajoute plus de produits à un guillemet si une option de produit requise n’a aucune valeur. GitHub-25676
- Magento Open Source renvoie désormais un message informatif lorsqu’un
addProductsToCart
la mutation échoue lors de l’ajout d’un produit au panier avec des autorisations insuffisantes.
- Magento Open Source ne génère plus d’erreur sur la page du panier lorsque la commande rapide est utilisée pour ajouter un produit à une quantité qui dépasse l’inventaire disponible.
Règle de prix du panier
- Les options d’expédition gratuite des règles de prix du panier définies lors de la création de règles sont désormais appliquées aux commandes comme prévu. Auparavant, les options d’expédition gratuite appliquées lors de la création de la règle étaient ignorées lors du passage en caisse et l’expédition gratuite n’était pas autorisée lorsque la règle était appliquée. GitHub-35013
- La variable
discount_percent
de la colonnesales_order_item
le tableau d’un produit est maintenant renseigné comme prévu avec le pourcentage de remise lorsque la quantité de remise d’un article n’est pas définie ou qu’elle est supérieure ou égale à la quantité d’article de commande. Auparavant, cette colonne n’était pas renseignée lorsqu’une règle de prix de panier était appliquée à ce produit.
Catalogue
- Le widget de liste de produits n’affiche plus de prix incorrects ou mis en cache pour un acheteur connecté. Le prix affiché dans le widget de page d’accueil correspond désormais à l’adresse de l’acheteur et est mis à jour lorsque l’acheteur met à jour l’adresse. Auparavant, le cache du navigateur ne mettait pas à jour les prix des produits sur la page d’accueil en fonction des règles de taxe du groupe de clients.
- La fonction de liste Comparer les produits fonctionne désormais correctement dans un déploiement multisite et dépend d’un site web.
- Magento Open Source n’affiche plus les données de la page précédente lorsque vous rechargez la page des détails d’un produit. Auparavant, lorsque la page des détails du produit était rechargée, les données du premier onglet étaient fusionnées avec les données nouvellement chargées pendant une fraction de seconde.
- Les catégories comportant des sous-catégories peuvent désormais être développées dans le menu principal sur les appareils mobiles comme prévu. Auparavant, les acheteurs ne pouvaient pas ouvrir ni développer de catégories comportant des sous-catégories dans les déploiements mobiles. GitHub-35329
- Les listes de catégories sont désormais mises à jour comme prévu lorsqu’un produit est affecté à un nouveau site web ou à un nouveau magasin. Auparavant, l’indexeur de prix de produit n’était pas marqué comme non valide et était ensuite redéclenché sur un événement
cron
exécutez comme prévu. Par conséquent, l’entrée de prix du produit n’apparaissait pas dans le tableau de l’indice de prix et n’était pas affichée dans le nouveau magasin ou le nouveau site web.
- Le nombre de stocks de storefront est désormais exact lorsque la variable Display Out of Stock Products configuration est activé. GitHub-35899
- La page de catégorie n’est plus vide lorsque la variable Allow All Products Per Page est activé. GitHub-35900
- La variable Display Out of Stock Products l’option de configuration fonctionne désormais comme prévu lorsqu’elle est activée. Auparavant, tous les produits étaient affichés en rupture de stock sur le storefront lorsque cette option était activée sur l’administrateur. GitHub-35898
- Le tri des produits par attributs booléens fonctionne désormais comme prévu. GitHub-36390
- Les remises des règles de prix du catalogue ne s’appliquent plus aux options de produits personnalisées à prix fixe, mais uniquement au prix d’origine du produit.
- Les règles de prix du catalogue prennent désormais en compte la portée sélectionnée et s’appliquent uniquement aux produits pour les sites web pour lesquels l’attribut a une valeur d’option correspondant à la règle. Auparavant, la règle ne prenait pas en compte la portée sélectionnée dans les déploiements multisites. GitHub-36049
- Les attributs de couleur et de taille des options d’échantillon sont désormais pré-sélectionnés dans la page des détails du produit lorsqu’un acheteur modifie le produit configurable à partir de la page Mon panier. (la version jQuery 3.x prend désormais en charge le
swatchRenderer
nom du widget, qui est désormais casse chameau.) Auparavant, l’option d’échantillon n’était pas présélectionnée.
- Les clients sont désormais informés des baisses de prix de produit lorsque le client est abonné à l’alerte 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.
- Règles de catalogue basées sur des SKU avec la variable is not one of fonctionne désormais comme prévu.
- Magento Open Source ne suppose plus par erreur qu’une catégorie est la catégorie parente d’une autre selon le chemin de la catégorie. Auparavant, lorsque deux catégories étaient adjacentes et qu’un ID de catégorie commençait par l’ID de catégorie d’une autre catégorie, Adobe Commerce supposait que les catégories avaient la même catégorie parente. GitHub-32464
Produits configurables
- Magento Open Source ne génère plus d’erreur lorsqu’un utilisateur administrateur ajoute manuellement des produits à un produit configurable auquel sont déjà affectés de nombreux produits simples. Auparavant, Magento Open Source affichait cette erreur :
Something went wrong with processing the default view and we have restored the filter to its original state
.
- Les acheteurs ne peuvent plus ajouter de produits configurables avec une quantité vendable de 0 à leur panier dans les déploiements où les commandes en arrière sont désactivées. Magento Open Source indique maintenant que le produit est en rupture de stock. GitHub-35319
- La création d’un produit en important un produit configurable avec de nombreuses options d’une vue de magasin différente entraîne désormais une copie exacte du premier produit, comme prévu. Auparavant, l’ordre de tri des options configurables du nouveau produit était incorrect et les titres n’étaient pas traduits dans les paramètres régionaux de la nouvelle vue de magasin dans les déploiements avec plusieurs paramètres régionaux et vues de magasin. GitHub-35200
- Les produits configurables avec tous les produits enfants en rupture de stock sont désormais affichés en rupture de stock sur le storefront.
- Les SKU et noms de produits configurables s’affichent désormais avec précision. Auparavant, les noms et les SKU s’affichaient comme non définis après le déplacement d’un groupe d’attributs au-dessus du groupe Détails du produit sur Stores > Attribute set. GitHub-36309
Coupons
- Une logique de validation a été ajoutée au workflow Gestion des codes de bon afin d’appliquer les paramètres de code de bon lors de la génération des bons. Auparavant, la génération du code de bon ignorait la variable Code Length lorsque la variable Qualité de coupon était supérieure à 2 500.
- Les points de récompense sont maintenant ajoutés au compte d’un client comme prévu lorsqu’un coupon de récompense est appliqué lors du passage en caisse avec le mode de paiement PayPal Express.
- Vous pouvez maintenant appliquer un code de bon lors de la création de la commande par l’administrateur lorsque la règle de prix du panier a un poids en tant que condition. Auparavant, les codes de bon n’étaient pas définis si d’autres champs n’étaient pas sélectionnés pour le produit. GitHub-36271
- Vous pouvez désormais filtrer les rapports sur les coupons selon plusieurs règles de prix de panier. GitHub-36272
- Les options personnalisées sont désormais appliquées et enregistrées lorsqu’un utilisateur administrateur appuie sur Enter lors de la configuration d’un produit avec des options personnalisées. Auparavant, vous pouviez sélectionner des options et ajouter le produit à une commande, mais les options n’étaient pas enregistrées et l’utilisateur administrateur était invité à sélectionner à nouveau les options de produit. GitHub-35284
- Les codes coupon peuvent désormais être exportés au format XML Excel. Auparavant, le fichier généré ne contenait pas tous les codes de bon sélectionnés, mais uniquement autant d’éléments que les éléments sélectionnés dans les éléments par sélecteur de page.GitHub-36073
cron
- La variable
catalog_index_refresh_price
la tâche cron s’exécute désormais correctement. Auparavant, Magento Open Source consignait cette erreur lors de l’exécution de cron :report.ERROR: Cron Job catalog_index_refresh_price has an error: SQLSTATE[HY093]: Invalid parameter number: number of bound variables does not match number of tokens
.
Devise
- Un espace manquant entre les symboles de devise et les prix personnalisés a été ajouté aux prix des produits storefront et Admin. La condition et l’expression regex appropriées ont été ajoutées pour permettre un NBSP personnalisé dans les symboles de devise. Par exemple, IDRx 105.00 s’affichait auparavant sous la forme IDRx105.00.
- Magento Open Source n’envoie plus d’emails en double au client après la création d’une commande à partir de l’administrateur.
- Les emails de l’ordre des administrateurs ne sont plus envoyés lorsque la variable Email order confirmation est désactivé. GitHub-36256
- Les options d’image ne s’affichent plus sous forme d’annotation de HTML dans l’avis de crédit, la confirmation de commande et les e-mails de facture client (modèle par défaut) pour les produits dotés d’options personnalisées.
Frameworks
- Les utilisateurs administrateurs peuvent désormais ouvrir avec succès l’Admin Store > Configuration lorsqu’aucun pays n’est dans la variable Pays de l’Union européenne paramètre (Stores > Configuration > General > Country options > European Union Countries). Auparavant, lorsqu’un utilisateur administrateur tentait d’ouvrir cette page, le Magento Open Source renvoyait cette erreur :
TypeError: explode(): Argument #2 ($string) must be of type string, null given in /var/www/php/folder/vendor/magento/module-config/ViewModel/CountryFilter.php:46
. GitHub-35901
jquery.cookie
Les dépendances fonctionnent désormais comme prévu avec les dépendances JavaScript. Auparavant, vous ne pouviez pas utiliser d’alias pourjquery/jquery.cookie
. GitHub-35913
- La variable
bin/magento i18n:collect-phrases
La commande inclut désormais<title>
texte dans le fichier CSV exporté. GitHub-35462
Magento\Framework\Code\Reader\ArgumentsReader::getParentCall()
prend désormais en charge les arguments constructeur nommés. Vous pouvez désormais appeler une fonction en définissant les paramètres par leur nom.
- Les erreurs sont désormais consignées comme prévu dans la variable
exception.log
fichier . Auparavant, les erreurs étaient consignées dans la variablesystem.log
fichier, les erreurs n’ont pas été consignéesvar/log/exception.log
.
- Les vendeurs ont désormais la possibilité de spécifier un fournisseur SMTP externe personnalisé. GitHub-26104
- Les intégrations OAuth peuvent désormais être réautorisées comme prévu sur les déploiements exécutant Magento Open Source 2.4.3-p2. Auparavant, la réautorisation échouait avec cette erreur :
The attempt to post data to consumer failed due to an unexpected error. Please try again later
. Magento Open Source a également tenté de déchiffrer des valeurs non chiffrées. GitHub-35313
- Le bon
rowId
est maintenant transmis lorsque la catégorieurlKey
est enregistrée pour les catégories qui comportent des catégories enfants. Auparavant, la valeur incorrectecategoryId
a été transmis lors de l’enregistrement de la catégorie.URLKey
.
- Code d’attribut de produit
event
a été ajouté à la liste des codes d’attributs de produit réservés, ce qui élimine les erreurs associées à l’utilisation d’un attribut portant ce nom sur le storefront. Auparavant, l’application générait cette erreur sur les pages de détails du produit et de liste de recherche/produits lors de laevent
a été utilisé :report.CRITICAL: Error: Call to a member function getStatus() on string in /home/mer33515/public_html/ee24develop/magento2ee/app/code/Magento/CatalogEvent/Observer/ApplyIsSalableToProduct.php:23
.
- Les messages d’erreur de validation du storefront qui se produisent lors du placement de la commande sont désormais affichés de manière cohérente. Auparavant, les messages apparaissaient, s’effondraient, puis réapparaissaient. GitHub-35651
- Les clients AMQP n’échouent plus en raison d’un abandon
trim()
sur les déploiements exécutant PHP 8.1. Auparavant, lorsque le consommateur AMQP démarrait après l’installation, Magento Open Source envoyait cette erreur :Deprecated Functionality: trim(): Passing null to parameter #1 ($string) of type string is deprecated in .../vendor/magento/framework-amqp/Config.php on line 143
. GitHub-35380
- La variable
getFilteredTimerIds
fonctionne désormais comme prévu. ClasseMagento\Framework\Profiler\Driver\Standard\Stat
est désormais compatible avec PHP 8.1. Auparavant, Magento Open Source lançait une exception lorsque cette méthode était appelée. GitHub-35307
- Suppression de la dépendance sur la variable
imagemin-svgo
bibliothèque .
- Le processus de minimisation de modèle traite désormais correctement les commentaires consécutifs lorsque le premier commentaire commence par
//
. GitHub-34880
- Correction d’une requête de base de données émise par le
BundleGraphQl
module qui a renvoyé cette erreur :"debugMessage": "Notice: Undefined offset: 16 in vendor/magento/module-bundle-graph-ql/Model/Resolver/Options/Collection.php on line 130"
.GitHub-34991
Correctifs généraux
- Magento Open Source affiche désormais une période précise lorsqu’un utilisateur administrateur sélectionne la variable Last 24 Hours dans le tableau de bord Statistiques d’administration . Auparavant, Magento Open Source affichait une période incorrecte. Cela s’est produit car le fuseau horaire de la base de données restait inchangé.
- Il est désormais possible de générer des notes de crédit pour des nombres entiers et décimaux. Auparavant, seules les quantités entières étaient prises en charge.
- La règle de validation d’entrée du code postal du client pour le type numérique uniquement fonctionne désormais comme prévu dans la variable Edit Customer Address Champ (Store > Attribute > Customer Address). Auparavant, les informations d’adresse du client étaient enregistrées sans validation de code postal.
- Les comptes clients partagés à l’échelle mondiale contiennent désormais des adresses qui sont validées par rapport à la liste des pays autorisés pour le site web actuel et enregistrées avec succès. Auparavant, ces comptes étaient incorrectement validés par rapport aux pays autorisés du site web où le client était enregistré.
- Les chemins de navigation de la hiérarchie de pages CMS ne s’affichent plus lorsque Enable Hierarchy Functionality est désactivée. Auparavant, les chemins de navigation s’affichaient. Lorsque les acheteurs cliquaient dessus, une page 404 s’affichait. GitHub-35513
- La suppression d’un produit de tous les sites web via l’Admin ne provoque plus l’erreur suivante :
SQLSTATE[42000]: Syntax error or access violation
. GitHub-35133
- Les clients qui dépassent le nombre maximal de tentatives de connexion ayant échoué peuvent désormais se connecter après la réinitialisation du mot de passe. GitHub-34981
- Le composant des lignes dynamiques se comporte désormais comme prévu lorsqu’un utilisateur administrateur ajoute un nouvel élément. Auparavant, le composant de ligne se comportait incorrectement lorsqu’un nouveau produit simple était ajouté à un produit groupé. GitHub-34850
- Correction des fautes de frappe et grammaire incorrecte dans la variable
app/code/Magento/Backend/etc/menu.xsd
fichier .
- La variable
app/code/Magento/Authorization/README.md
a été mis à jour afin de décrire précisément la création de tableaux.
- La variable
recordLogin
a été mise à jour afin de définir les valeurs de connexion sur le modèle utilisateur et de conserver les valeurs correctes dans la variablelogdate
etlognum
des champs deadmin_user
table. Auparavant, les tentatives de connexion pour les utilisateurs administrateurs mis à jour n’étaient pas enregistrées.
- Les modèles de problèmes GitHub ont été convertis en formulaires pour les problèmes d’expérience des développeurs et les demandes de fonctionnalités.
- La variable
Is required
L’attribut customer est désormais correctement implémenté par portée de site web pour le formulaire de modification du client administrateur.
- La variable Grid Filter Condition Type le champ des attributs de l’adresse du client et de l’adresse du client n’est plus visible sur la page de modification des attributs lorsque la variable Use in Filter Options est désactivé.
- Magento Open Source affiche désormais un message d’erreur informatif si un commerçant ne parvient pas à saisir une valeur d’attribut de SKU facultative lors de la création d’un produit. Auparavant, l’application renvoyait cette exception lorsque l’attribut était facultatif :
Deprecated Functionality: trim(): Passing null to parameter #1 ($string) of type string is deprecated in /var/www/html/mg244/project-community-edition/vendor/magento/module-eav/Model/Entity/AbstractEntity.php on line 932
. GitHub-35810
- La variable Show my quotes filtre sur la variable My Quotes fonctionne désormais comme prévu. Auparavant, les résultats du filtre comprenaient des guillemets d’autres utilisateurs administrateurs.
GraphQL
Types
qui implémentent plusieurs interfaces dans le code GraphQL peut désormais être séparée par une&
signer et,
conformément à GraphQL@doc
spécification.
- La variable
setShippingAddressesOnCart
la mutation prend désormais en charge la définition des codes de région numériques commeregion
. Auparavant, cette mutation fonctionnait incorrectement pour les valeurs numériques de code de région.
- La variable
products
la requête renvoie désormais uniquement les révisions associées à la portée spécifiée. Auparavant, les requêtes renvoyaient des révisions de tous les magasins.
- Les autorisations de catégorie sont désormais respectées lors des demandes GraphQL.
- La variable
customer
la requête filtre désormais les commandes avec unfrom
etto
s’étend correctement. GitHub-31537
- La variable
product
la requête renvoie désormais les données de catégorie correctes dans l’agrégation. Auparavant,attribute_code.category_uid
renvoyé la valeur decategory_id
au lieu decategory_uid
.
- La variable
customerOrders
la requête ne renvoie plus une\"model\" value should be specified
erreur. GitHub-35852
- La variable
customer
la requête filtre désormais les commandes en fonction de la portée. Vous pouvez maintenant spécifier si la requête doit filtrer les commandes par magasin, site web ou globalement.
- La variable
categoryList
la requête renvoie désormais un nombre de produits précis pour les catégories parentes ancrées et non ancrées. La nouvelleis_anchor
a été ajouté à la liste des colonnes sélectionnées de la collection de catégories. Auparavant, les demandes renvoyaient un nombre de produits égal à 0. GitHub-36300
- La variable
generateCustomerTokenAsAdmin
la mutation fonctionne désormais comme prévu lors de la création d’un jeton pour se connecter à un magasin autre que le magasin par défaut dans un déploiement multi-magasin. GitHub-35084
- La variable
createEmptyCart
une mutation renvoie désormais une exception comme prévu lorsqu’un jeton expiré est utilisé. GitHub-26112
- Les messages d’erreur de requête de panier ont été rendus plus informatifs. GitHub-34546
- Données d’agrégation dans la réponse d’un
products
la requête inclut désormais les valeurs correctes de l’attribut de type de prix.attribute_code
etlabel
. GitHub-28878
- La variable
products
la requête renvoie les informations de catégorie comme prévu lorsque le préfixe de base de données a une valeur non nulle. Auparavant, il renvoyait uneInternal server error
. GitHub-36117
- Correction du type de retour pour la variable
getCustomerIsGuest
. GitHub-29529
- La variable
Magento\CatalogGraphQl\Plugin\DesignLoader
module externe a été restructuré.
- Le rechargement du panier n’est désormais déclenché qu’une seule fois comme prévu lorsque le panier est initialisé par des mutations GraphQL. Auparavant, le chargement du panier déclenchait une revalidation inutile du panier par rapport à l’inventaire des stocks, qui consommait des ressources importantes à chaque chargement du panier.
- Ajout de la
gift_message
pourOrderItemInterface
. GitHub-29418
- Les options de produit renvoyées dans les réponses GraphQL incluent désormais uniquement les produits figurant dans le catalogue auquel appartient l’utilisateur. Si l’utilisateur appartient à un catalogue partagé, seuls les produits des catalogues partagés sont renvoyés. Si l’utilisateur est un invité ou ne fait pas partie d’un catalogue partagé personnalisé, seuls les produits du catalogue public sont renvoyés.
Google ReCAPTCHA
- Une erreur reCAPTCHA dans la variable
var/log/exception.log
Le fichier pour la connexion administrateur Google V3 reCAPTCHA a été résolu et aucun message d’erreur n’est consigné. Auparavant, l’erreur suivante était générée toutes les quelques secondes lorsqu’un utilisateur administrateur configurait son Configuration > Security > Google reCAPTCHA Admin Panel settings :main.ERROR: Can not resolve reCAPTCHA parameter. {"exception":"[object] (Magento\Framework\Exception\InputException(code: 0): Can not resolve reCAPTCHA parameter. at /home/xxxxxxx/public_html/vendor/magento/module-re-captcha-ui/Model/CaptchaResponseResolver.php:25)"} []
. GitHub-34975
Image
- Mise à jour des recommandations relatives à la taille du logo pour le bon de réception du PDF.
Import/export
- L’importation d’un produit avec la même clé URL numérique qu’un produit existant, mais sans son caractère alphabétique terminal, ne provoque plus d’erreur de validation lorsque la variable Product URL Suffix est définie sur vide dans l’administrateur.
- La variable
bin/magento app:config:import
importe désormais correctement le contenu d’unconfig.php
fichier lorsqu’il contient certainscron
expressions. Auparavant, l’importation échouait avec cette erreur :Import failed: Notice: Trying to access array offset on value of type null in [..]/vendor/magento/module-config/Model/Config/Backend/Currency/Cron.php on line 66
. GitHub-31428
- L’exportation complète fonctionne désormais correctement lorsque AWS S3 est utilisé comme stockage à distance. Auparavant, l’exportation échouait en raison de la taille du fichier chargé.
- L’état du produit est désormais importé correctement lorsque des colonnes de données d’inventaire dans le fichier CSV sont manquantes. Auparavant, après l’importation du produit, la source par défaut était automatiquement affectée au produit, sa quantité était définie sur zéro et son état était répertorié comme en rupture de stock lorsque des colonnes de données d’inventaire dans le fichier CSV étaient manquantes.
- L’importation de valeurs de tarification avancée fournit désormais le nombre correct pour les nouveaux enregistrements et les enregistrements mis à jour lorsque l’importation inclut plus de 100 enregistrements. Auparavant, le message de succès d’importation fournissait un mauvais comptage.
- Les fichiers CSV exportés contiennent désormais des chemins d’accès corrects aux noms de catégorie enregistrés dans plusieurs langues. Un identifiant de magasin a été ajouté pour la collecte de catégories. Auparavant, les fichiers exportés contenaient des chemins d’accès mixtes avec différentes langues au lieu d’un chemin de catégorie dérivé de la vue de magasin par défaut.
- La mise à jour des options personnalisées d’un produit dans une vue de magasin spécifique via l’importation se termine désormais correctement. Auparavant, une erreur de serveur interne était générée si une ligne liée au produit était fractionnée en plusieurs lots.
- La variable
Fixer.io
le service d’importation fonctionne désormais comme prévu. Les taux de change sont maintenant importés avec succès. GitHub-36010
Index
- La réindexation des prix s’exécute désormais correctement lorsque le catalogue contient des produits en bundle ne sont attribués à aucun site web. Auparavant, l’erreur suivante se produisait lors de l’exécution de l’indice des prix du produit :
Warning: Undefined array key <bundel product id > in vendor/magento/module-bundle/Model/ResourceModel/Indexer/Price/DisabledProductOptionPriceModifier.php on line 117
. GitHub-35796
Infrastructure
- Problèmes avec un tiers
colinmollenhour/php-redis-session-abstract
module et PHP 8.1 ont été résolus. GitHub-35634
Commande
- Le préfixe de commande transmis dans le script d’installation est désormais correctement ajouté à l’identifiant de commande.
- La page Détails de la commande se charge désormais correctement lorsque la commande contient un produit avec une longue valeur de texte personnalisé. Auparavant, la page des détails de la commande ne se chargeait pas, et la valeur de la variable
sales_order_item.product_options
n’était pas stockée correctement si un produit contenait une valeur longue pour une option personnalisée de texte.
- L’état de la commande Storefront est désormais précis pour les commandes partiellement remboursées. Auparavant, une commande restait dans l’état de traitement après l’expédition lorsqu’un remboursement partiel était appliqué. GitHub-35528
- Le groupe de clients est désormais représenté avec précision comme Non connecté pour une commande créée par un utilisateur invité. Auparavant, le groupe de clients était NULL dans les résumés des commandes d’invités, ce qui affectait les emails de confirmation et l’exportation des commandes. GitHub-35440
- Un état de Closed est désormais affecté aux commandes virtuelles comme prévu après l’émission d’un avoir et le remboursement du client. Auparavant, les produits virtuels étaient affichés sous la forme Complete dans la liste déroulante État , mais Closed dans le pied de page des commentaires de commande lorsque le commentaire a été ajouté à partir de l’administrateur. GitHub-35283
- Les invités peuvent désormais passer des commandes pour des produits dont la quantité est inférieure à un, et la quantité du produit est désormais strictement saisie comme
float
. Auparavant, car la quantité du produit était strictement typée commeint
, les commandes pour une quantité de produit inférieure à un échec avec ce message :Some of the products are disabled
. GitHub-36060
- Les remboursements de livraison sont désormais correctement calculés lorsque la variable Apply discount on prices l’option de configuration est définie sur including taxes.
- Les grilles de facture, d’envoi et de note de crédit sont désormais mises à jour de manière asynchrone une fois les commandes archivées.
- Les commandes en double ne résultent plus de requêtes GraphQL identiques et simultanées. Les guillemets sont désormais verrouillés pendant 10 secondes au maximum afin d’empêcher la création de commandes en double, et la seconde requête échoue avec ces erreurs :
The cart isn't active
ouThe order has already been placed and is currently processing
. Cette valeur de verrouillage peut être configurée via di pour la fonctionMagento\Quote\Model\PlaceOrderMutex
classlockWaitTimeout
. GitHub-36274
- Les valeurs des attributs de la société s’affichent désormais comme prévu dans les sections des adresses de facturation et de livraison du workflow de passage en caisse. Auparavant, les attributs de société ne s’affichaient pas correctement sur la page des détails de la commande, car les magasins n’étaient pas correctement définis lors de la création de la commande. Les valeurs d’attribut n’étaient stockées correctement que lorsque la variable Afficher la société a été définie sur optional pour Site web principal dans des déploiements multi-magasin.
- La variable
customer_address_id
est maintenant définie comme prévu pour une nouvelle adresse de facturation lorsque My billing and shipping address are the same est cochée. Une condition supplémentaire a été introduite pour déterminer si l’adresse de facturation est identique à l’adresse de livraison avant de définir l’identifiant de l’adresse du client pour l’adresse de livraison.
- Les problèmes de simultanéité liés à l’emplacement des commandes ont été résolus. Auparavant, si deux commandes étaient passées à partir de navigateurs différents au même moment, ou presque au même moment, les deux commandes se voyaient attribuer le même identifiant de commande. GitHub-35833
- Le placement d’une commande à facturation automatique pour un produit gratuit lorsque l’indexation asynchrone est activée fonctionne désormais comme prévu. Aucune entrée n’est ajoutée à la variable
sales_order_grid or sales_invoice_grid
tableau correspondant à ces commandes. Auparavant, Magento Open Source lançait une exception car l’application tentait d’indexer les grilles lors du placement de la commande au lieu de compter surcron
. GitHub-36334
Modes de paiement
- Le mode de paiement DCO n’est plus rendu sur le workflow de paiement du storefront lorsque la DCO est exemptée pour le pays spécifié dans les adresses d’expédition et de facturation. Auparavant, les paramètres de configuration d’administration de cette fonctionnalité n’étaient pas implémentés.
- Les informations de paiement du coffre-fort ne s’affichent plus dans la section Paiement du workflow de création de commande de l’administrateur si l’acheteur n’a pas enregistré de jeton. GitHub-33954
- Les prix personnalisés ne sont plus doublés après l'application d'une remise par règle de prix du panier. GitHub-35154
- Le nouvel état de la commande en attente est désormais honoré comme prévu lorsqu’une commande est passée à l’aide du mode de paiement Achat de sous-total zéro .
- Les paramètres de messagerie des invités sont désormais respectés lors de la création de la commande pour un acheteur invité avec PayPal Express via GraphQL. Auparavant, l’adresse électronique définie était remplacée par l’adresse électronique définie dans le compte PayPal.
Braintree
- Les identifiants de commande sont désormais ajoutés aux demandes de règlement pour les transactions de paiement.
- Le Magento Open Source ne renvoie plus l’erreur suivante lorsqu’un commerçant clique sur Reports > Braintree Settlement:
Error: Undefined constant Braintree\PaymentInstrumentType::ANDROID_PAY_CARD in /var/www/html/vendor/paypal/module-braintree-core/Ui/Component/Report/Listing/Column/PaymentType.php:49
. GitHub-35434
- La variable
customerPaymentTokens
La requête ne renvoie plus les jetons du Braintree lorsque la coffre est désactivée sur l’administrateur.
- La variable Pay Later Des bannières et des boutons ont été activés pour l'Italie et l'Espagne.
- Les utilisateurs administrateurs peuvent désormais créer une commande ou une réorganisation lorsque le mode de paiement du Braintree est activé. Auparavant, Magento Open Source envoyait cette erreur :
report.CRITICAL: Error: Call to a member function getMethodInstance() on null in /app/vendor/paypal/module-braintree-core/Block/Form.php:174
.
- Le passage en caisse avec le mode de paiement du Braintree se termine désormais correctement lorsque Braintree PayPal est activé et que Enable Card Payments est désactivée. Auparavant, la barre de progression n’était pas résolue et Magento Open Source affichait cette erreur de console :
adapter.js:66 Uncaught TypeError: Cannot read properties of undefined (reading 'clientToken')at Object.getClientToken (adapter.js:66:66)
. GitHub-35961
- La protection anti-fraude, les crochets web des méthodes de paiement locales et de paiement de l’acronyme ACH ont été mis en oeuvre. Le point d’extension Web de protection contre la fraude N’est déclenché que si une décision de risque a été prise en Braintree. Le point d’extension web ACH n’est déclenché qu’après la mise à jour d’un paiement ACH vers
settled
ousettlement decline
.
- La variable Tagline et Layout les champs de configuration ont été supprimés de tous les PayPal dans la section Définition de style d’administration .
- L’option de mode de paiement Braintree Vault reste sélectionnée dans le workflow 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 la variable My billing and shipping address are the same bouton .
- Les éléments de ligne sont maintenant transmis pour les transactions PayPal lorsque la variable Send Line Items Le paramètre de configuration est activé à partir de l’administrateur.
- Logique de validation du mode de paiement ACH Account Number prend désormais en charge le texte à 4 à 17 chiffres.
- La variable
customerPaymentTokens
La requête ne renvoie plus les jetons du Braintree lorsque la coffre est désactivé par l’administrateur.
- Les utilisateurs administrateurs peuvent désormais créer une commande ou une réorganisation pour les clients lorsque le mode de paiement du Braintree est activé. Auparavant, Magento Open Source envoyait cette erreur :
report.CRITICAL: Error: Call to a member function getMethodInstance() on null in /app/vendor/paypal/module-braintree-core/Block/Form.php:174
- Les acheteurs peuvent désormais utiliser le mode de paiement du Braintree dans les vitrines où Enable Card Payments a été désactivé. Auparavant, Magento Open Source générait cette erreur JavaScript :
_adapter.js:66 Uncaught TypeError: Cannot read properties of undefined (reading 'clientToken')at Object.getClientToken (adapter.js:66:66).
Performances
- L’indexeur de prix supprime désormais les données obsolètes comme prévu après le remplacement des enregistrements lors de la réindexation partielle des catalogues volumineux. Auparavant, le processus de réindexation supprimait les enregistrements obsolètes avant de les remplacer, ce qui entraînait la disparition temporaire des produits du storefront. GitHub-35616
- Les performances de la variable
bin/magento/setup:upgrade
a été améliorée. Auparavant, cette commande recréait les déclencheurs de la base de données, ce qui entraînait un temps d’arrêt important lors de l’exécution de la commande. En outre, les indexeurs n’ont pas rétabli le mode planifié et sont restés en mode d’enregistrement. GitHub-33386
- La mise à jour des prix des niveaux par l’API s’exécute désormais plus rapidement. Auparavant, la mise à jour des prix de niveau générait des événements inutiles.
SELECT
requêtes, qui ont retardé l’exécution lorsque de nombreux groupes de clients ont été affectés à un produit.
- Le chargement des pages qui incluent la liste des produits du widget de catalogue a été optimisé. Auparavant, les attributs non globaux étaient chargés directement à partir de la base de données.
Rapports
- Rapport Total de la commande de et to les dates s’affichent désormais correctement après sélection dans le sélecteur de date.
- La variable
ANDROID_PAY_CARD
constante dansBraintree/Ui/Component/Report/Listing/Column/PaymentType.php
a remplacéGOOGLE_PAY_CARD
. Ceci résout les problèmes liés au rapport du Braintree.
Révisions
- Les utilisateurs administrateurs disposant d’un accès limité à une portée spécifique peuvent désormais supprimer les révisions de produits comme prévu.
Rôles
- Ajout d’une ACL manquante pour Stores > Configuration > Services > OAuth. Auparavant, vous ne pouviez pas définir l’accès à ce paramètre de configuration OAuth lors de la configuration des autorisations de rôle.
Rechercher
- Les recherches de chaînes entre guillemets fonctionnent désormais comme prévu lorsque la variable Minimum Terms to Match configuration est activé. Auparavant, Magento Open Source envoyait cette erreur :
{"error":{"root_cause":[{"type":"parsing_exception","reason":"[match_phrase] query does not support [minimum_should_match]' ...
.
- La variable Point d’inscription le filtre de recherche des enregistrements de clients sur les grilles de clients des commandes client fonctionne désormais comme prévu lors de la création de la commande.
- La qualité des suggestions de recherche a été améliorée pour les requêtes à plusieurs mots.
- Les résultats de recherche incluent désormais des sorties d’option en rupture de stock pour tous les produits disponibles lorsque Display Out Of Stock Products est activé GitHub-36055
Expédition
- Les taux d’expédition pour FedEx, USPS et UPS sont correctement calculés lorsque la règle Panier gratuit est définie pour ne correspondre qu’à un sous-ensemble d’articles du panier.
- La page d’expédition Admin n’affiche plus l’option d’expédition gratuite lorsque le total de la commande est inférieur au montant minimum de commande spécifié qui est éligible à la livraison gratuite. GitHub-33697
- Magento Open Source honore désormais le client administrateur Show Company paramètre de configuration lors de l’affichage de l’adresse de livraison ou du client. Lorsque ce paramètre est désactivé, la société de livraison n’est plus incluse dans l’enregistrement de commande de la base de données, ni dans l’adresse de livraison, ni dans l’adresse du client. Auparavant, les informations s’affichaient même si le paramètre était désactivé. GitHub-33729
- Suppression d’une opération d’enregistrement superflue sur les guillemets lors de l’estimation de l’expédition.
storeId
s’applique désormais directement depuis$request->getStoreId()
afin de s’assurer que la portée n’est pas perdue lorsqu’un guillemet est créé par un utilisateur administrateur. Auparavant, des problèmes se produisaient parfois avec les méthodes de livraison lorsqu’un guillemet était créé à partir de l’administrateur à l’aide de modules tiers.
- Des URL compatibles avec l’optimisation pour les moteurs de recherche sont désormais générées pour les produits dont
url_key
est remplacé au niveau de l’affichage du magasin. Auparavant, les URL de produits de catégorie n’étaient pas redirigées vers des URL compatibles avec l’optimisation pour les moteurs de recherche.
- Magento Open Source ne génère plus d’erreur de montant de commande minimal lorsqu’une remise est appliquée aux frais d’expédition.
- Les remboursements de frais de livraison sont désormais correctement calculés lorsque la taxe est appliquée après qu'une remise a été appliquée à l'expédition.
- Toutes les promotions applicables pour un panier demandé via GraphQL
cart
sont renvoyées ensemble. Les promotions comprennent des remises sur les articles, des remises/règles de panier, des bons, des cartes-cadeaux et du crédit de magasin. GitHub-35545
- Ajout de la
price_excl_tax
etprice_excl_tax
types à la sortie de l’objetsetShippingMethodsOnCart
mutation. GitHub-31206
- Les identifiants d’expédition uniques sont désormais transmis dans les réponses GraphQL comme prévu avec les détails d’expédition des commandes expédiées à plusieurs adresses pour les requêtes GraphQL.
Taxe
- La variable Display Zero Tax Subtotal le paramètre de configuration est désormais appliqué comme prévu pour les commandes dans les déploiements offrant plusieurs méthodes de livraison. Auparavant, le champ de taxe zéro était visible sur la page du panier lors du passage en caisse avant qu’un mode de livraison ne soit sélectionné, même lorsque ce paramètre était désactivé. GitHub-35561
- Magento Open Source peut désormais afficher les produits groupés avec taxe sur la page de catégorie storefront dans les déploiements exécutant PHP 8.1. Auparavant, Magento Open Source n’affichait pas de liste de produits et renvoyait cette exception :
main.CRITICAL: Exception: Deprecated Functionality: ucfirst(): Passing null to parameter #1 ($string) of type string is deprecated in /var/www/m24/vendor/magento/module-tax/Pricing/Render/Adjustment.php on line 188 in /var/www/m24/vendor/magento/framework/App/ErrorHandler.php:61
. GitHub-35500
- Les vendeurs ne peuvent plus déplacer une mise à jour planifiée vers une autre mise à jour contenant le même ID de règle. Auparavant, les mises à jour de planification des règles de prix du panier créaient des plannings en double lorsqu’une mise à jour était déplacée vers une autre mise à jour contenant le même ID de règle.
- L’affectation automatique de groupe de clients fonctionne désormais lorsqu’aucun identifiant de TVA n’est associé à l’adresse du client. Si l’adresse ne contient pas d’identifiant de TVA, elle est traitée comme appartenant à un client non inscrit en TVA et le Magento Open Source remplace le groupe de clients par un groupe non-TVA. Auparavant, lorsque Enable Automatic Assignment to Customer Group a été activé, le compte client n’a pas été automatiquement affecté à la variable
customerGroup
lorsque l’ID de TVA a été supprimé du compte client.
- Les blocs dynamiques corrects s’affichent désormais pour les règles de catalogue intermédiaire en mode d’aperçu intermédiaire. Auparavant, des blocs dynamiques sans rapport étaient affichés.
- Plusieurs taxes sont désormais générées correctement dans la section Résumé des impôts des factures et des notes de crédit lorsque les frais d’expédition multiples sont appliqués lors du passage en caisse.
- Les remises ne sont plus appliquées lorsqu’un sous-total de commande incluant la taxe ainsi que le montant de la taxe sur les produits fixe dépasse la condition de règle du panier sur la page du panier. Auparavant, les remises étaient appliquées même lorsque le total dépassait la condition de règle du panier.
- Vous pouvez désormais définir une
vat_id
lors de l’utilisation de GraphQL pour ajouter ou mettre à jour l’adresse d’un acheteur invité.
Test
- Correction des erreurs de tests unitaires pour les différentes versions de la variable
ICU
etlibxml
bibliothèques.
- Les développeurs peuvent désormais demander au système d’exécuter une installation de données dans une vue de magasin spécifique. Le nouveau paramètre facultatif
scope
accepte unestring
qui correspond à l’alias de l’appareil de magasin.
- Ajout de la possibilité de générer plusieurs instances d’une installation de données à l’aide de l’option
count
.
- Suppression de non-native
array_first
à partir des dépendances de développement dans la structure MFTF.
Traductions et paramètres régionaux
- La traduction en ligne fonctionne désormais correctement avec les caractères spéciaux, y compris les caractères unicode étendus dans les expressions situées dans les balises SCRIPT. Auparavant, les caractères japonais s’affichaient incorrectement dans le script modifié lors de l’utilisation de la traduction intégrée.
- La variable
ñ
dans un nom de produit, est maintenant converti enn
pendant la génération de la clé URL.
- La sortie de l’exécution
bin/magento i18n:collect-phrases
inclut désormais les traductions de modèles de courrier dansdepend
construit comme prévu. GitHub-35449
- Il est désormais possible de saisir directement des caractères japonais dans le jeu d’attributs de la page du produit (zone combinée). Auparavant, la saisie directe de caractères japonais dans cette liste déroulante entraînait la modification ou la suppression de caractères lors de l’exécution du navigateur Firefox sur MacOS. La variable
textInput
L’attribut HTML, qui peut mieux gérer la conversion des caractères japonais dans tous les navigateurs, a remplacé leValue
etvalueUpdate
attributs.
- La variable
getOptions
récupère désormais correctementprice
des valeurs de libellé d’attribut en fonction de la vue de magasin. Auparavant, la variableprice
a été traduit pendant les opérations GraphQL pour une vue de magasin incorrecte.
Interface utilisateur
- La devise spécifique au site web est désormais utilisée comme prévu pour les colonnes Prix spécial, Coût et MSRP dans la grille des produits d’administration. Auparavant, le symbole monétaire correct ne s’affichait pas dans la grille de produit du catalogue d’administration lors du filtrage par vue de magasin pour un prix spécial.
- La fonctionnalité de glisser-déposer des options personnalisées du produit fonctionne désormais comme prévu. Vous pouvez désormais déplacer une option personnalisable d’une page à une autre lorsque plusieurs pages sont disponibles dans la grille d’options personnalisables.
- Les tableaux de bord d’administration affichent désormais les intervalles de temps YTD entre le début de l’année civile en cours et la date en cours, comme prévu. Auparavant, les périodes s’étendaient sur 12 mois.
- Ajout d’une icône de favicon par défaut manquante sur la page d’accueil du storefront. GitHub-35493
- L’administrateur affiche désormais correctement la date de connexion la plus récente de chaque utilisateur administrateur. Auparavant, lorsqu’un utilisateur administrateur se connectait pour la première fois à l’administrateur, une valeur de date de connexion vide s’affichait sur la grille Utilisateur administrateur.
- La fonction de modèle de courrier électronique d’aperçu (Marketing > Communications > Email Templates) affiche désormais correctement les modèles. Auparavant, l’image d’aperçu était tronquée. GitHub-35697
- Ajout de la
new-shipping-address-modal
pour prendre en charge le style du modal de la nouvelle adresse de livraison.
- Ajout d’un texte informatif sous le
Search Weight
d’attributStorefront Properties
Champ de saisie sur Admin Stores > Attributes > Product.
- Les aperçus d’email s’ouvrent désormais dans un onglet distinct au lieu d’une fenêtre contextuelle, qui offre une vue plus large du contenu de l’email. Auparavant, le contenu de l’email était tronqué.
- Fonction de filtre pour la grille des rôles utilisateur (Admin) System > Permissions > User roles > Administrators) fonctionne désormais comme prévu. La valeur du tableau est désormais gérée séparément. Auparavant, lorsque vous tentiez de saisir une requête dans cette grille, Magento Open Source renvoyait cette erreur de console et la page ne se chargeait pas :
Uncaught TypeError: Cannot read properties of null
. GitHub-35993
- La validation des valeurs d’attribut a été ajoutée lors de la création d’un client via l’API REST. Le processus de création échoue désormais lorsque des valeurs d’attributs non valides sont fournies. Auparavant, il n’y avait pas de validation pour le genre, qui n’est pas un champ obligatoire. Lors de la création du client, la valeur transmise pour le genre a été enregistrée dans la variable
customer_entity
table.
- Les adresses ajoutées lors du passage en caisse conservent désormais le format attendu. Auparavant, les lignes vides étaient ignorées.
- La modification de la vue de grille des colonnes de la grille de produit et la sélection de nouvelles colonnes pour une vue personnalisée ne déclenchent plus l’action Sélectionner toutes les colonnes de la grille . Auparavant, la zone de colonne disparaissait et les produits de la grille étaient sélectionnés ou désélectionnés. GitHub-36302
- Les utilisateurs administrateurs peuvent désormais effacer le journal des tâches de l’administrateur. Auparavant, l’administrateur affichait cette erreur :
Something went wrong
. GitHub-36255
- Paramètre d’en-tête de thème
Welcome Text
peut maintenant contenir un guillemet simple. Auparavant, Magento Open Source générait cette erreur JavaScript :Uncaught SyntaxError: Unable to process binding "ifnot: function(){return customer().fullname }"
.
URL rewrites
- Modification de la visibilité du produit en Not Visible Individually dans la portée globale Toutes les vues de magasin , supprime désormais uniquement les réécritures d’URL pour les vues de magasin qui n’ont pas remplacé l’attribut de visibilité. La modification de la visibilité du produit de cette manière génère également des réécritures d’URL pour toutes les vues de magasin, y compris celles qui ont remplacé l’attribut de clé d’URL (mais pas le paramètre de visibilité). Auparavant, les règles de réécriture d’URL n’étaient pas appliquées lorsque les paramètres de visibilité étaient modifiés.
Structure de l’API web
- API REST
DELETE /rest/V1/products/:sku/media/:entryId
renvoie désormais un message d’erreur si l’image n’est pas supprimée du produit, car elle est affectée à un rôle dans d’autres vues de magasin. Auparavant, l’API renvoyait une réponse réussie même si l’image n’était pas supprimée correctement.
- Les commerçants peuvent désormais utiliser l’API REST pour créer une note de crédit pour une commande dont le total global est nul. Auparavant, Magento Open Source affichait cette erreur :
The order does not allow a credit memo to be created. The credit memo's total must be positive. We can't create a credit memo for the invoice/order
.
- La page de modification du produit Admin reflète désormais fidèlement les affectations d’un produit une fois que l’affectation du site web du produit a été modifiée à l’aide de l’API REST. GitHub-36281
- Les ID d’option en double ne peuvent plus être inclus pour les attributs à sélection multiple lors des demandes d’API REST en masse pour mettre à jour les produits. Auparavant, vous pouviez définir des ID d’option en double pour des attributs à sélection multiple lors de l’envoi d’une demande d’API en bloc pour mettre à jour un produit. Lorsque cet attribut à sélection multiple a été configuré pour être inclus dans la navigation par couche, l’indexation d’un fichier EAV a échoué avec un
Duplicate entry
erreur.
- Les noms de produits des paniers utilisent désormais les valeurs de la vue de magasin spécifiée comme prévu. Auparavant, les noms de produits dans le panier renvoyaient toujours la valeur de vue de magasin par défaut dans les réponses du panier de l’API REST.
- Les valeurs des options personnalisées de l’élément de panier peuvent désormais être mises à jour à l’aide de l’API REST. GitHub-35768
- Demandes d’API en bloc pour plus de 20
sourceItems
terminez maintenant correctement dans les déploiements où l’option Inventaire est activée.
- Le service de devise du correcteur fonctionne désormais comme prévu avec les clés générées via ApiLayer, et les taux de change sont correctement exportés. Auparavant, le Magento Open Source générait une erreur lorsqu’un commerçant tentait d’importer des taux de change par l’intermédiaire de l’administrateur.
- Vous pouvez désormais utiliser l’API REST.
/rest/V1/bulk?searchCriteria[filter_groups]
requête pour interroger les opérations en bloc en fonction de critères de recherche. Auparavant, l’erreur suivante était renvoyée :report.CRITICAL: Report ID: webapi-624bbb1db96c4; Message: Item (Magento\AsynchronousOperations\Model\Operation) with the same ID "0" already exists.
- Les prix des produits sont désormais correctement mis à jour sur les pages de recherche de catalogue Admin et storefront à l’aide de l’API Gérer le prix de base. GitHub-33767
Liste de souhaits
- Les acheteurs peuvent désormais ajouter des produits à leur liste de souhaits après s’être connectés. Auparavant, en raison de problèmes liés à la validation de la clé de formulaire après connexion, la clé de formulaire envoyée avec la demande de liste de souhaits supplémentaires était invalidée.
- Les produits sont maintenant ajoutés comme prévu à la liste de souhaits à partir de la liste de produits et affichent les pages après qu’un client invité a confirmé son compte à partir d’un email de confirmation. Auparavant, les produits n’étaient pas ajoutés à la liste de souhaits après confirmation du compte.
- La variable
addProductsToWishlist
la requête renvoie maintenant un message d’erreur informatif lorsqu’un acheteur tente d’ajouter un élément à une liste de souhaits avec une valeur non valide pour le produit.select
option personnalisée. Auparavant, la validation du serveur pour la valeur de l’option personnalisée déroulante était manquante, ce qui entraînait une valeur non valide dans la base de données. Par conséquent, le point de terminaison a renvoyé cette erreur de serveur interne :GraphQL endpoint returns Internal server error with "Call
.
Problème connu
Problème: vous ne pouvez pas créer d’avoir lorsque la livraison gratuite est activée (Stores > Configuration > Sales > Delivery Methods) et le prix d’expédition affiché inclut la taxe. Lorsque vous essayez de créer une note de crédit, Adobe Commerce renvoie cette exception : "Division by zero".vendor/magento/module-sales/Model/Order/Creditmemo/Total/Tax.phpLine 139
. GitHub-36800
Solution: un correctif pour ce problème est désormais disponible. Accédez à Outil Correctifs de qualité : recherche de correctifs et recherchez le correctif ACSD-50814.
Contributions de la communauté
Nous sommes reconnaissants à l’ensemble de la communauté des Magento Open Sources et tenons à saluer leurs contributions à cette version.
L’équipe d’ingénieurs de la communauté Contributeurs Magento tient à jour une liste des principaux individus et partenaires qui contribuent le plus par mois, trimestre et année. Sur cette page Contributeurs, vous pouvez suivre les liens vers leurs relations publiques fusionnées sur GitHub.
Contributions des partenaires
Le tableau suivant présente les contributions des partenaires. Ce tableau répertorie le partenaire qui a contribué à la demande d’extraction, le numéro de la demande d’extraction externe et le numéro de problème GitHub qui lui est associé (le cas échéant).
Contributions des contributeurs individuels
Le tableau suivant répertorie les contributions des membres de notre communauté. Ce tableau répertorie les membres de la communauté ayant contribué à la demande d’extraction, le numéro de la demande d’extraction externe et le numéro de problème GitHub qui lui est associé (le cas échéant).
Configuration requise
Notre pile de technologie est basée sur PHP et MySQL. Pour plus d’informations, voir Configuration requise.
Instructions d’installation et de mise à niveau
Vous pouvez installer Magento Open Source 2.4.6 à l’aide de Compositeur.