Otra información de la versión
Aunque el código de estas funciones está empaquetado con versiones trimestrales , varios de estos proyectos (por ejemplo, Progressive Web Application (PWA) Studio) también se publican de forma independiente. Las correcciones de errores para estos proyectos se documentan en la información de versión independiente y específica del proyecto que está disponible en la documentación de cada proyecto.
Aplicar AC-3022.patch
para seguir ofreciendo DHL como transportista
DHL ha introducido la versión de esquema 6.2 y dejará de utilizar la versión de esquema 6.0 en un futuro próximo. Adobe Commerce 2.4.4 y las versiones anteriores compatibles con la integración de DHL solo admiten la versión 6.0. Los comerciantes que implementen estas versiones deben aplicar AC-3022.patch
lo antes posible para seguir ofreciendo DHL como transportista. Consulte el artículo de la base de conocimiento Aplicar un parche para seguir ofreciendo DHL como transportista para obtener información sobre cómo descargar e instalar el parche.
Aplique MC-43048__set_rate_limits__2.4.3.patch para solucionar el problema de limitación de velocidad de API
Esta revisión proporciona una solución para el problema en el que las API web no pueden procesar solicitudes que contengan más de 20 elementos en una matriz. Este problema afecta a las implementaciones que ejecutan el Magento Open Source 2.4.3, Adobe Commerce 2.4.3 o 2.3.7-p1. Se ha añadido una limitación de velocidad integrada a estas versiones para evitar ataques de denegación de servicio (DoS), y el máximo predeterminado se estableció en 20. Este parche revierte el límite predeterminado a un valor más alto. Si sospecha que su tienda está experimentando un ataque de denegación de servicio, Adobe recomienda reducir los límites de entrada predeterminados a un valor más bajo para restringir el número de recursos que se pueden solicitar. Consulte el artículo de la base de conocimiento API web no puede procesar solicitudes con más de 20 elementos en la matriz.
Aplique AC-384__Fix_Incompatible_PHP_Method__2.4.3_ce.patch para solucionar el error grave de PHP en la actualización
Durante la actualización al Magento Open Source 2.4.3 puede producirse el siguiente error grave:
PHP Fatal error: Uncaught Error: Call to undefined function Magento\Framework\Filesystem\Directory\str_contains() in [...]/magento/vendor/magento/framework/Filesystem/Directory/DenyListPathValidator.php:74
Este error se debe al uso de la función str_contains
, que es una función de PHP 8.x. La aplicación Open Source 2.4.3 no soporta PHP 8.x. Este hotfix reemplaza esta función con una función compatible con PHP 7.x. Consulte el artículo de la base de conocimiento Actualización de Adobe Commerce 2.4.3, 2.3.7-p1 Error irrecuperable de PHP.
Características destacadas
Busque los siguientes aspectos destacados en esta versión.
Mejoras sustanciales de seguridad
Esta versión incluye 33 correcciones de seguridad y mejoras de seguridad de la plataforma. Muchas de estas correcciones de seguridad se han trasladado a 2.4.2-p2 y 2.3.7-p1.
Treinta y tres mejoras de seguridad que ayudan a cerrar las vulnerabilidades de ejecución de código remoto (RCE) y ejecución de scripts en sitios múltiples (XSS)
Hasta la fecha no se han producido ataques confirmados relacionados con estos problemas. Sin embargo, es posible que se aprovechen ciertas vulnerabilidades para acceder a la información de los clientes o hacerse cargo de las sesiones de administrador. La mayoría de estos problemas requieren que un atacante obtenga acceso primero al administrador. Como resultado, le recordamos que tome todas las medidas necesarias para proteger a su administrador, entre las que se incluyen, entre otras, las siguientes: inclusión en la lista de permitidos de IP, autenticación de doble factor, uso de una VPN, uso de una ubicación única en lugar de /admin
y buena higiene de la contraseña. Consulte Boletín de seguridad del Adobe para ver una discusión de estos problemas corregidos.
Mejoras de seguridad adicionales
Las mejoras de seguridad para esta versión mejoran el cumplimiento de las prácticas recomendadas de seguridad más recientes, que incluyen:
-
Un nuevo complemento de Compositor ayuda a evitar la confusión de dependencias e identifica paquetes malintencionados con los mismos nombres que los paquetes internos en el repositorio de paquetes públicos. Consulte el nuevo complemento de compositor de versiones de Adobe con la publicación de blog 2.4.3.
-
La limitación de velocidad está ahora integrada en las API para evitar ataques de denegación de servicio (DoS). Las API web ahora imponen restricciones en el tamaño o el número de recursos (el máximo predeterminado se establece en 20 y se puede configurar en un valor diferente según las necesidades comerciales) que un cliente puede solicitar. Consulte Limitación de velocidad para obtener información sobre cómo configurar estas restricciones.
-
Se ha ampliado la cobertura de ReCAPTCHA para incluir:
-
Las API web que tienen páginas de HTML correspondientes se tratan mediante ReCAPTCHA. (Esto excluye las API web a las que se accede mediante integraciones). La cobertura ReCAPTCHA protege los puntos finales de ataques de spam. Cuando un servicio de integración de terceros que utiliza OAuth tiene acceso a las API web, ReCAPTCHA se deshabilita.
-
La página de tienda Realizar pedido y las API web relacionadas con pagos. La protección ReCAPTCHA para estas páginas está desactivada de forma predeterminada y se puede activar desde el Administrador. Esta cobertura agrega un mecanismo de fuerza anti-bruta para proteger las tiendas de ataques de carding.
-
Mejoras de infraestructura
Esta versión incluye mejoras que mejoran la calidad del marco de trabajo y las siguientes áreas funcionales:
-
Cuenta del cliente
-
Catálogo
-
CMS
-
OMS
-
Importar/Exportar
-
Promociones y direccionamiento
-
Carro y cierre de compra
-
B2B
-
Ensayo y previsualización
PayPal más tarde ahora es compatible en implementaciones que incluyen PayPal. Esta función permite a los compradores pagar un pedido en cuotas quincenales en lugar de pagar el importe completo en el momento de la compra.
Nuevo modo de indización use_application_lock
. El modo use_application_lock
le permite habilitar la reindexación mediante el uso de variables de entorno o configurando el archivo app/etc/env.php
. Ya no es necesario restablecer manualmente el indexador después de un error con este modo habilitado. Consulte Uso del modo de bloqueo de aplicación para reindexar procesos.
Mejoras de Platform
La versión 2.4.3 aún no es compatible con PHP 8.x, pero las siguientes actualizaciones de la plataforma nos acercan a la futura compatibilidad con PHP 8.x.
-
Las dependencias del Compositor principal y las bibliotecas de terceros se han actualizado a las últimas versiones compatibles con PHP 8.x.
-
La biblioteca KnockoutJS se ha actualizado a la versión 3.5.1 (la versión más reciente).
-
Se ha eliminado la biblioteca obsoleta TinyMCE v3. El módulo
Magento_Tinymce3Banner
y las pruebas MFTF relacionadas con TinyMCE v3.x se han eliminado de Adobe Commerce. -
El Magento Open Source 2.4.3 ha sido probado y confirmado para ser compatible con Redis 6.0.12. (la versión 2.4.x sigue siendo compatible con Redis 5.x.)
-
Las dependencias de la biblioteca Laminas se han actualizado a versiones compatibles con PHP 8.x. Se han quitado algunas dependencias redundantes del archivo
composer.json
. El Magento Open Source 2.4.3 usa Laminas 3.4.0.
Mejoras de rendimiento
Esta versión incluye mejoras que reducen el tiempo de indexación de los indexadores Precio del producto y Regla de catálogo. Los comerciantes ahora pueden excluir un sitio web de un grupo de clientes o un catálogo compartido, lo que reduce el número de registros para la indexación y mejora los tiempos de indexación.
Integración de Adobe Stock
Esta versión incluye Adobe Stock Integration v2.1.1.
GraphQL
Esta versión añade cobertura de GraphQL para rutas compartidas. route query y RoutableInterface admiten solicitudes de enrutamiento en páginas de productos, categorías y CMS. La consulta urlResolver
ha quedado obsoleta y su funcionalidad ha sido reemplazada por la consulta route
.
Consulte la Guía para desarrolladores de GraphQL para obtener más información sobre estas mejoras.
Page Builder
Page Builder ya está disponible como extensión agrupada en Magento Open Source. Ahora es la herramienta de edición de contenido predeterminada para Adobe Commerce 2.4.3 y Magento Open Source 2.4.3. Puede reemplazar el editor WYSIWG con cualquier módulo de terceros.
Page Builder reemplaza el editor TinyMCE en las siguientes áreas de administración:
- Página de CMS
- Bloque de CMS
- Descripción de categoría
- Descripción del producto
Todo el contenido creado en TinyMCE se ha migrado a Page Builder como HTML.
PWA Studio
Para obtener información acerca de mejoras y correcciones de errores, consulte Versiones de PWA Studio. Consulte compatibilidad para obtener una lista de versiones de PWA Studio y sus versiones compatibles.
Actualizar herramienta de compatibilidad
El ámbito de la herramienta de compatibilidad de actualización se ha ampliado en función de los comentarios de la comunidad. Únase a nuestro canal de Slack #upgrade-compatibility-tool para obtener soporte del equipo de productos de Adobe y de la comunidad, así como para guiar la futura dirección de la herramienta.
Extensiones desarrolladas por el proveedor
Consulte los siguientes artículos para obtener actualizaciones sobre las funciones y los cambios de esta versión:
Problemas solucionados
Hemos corregido cientos de problemas en el código principal 2.4.3.
Instalación, actualización e implementación
- El comando
bin/magento setup:db:status
devuelve ahora un mensaje que indica que todo está actualizado después de una actualización correcta. Anteriormente, la aplicación mostraba este error:Declarative Schema is not up to date
.
- Los valores de configuración ahora se conservan en la recarga del formulario cuando falla la creación de un nuevo producto configurable. Anteriormente, los valores se perdían durante la recarga del formulario y la aplicación mostraba este error:
The value specified in the URL Key field would generate a URL that already exists
. GitHub-32102
- La aplicación ya no genera una excepción cuando ejecuta
bin/magento setup:upgrade
para actualizar desde una implementación de Magento Open Source con Redis a Adobe Commerce.
- Las implementaciones que se ejecutan en Galera Cluster ahora admiten más clientes. GitHub-31038
- Los administradores ahora pueden iniciar sesión correctamente en una implementación cuando la aplicación se haya instalado con la opción
—use-rewrites=0
o conweb/seo/use_rewrites
establecido en 0 encore_config_data_table
. GitHub-32100
- Se actualizó la carga de
sortOrder
paraAsyncCssPlugin
. La aplicación ahora cargaAsyncCssPlugin
antes deJsFooterPlugin
. GitHub-30882
Magento\Config\Model\Config\PathValidator
ahora comprueba la ruta de acceso de visualización para determinar si existe un elemento y, si tiene una ruta de acceso de configuración, utiliza la ruta de accesoconfig.xml
en su lugar para la validación. GitHub-27678
- La compilación de archivos Less con Grunt o por compilación del lado del servidor ahora produce los mismos resultados. Anteriormente.
.abs- styles
, que extiende otros.abs- styles
en_extends.less
, no se generaron correctamente cuando se compilaron con Grunt. Esto resultaba en diferencias entre las implementaciones de producción y desarrollo. GitHub-7231
Integración de Adobe Stock
- La aplicación ahora muestra un mensaje informativo y un vínculo a la página Administrador Tiendas > Configuración > Avanzado > Sistema en la página Buscar Adobe Stock cuando no se han establecido Clave de API (ID de cliente) y Secreto de cliente. Anteriormente, la aplicación mostraba este error:
We couldn't find any records
y ningún vínculo.
Servidor
- Los administradores con acceso restringido (por ejemplo, a los que se les asigna acceso a un solo sitio web) ya no pueden editar las categorías configuradas como Ámbito global.
- El informe del sistema generado (Sistema > Soporte técnico > Informe del sistema) ahora se representa correctamente. Anteriormente, el contenido del informe estaba desalineado.
- La aplicación ahora desactiva la validación en el campo Price, como se espera cuando la configuración Dynamic price está habilitada durante la creación del paquete de productos. Anteriormente, la aplicación arrojaba un error de validación cuando se quitaba un valor del campo Precio cuando se habilitaba la configuración Precio dinámico. GitHub-26214
- Las redirecciones infinitas ya no se producen cuando la URL del administrador difiere de la URL del sitio web predeterminado en implementaciones en las que la aplicación está configurada para ser accesible desde dos direcciones URL.
Paquete de productos
- Ahora puede usar la mutación
addProductsToCart
para agregar un paquete de productos con más de una opción de casilla de verificación al carro de compras.
- La indexación de precios de los productos agrupados ahora se ejecuta mediante tablas temporales, lo que evita el bloqueo de tablas de base de datos. Anteriormente, la aplicación utilizaba tablas físicas, lo que resultaba en tablas bloqueadas.
- Ahora, el precio de un paquete de artículos se puede establecer en 0,00. Anteriormente, cuando se volvía a la página de edición después de establecer el precio en 0,00, el precio volvía a su valor predeterminado. GitHub-32383
- Los detalles del pedido para pedidos que contienen productos agrupados ahora muestran el precio correcto para los productos agrupados si el precio se cambió antes de realizar el pedido.
- El estado de stock del producto agrupado ahora se actualiza en función del estado de stock de sus productos secundarios. Anteriormente, los productos agrupados se mostraban como agotados cuando se eliminaba una opción del producto y el producto agrupado tenía dos opciones con el mismo SKU.
- Un administrador ahora puede cambiar el valor del atributo
Shipment Type
de un producto agrupado después de que se haya movido a un grupo de atributos diferente. Anteriormente, este atributo siempre se guardaba con un valorTogether
si se movía a un grupo de atributos distinto del predeterminado en el conjunto de atributos.
- La mutación
setGuestEmailOnCart
de GraphQL ahora actualiza correctamente el correo electrónico de invitado. Anteriormente, las tablas de direcciones de presupuesto y presupuesto no se actualizaban.
- Añadir, eliminar o actualizar un producto secundario a un producto del paquete a través de llamadas a la API de REST ahora déclencheur la reindexación según lo esperado. Anteriormente, estas acciones no tenían déclencheur para volver a indexar y, como resultado, el producto del paquete no cambiaba su estado de stock hasta que se realizaba una reindexación manual.
- La aplicación ahora muestra el rango de precios correcto para los productos agrupados con precios de nivel. GitHub-30284
- La aplicación ahora muestra el mismo precio total que se espera en la página del carro de compras y en la etapa de envío del flujo de trabajo de cierre de compra después de que haya cambiado el precio de una opción de paquete.
- Ahora puede configurar correctamente un producto agrupado accediendo a él desde un carro de compras del cliente. Anteriormente, la página Configurar producto nunca se cargaba completamente y no se podía guardar la configuración.
- Los comerciantes ahora pueden asignar un precio único para un paquete de productos en cada vista de tienda de una implementación de varias tiendas. Los precios específicos del sitio web se guardan en la tabla
catalog_product_bundle_selection_price
. Anteriormente, la aplicación no basaba el precio de un producto agrupado en el ámbito del sitio web ni siquiera cuando Tiendas > Configuración > Catálogo > Catálogo > Precio > Ámbito del precio de catálogo se establecía enWebsite
. No se guardaron precios específicos de sitios web encatalog_product_bundle_selection_price
. GitHub-12584
- Las facturas de los productos agrupados ahora muestran la cantidad correcta para los productos simples asociados cuando se deshabilita Asignación dinámica de precios. Anteriormente, los productos simples asociados con el producto agrupado tenían la cantidad del producto principal, no el producto agrupado). GitHub-30802
- La mutación
updateProductsInWishlist
ahora actualiza correctamente los elementos que pertenecen a un paquete de productos en una lista de deseos. Anteriormente, en lugar de actualizar el elemento de la lista de deseos, esta mutación eliminaba el elemento y creaba uno nuevo, que cambiaba el ID del elemento.
Caché
- El archivo
varnish6.vcl
se ha actualizado para omitir el almacenamiento en caché de la página del cliente.
CAPTCHA
- CAPTCHA ahora valida correctamente los datos proporcionados por un comprador, y los campos CAPTCHA ahora se muestran como se espera después de los múltiples intentos fallidos de un comprador para pagar con PayPal Payflow Pro.
- La validación CAPTCHA ya no falla aleatoriamente en la página de pago del flujo de trabajo de cierre de compra.
- La aplicación ahora muestra los campos CAPTCHA como se espera después de superar el número de intentos de finalización fallidos. Anteriormente, aunque la aplicación le pedía que intentara volver a intentar el desafío CAPTCHA, no mostraba los campos CAPTCHA.
- CAPTCHA ahora funciona como se espera en la página de cierre de compra. Anteriormente, después de que un comprador respondiera correctamente a un desafío CAPTCHA, el cargador de la página de pago nunca se completaba y la aplicación mostraba este error:
captchaData[formId] is undefined
. (Este error solo se producía cuando el comprador utilizaba el mismo explorador desde el que había accedido anteriormente a una implementación que ejecutaba 2.3.5-p1.)
_.isEmpty()
comprobaciones en el archivodefaultCaptcha.js
ahora se completaron correctamente. Anteriormente, estas comprobaciones no se completaban y, como resultado, la página de cierre de compra no se cargaba después de la actualización. GitHub-31641
Carro y cierre de compra
- La aplicación ahora tiene en cuenta las ubicaciones decimales específicas de la configuración regional al convertir y actualizar la cantidad de productos en el carro de compras.
- La aplicación ahora muestra el mensaje de validación de Términos y condiciones en el bloque correspondiente solo cuando un comprador hace clic en el botón Realizar pedido. Anteriormente, la aplicación mostraba este mensaje en el bloque Aplicar código de descuento cada vez que un comprador cambiaba el método de pago en el flujo de trabajo de pago:
The order wasn't placed. First, agree to the terms and conditions, then try placing your order again
.
- La aplicación ahora descarta los cambios en el formulario de dirección de facturación en el paso de pago de cierre de compra si el comprador no hace clic en el botón Actualizar y vuelve al paso de envío.
- Los productos con una opción personalizable
(File)
ahora incluyen vínculos activos según lo esperado a lo largo del proceso de cierre de compra de envío múltiple. Anteriormente, faltaba este vínculo. GitHub-31095
- El carro de compras Administrador ahora muestra los precios de los productos en las monedas correctas para las tiendas que admiten varias monedas. Anteriormente, los precios se convertían a la moneda especificada más de una vez: primero, cuando se agregaban productos al carro de compras desde la tienda y, después, cuando el pedido se procesaba posteriormente en el administrador.
- Los compradores ahora pueden agregar un producto al carro de compras cuyo precio mínimo anunciado (MAP) exceda su precio normal del producto.
- Los compradores ahora pueden cambiar correctamente su dirección de facturación del flujo de trabajo de cierre de compra al realizar el cierre de compra con varias direcciones.
- Todas las transacciones de pago creadas por los invitados ahora se guardan en la base de datos y son visibles en el Administrador según lo esperado. Anteriormente, solo se guardaba un pequeño subconjunto de pedidos simultáneos en la base de datos y la mayoría de los pedidos se perdían debido a los tiempos de espera resultantes de los bloqueos de la base de datos. GitHub-25862
- La aplicación ahora muestra correctamente los mensajes de bienvenida en línea que contienen caracteres especiales cuando un invitado coloca un producto en el minicarrito. Anteriormente, la aplicación no agregaba el producto al minicarrito ni mostraba el mensaje de bienvenida. GitHub-32250
- La página de envío del flujo de trabajo de cierre de compra ahora se carga correctamente cuando la entrega en tienda está activada. Anteriormente, la aplicación arrojaba un error de JavaScript y la página de cierre de envío no se representaba completamente.
- Se agregó el argumento
itemResolvers
al archivo de catálogodi.xml
. Como resultado, el cierre de compra ya no se interrumpe si los módulos de producto configurables y agrupados están desactivados. GitHub-30860
- La aplicación ahora muestra los botones de opción en la sección Información de pago y envío, tal como se espera durante el flujo de trabajo de reorganización del administrador. GitHub-30257
- La aplicación ahora aplica correctamente las reglas de precio del carro de compras con un descuento fijo de nivel de carro de compras cuando el carro de compras contiene un producto agrupado con varias opciones. Anteriormente, la regla de precio del carro de compras no se aplicaba completamente al pedido. GitHub-30952
- El botón Agregar al carro de la vista de lista de categorías ahora funciona según lo esperado. GitHub-32232
- Ahora puede usar el POST
/V1/carts/mine/items
para agregar una cantidad personalizada de productos agrupados a un carro de compras. GitHub-26909
- La aplicación ya no rellena el área de la dirección de facturación del flujo de trabajo de cierre de compra con la dirección de envío. Anteriormente, cuando el campo Estado/Provincia de la dirección de facturación estaba vacío y las direcciones de envío y facturación diferían, la aplicación rellenaba el campo de la dirección de facturación Estado/Provincia con información de la dirección de envío. GitHub-31608
Catálogo
- La actualización masiva de los atributos Habilitar incrementos de cantidad y Incrementos de cantidad ahora funciona según lo esperado. GitHub-29544
- La aplicación ya no genera un error de JavaScript después de habilitar la sincronización de productos recientes con el administrador. Anteriormente, la aplicación mostraba este error de JavaScript:
Cannot read property 'status' of undefined
.
- Las actualizaciones del diseño del tema personalizado ahora se aplican según lo esperado. Anteriormente, las actualizaciones de diseño de temas personalizados se omitían.
- La caché de categoría de producto ahora se borra según lo esperado por
cron
durante la ejecución deindexer_update_all_views
. Anteriormente, los recuentos de productos en la página Categoría después de la reindexación eran incorrectos.
- Los valores de atributo ahora permanecen inalterados cuando no se especifica un atributo en una solicitud de API de REST de actualización de producto para una vista de tienda. Anteriormente, si no se especificaba un atributo, la aplicación restablecía el valor del atributo a su valor de ámbito predeterminado.
- La cuadrícula Productos de administración (Administración Catálogo > Productos) ahora muestra el recuento de productos correcto cuando los productos se filtran por SKU.
- La aplicación ahora muestra un estado de stock preciso cuando se agrega un producto a una página de CMS cuando los permisos de categoría están habilitados y evita la visualización del precio para el grupo del cliente especificado. Anteriormente, todos los productos se mostraban agotados, independientemente del estado real de las existencias.
- El campo de entrada de precio del bloque de precios del grupo de clientes de precios avanzados ahora tiene una anchura mínima de cinco dígitos. Anteriormente, solo se veían dos símbolos en este campo en pantallas de baja resolución.
- La aplicación ahora elimina correctamente una imagen multimedia del producto después de eliminar un producto. Anteriormente, la imagen multimedia del producto permanecía en la carpeta después de eliminar correctamente el producto.
- El diseño de la página ahora se actualiza según lo esperado al crear o editar un producto en el Administrador y, a continuación, crear una actualización de diseño de programación. GitHub-32007
- Ahora, un atributo de producto personalizado con un valor de cero se puede guardar correctamente como en blanco. Anteriormente, la aplicación no actualizaba este valor a en blanco.
- Los archivos de actualización de diseño de categoría personalizada ahora se aplican a los productos según lo esperado. Anteriormente, el identificador del archivo de actualización (
catalog_category_view_*
) no coincidía con el identificador del producto. GitHub-27285
- Se ha deshabilitado la ordenación para la columna Impuesto de producto fijo (FPT) de la lista Productos de administración. Anteriormente, la página Productos no se podía volver a cargar después de ordenar la columna FTP.
- La vista previa del widget de productos de Page Builder ahora funciona como se espera en una implementación de varios sitios web cuando los productos coincidentes tienen un precio diferente en cada sitio web.
- La ordenación por posición en la búsqueda de productos mediante el GET
/rest/V1/products/?searchCriteria[filterGroups]
ahora funciona según lo esperado. Anteriormente, la colección de productos no tenía un valor de campoposition
para ordenar. GitHub-31591
- Los usuarios administradores ahora pueden ver espacios dobles en los campos Nombre y SKU de la cuadrícula del producto. Anteriormente, la aplicación contraía varios espacios en uno solo.
- Los productos ahora aparecen como agotados en la tienda cuando la cantidad vendible en el administrador es 0. Anteriormente, estos productos estaban disponibles en la tienda y la aplicación mostraba un botón Agregar al carro activo. GitHub-31117
- Los administradores ahora pueden agregar productos con opciones personalizables
(File)
a la cuadrícula Artículos pedidos desde la sección Carro de compras (columna Actividades del cliente) de la página Administrador - Cliente. Anteriormente, la aplicación no agregaba el elemento a la lista porque el valor no tenía el formato correcto antes de insertarse en\Magento\Catalog\Model\Product\Type\AbstractType::_prepareOptions
.
- La aplicación ya no pide a los compradores que seleccionen una opción de producto para un producto agrupado que solo tiene una opción.
- La aplicación ahora muestra todas las subcategorías en las actualizaciones de diseño (categorías de anclaje y no anclaje) durante la creación de un nuevo widget.
- La consulta
product
ya no sobrescribe los valores predeterminados de todas las vistas de tienda en una implementación de varias tiendas cuando se actualiza un nombre de producto solo para una vista de tienda. GitHub-31083
- El Magento Open Source actualiza el recuento total de páginas según lo esperado cuando cambia el valor por página de la lista Productos relacionados con el administrador, Ampliación de ventas y Venta cruzada. GitHub-31059
- Los administradores ahora pueden agregar productos con dos o más opciones personalizables
(File)
a un pedido por SKU.
- La aplicación ya no genera un error cuando un administrador con permisos restringidos añade un widget de producto a una página de CMS en el Admin. Anteriormente, la aplicación arrojaba este error cuando el administrador hacía clic en el botón Guardar:
We are sorry, an error has occurred while generating the content
.
- Las páginas de detalles del producto ahora se abren con la opción personalizable de fecha rellenada con la fecha del pedido anterior en que Usar JavaScript Calendar está habilitado. El solucionador de valores de la opción de fecha personalizada ahora vuelve a un formato alternativo si el valor no tiene un formato basado en la configuración actual. Anteriormente, el valor de la opción de fecha personalizada estaba vacío.
- La aplicación ahora solo muestra un error en el carro de compras cuando el producto está agotado. Anteriormente, la aplicación mostraba mensajes redundantes. GitHub-27469
- Ahora puede establecer los atributos del paquete
required_options
yhas_options
como se espera al crear o actualizar un producto del paquete mediante el extremoPOST /V1/product/:sku
. Anteriormente, estos atributos personalizados se establecían en 0 (cero) a pesar de los esfuerzos por establecerlo en 1 (uno).
- Los administradores ahora pueden agregar un producto con una opción personalizable
(File)
a un pedido por SKU. GitHub-30285
- Ahora puede guardar un producto y un precio sin especificar
type_id
. GitHub-13639
- Los productos de grupo ahora están disponibles en la tienda como se espera cuando se usa una solicitud REST
PUT /V1/products/:sku/links
para asociar un nuevo producto secundario con un nuevo producto de grupo. Anteriormente, los productos no se indexaban correctamente después de ejecutarbin/magento cron:run
.
- Ya no puede crear un producto con un valor de SKU
NULL
. Anteriormente, se podía crear un producto sin un valor de SKU a través de un importador personalizado o directamente en la base de datos, pero cuando se intentaba editarlo desde el administrador, la aplicación arrojaba un error. GitHub-27411, GitHub-32525
- Al añadir las opciones personalizadas necesarias a un producto simple, ya no se eliminará de los productos compuestos principales sin previo aviso. La aplicación ahora muestra una advertencia informativa y no guarda el producto. Anteriormente, la aplicación guardaba los cambios del producto y no mostraba una advertencia. GitHub-30492
Regla de catálogo
- La consulta
products
devuelve ahora los valores actuales cuando se aplica una regla de precio de catálogo a un artículo. GitHub-26738
- Las tablas temporales que comienzan con
catalogrule_product__temp
ahora se eliminan como se espera cuando la reindexación falla después de que caduque una regla de carro de compras o catálogo, esté deshabilitada o quede inactiva. GitHub-22273
- Ahora las zonas horarias se aplican del mismo modo en
\Magento\CatalogRule\Model\Indexer\IndexBuilder::reindexById
y\Magento\CatalogRule\Model\Indexer\IndexBuilder::reindexByIds
. GitHub-29549
Contenido de CMS
- Las imágenes grandes ahora cambian de tamaño según lo esperado durante la carga cuando el ajuste de configuración Habilitar cambio de tamaño de front-end está habilitado.
- Se ha corregido el control de errores del controlador de guardado de páginas de CMS. Anteriormente, cuando se arrojaba un objeto
Error
en el eventocms_page_prepare_save
, la aplicación pasaba este objeto a la funciónaddExceptionMessage
, rompiendo su contrato porque esta función espera unException
. Esto se resolvió agregando un mensaje de error mediante la funciónaddErrorMessage
. GitHub-30149
Productos configurables
- La aplicación ya no duplica miniaturas de productos en la galería de imágenes de un producto cuando hace clic en las opciones configurables de un producto.
- La ventana emergente de configuración que la aplicación muestra cuando edita un producto configurable desde una lista de artículos deseados ahora se cierra como se espera cuando hace clic en el botón Aceptar.
- La aplicación ahora genera correctamente facturas para pedidos que contienen solo un producto configurable. GitHub-31143
- Los compradores ahora pueden agregar productos configurables al carro de compras desde una vista de tienda no predeterminada. Anteriormente, cuando el comprador de una vista de tienda no predeterminada intentaba agregar un producto configurable, la aplicación mostraba este error:
Could not add item to cart. Please check required options and try again
. GitHub-31660
Política de seguridad de contenido (CSP)
- La directiva de seguridad de contenido ahora admite la carga de imágenes y fuentes codificadas en Base64 mediante
data: scheme
.
cron
- Las consultas de limpieza de Cron se han refactorizado para reducir o eliminar los siguientes problemas de rendimiento:
cron
trabajos permanecen atascados en un estado pendiente, consultas MySQL cada vez más lentas y un aumento en el uso de la CPU. GitHub-26507
cronjobs
que han estado en estadorunning
durante más de 24 horas ahora se cambian automáticamente al estadoerror
. Como resultado, se puede volver a ejecutar una nueva instancia de ese trabajo y no es necesario cambiar manualmente el estado del trabajo cuando un trabajo permanece establecido incorrectamente en el estadorunning
. Anteriormente, si un(a)cronjob
estaba bloqueado(a) en el estadorunning
, la aplicación impedía que se iniciaran nuevas instancias del mismo trabajo y tenía que cambiar manualmente el estado del trabajo. GitHub-8933
cron
trabajos ahora se completan según lo esperado y ya no arrojan este error de serialización:[Magento\Framework\DB\Adapter\DeadlockException]SQLSTATE[40001]: Serialization failure: 1213 Deadlock found when trying to get lock; try restarting transaction, query was: DELETE FROM cron_schedule WHERE (status = 'missed') AND (job_code in ('indexer_reindex_all_invalid', 'indexer_update_all_views', 'indexer_clean_all_changelogs')) AND (created_at < '2018-09-28 18:32:28')
. GitHub-18409
indexer_update_all_views
trabajos cron ahora se ejecutan como se esperaba después de un error anterior. La ejecución fallida se marca como un error encron_schedule schedule
, y la ejecución posterior no falla automáticamente. Anteriormente, la tablacron_schedule
se llenaba con trabajos pendientes y el trabajo cronindexer_update_all_views
no se ejecutaba. GitHub-23054
cron
interbloqueos ya no se producen como resultado decron
que intenta establecer un bloqueo en implementaciones grandes en las que los grupos se superponen. GitHub-8933
cron
interbloqueos ya no se producen en la tablacron_schedule
después de que se hayan ejecutado unos pocoscron
trabajos. GitHub-22438
Atributos del cliente personalizados
- El campo Estado de la libreta de direcciones de la cuenta de cliente de la tienda ahora se carga como y sigue siendo un elemento de página desplegable. El botón Enviar ahora está deshabilitado hasta que todos los elementos de la página se hayan cargado por completo. Anteriormente, la aplicación cargaba este campo como un cuadro de texto antes de procesarlo como un elemento desplegable y los compradores podían introducir y guardar valores en el campo de texto, lo que posteriormente provocaba un error durante la desprotección.
- La aplicación ya no genera un error cuando se guarda un atributo de dirección del cliente con un archivo adjunto en el campo Dirección del cliente del administrador al cargar archivos. Esto se produjo debido a la falta de una instrucción return en la acción del controlador. Anteriormente, la aplicación arrojó este error:
Something went wrong while saving the file
.
- Las llamadas a la API del carro de GET de REST ahora devuelven valores de atributo personalizados correctos para las direcciones de facturación y envío. Anteriormente, los atributos de direcciones personalizadas se mostraban incorrectamente en la página de detalles de pedidos de la página Mi tienda de cuentas y en el Administrador.
- La aplicación ahora administra correctamente archivos que contienen atributos de dirección de cliente con tipo de entrada
file (attachment)
. Anteriormente, la aplicación arrojó este error durante la carga del archivo adjunto:Something went wrong while saving the file
.
Cliente
- El filtrado por fecha de creación de cuenta ahora produce resultados que cumplen con la configuración de zona horaria configurada y que capturan todas las cuentas creadas relevantes.
- El filtro de cuadrícula de cliente ahora utiliza una opción de sitio web correcta para un usuario restringido si los datos se almacenaron en caché anteriormente. Anteriormente, el filtro de cuadrícula del cliente recuperaba parámetros de sitio web de la caché e incluía datos incorrectos para usuarios restringidos.
- La aplicación ya no genera una excepción en la página Admin Customers cuando se elimina un sitio web en una implementación de varios sitios web. Anteriormente, cuando un administrador intentaba obtener acceso a la lista completa de clientes, la aplicación no mostraba todos los clientes y mostraba este error:
The website with id 2 that was requested wasn't found. Verify the website and try again
.
- Los administradores con permiso ahora pueden reasignar clientes a distintos sitios web desde la pestaña Información de la cuenta del cliente.
- Ahora puede cargar un archivo correctamente al crear un atributo de dirección de cliente con un tipo de entrada de
(File)
. Anteriormente, al intentar cargar y guardar un archivo, la aplicación arrojaba este error:Something went wrong while saving the file
.
Directorio
- La aplicación ya no genera una excepción cuando un comprador introduce un código postal no válido durante la sección de envío del flujo de trabajo de cierre de compra. GitHub-23371
Descargable
- La aplicación ahora muestra vínculos a productos descargables en el correo electrónico Nuevo pedido cuando el pedido contiene un producto descargable y un producto configurable con una opción descargable. Anteriormente, la aplicación mostraba el vínculo al producto descargable independiente, pero no el vínculo al producto configurable con una opción descargable.
EAV
- Los valores de fecha de atributo de dirección del cliente ahora se guardan en formato de cuatro dígitos en lugar de formato de dos dígitos.
Correo electrónico
- El vínculo para restablecer la contraseña en la página de restablecimiento de contraseña de administrador ahora funciona según lo esperado. Anteriormente, cuando se utilizaba una plantilla personalizada para la página Restablecer contraseña de administrador, la aplicación mostraba este mensaje cuando un administrador hacía clic en el vínculo dentro del correo electrónico:
Your password reset link has expired
. Esto ocurría porque la plantilla de correo electrónico personalizada contenía la variable incorrecta para el ID de usuario.
- El envío de correos electrónicos de clientes desde el administrador ahora funciona correctamente cuando se habilita en el nivel de vista de tienda. Anteriormente, la aplicación no enviaba correos electrónicos a los clientes cuando la configuración de las notificaciones por correo electrónico se habilitaba en el nivel de vista de tienda, pero no en el nivel global.
- La aplicación ahora envía correos electrónicos como se espera en implementaciones de varios sitios en las que no todos los sitios web han habilitado el envío asincrónico de correos electrónicos. Anteriormente, si al menos un sitio web tenía esta configuración deshabilitada, no se enviaba correo electrónico desde ningún sitio web, incluso cuando estaba habilitada. Los correos electrónicos de factura, envío y nota de abono tenían problemas similares. Sin embargo, los correos electrónicos Comentarios sobre pedidos, Comentarios sobre facturas, Comentarios sobre envíos y Comentarios sobre notas de abono se han enviado correctamente. GitHub-31950
- Las facturas y los PDF de facturas ahora incluyen los mismos precios para los productos agrupados que se espera. Anteriormente, los PDF de facturas incluían el precio incorrecto de los productos agrupados. GitHub-12856
- La conversión de cadenas se ha agregado al método de filtro de la plantilla de correo electrónico para garantizar que el valor devuelto sea un
string
. Anteriormente, cuando se detectaba una excepción sin estar en modo de desarrollador, la aplicación devolvía un objetophrase
. Esto a su vez desencadenó unUncaught TypeError
irrecuperable. GitHub-32671
- Los correos electrónicos de confirmación de pedido ahora se envían según lo esperado cuando se habilita el envío asincrónico (Tiendas > Configuración > Ventas > Correos electrónicos de ventas > Configuración general > Envío asincrónico) en un sitio web en una implementación de varios sitios. GitHub-31950
- La aplicación ahora registra un error como se espera cuando se produce una excepción cuando un cliente intenta enviar un correo electrónico desde el formulario de contacto. GitHub-23645
Marcos
- Ahora se comprueba la existencia de anotaciones docblock en las clases principales del administrador junto con la clase original y las interfaces heredadas. Anteriormente, como las clases principales no se comprobaban, la realización de cualquier acción relacionada con el cliente en el Administrador que activaba un evento provocaba un error. La aplicación registró este error en el registro de excepciones:
report.CRITICAL: Method's return type must be specified using @return annotation.
.
- La aplicación ya no genera un error grave cuando el servidor Redis se detiene en una implementación en la que el almacenamiento en caché de páginas Redis está habilitado.
- La aplicación ahora cumple la configuración Excluir la carpeta multimedia de la copia de seguridad cuando la copia de seguridad está habilitada con
bin/magento config:set system/backup/functionality_enabled 1
. Anteriormente, se hizo una copia de seguridad de la carpeta de medios a pesar de esta configuración porque la ruta de acceso a/magento
se formó incorrectamente con un // doble.
- La aplicación ahora traduce todas las cadenas traducibles como se espera para la página del carro de administración. Anteriormente, la carga de traducción se producía demasiado tarde y omitía todos los observadores suscritos a la acción de controlador antes del envío. GitHub-31849
- La validación del formulario en la página Crear nueva cuenta de cliente ahora funciona correctamente cuando la configuración de la extensión de habilitación de Iniciar sesión como cliente está deshabilitada. Anteriormente, la aplicación arrojaba un error de JavaScript.
- Se ha mejorado la administración de excepciones para los procesos secundarios bifurcados por
ProcessManager
. Cuando ahora se produce una excepción, se sale del proceso principal y se muestra un mensaje de error solo una vez. Anteriormente, se registraban varios errores de indizador y se mostraban varios mensajes. GitHub-30622
- Los complementos de Magento Open Source globales (por ejemplo,
webapi_rest
ygraphql
) ya no se activan para un nuevo tipo de área personalizada cuando eldi.xml
de este archivo de área no contiene complementos registrados.
- Las excepciones que se producen durante la inicialización ya no se almacenan en caché y ahora almacenan en déclencheur un código de respuesta 500.
- El último controlador combinado en un archivo
communication.xml
ya no invalida todos los controladores creados anteriormente. GitHub-29528
Correcciones generales
- La aplicación ahora muestra el número correcto de estrellas en la página Mis críticas de producto y en la página Mi cuenta revisiones recientes. Anteriormente, la aplicación solo aplicaba las estrellas de revisión a la primera revisión y dejaba sin protagonizar las demás revisiones de la página.
- Los vínculos de cuenta en los encabezados ahora siguen los estándares WCAG. Anteriormente, los vínculos de cuenta en los encabezados contenían ID duplicados, lo que provocaba que fallara la validación de WCAG.
- La aplicación ya no genera errores generados por el registro del sistema cuando un comprador invitado utiliza una dirección no válida. Anteriormente, la aplicación mostraba este error intermitentemente en lugar de procesar la página:
No such entity with addressId
. GitHub-15115
- El proceso de cambio de tamaño de la imagen ya no se detiene para las imágenes en formato no compatible. Anteriormente, cuando
catalog:images:resize
encontraba un formato de imagen no compatible, el proceso se detuvo y la aplicación mostró este error:bin/magento catalog:images:resize Unsupported image format
.
- Se ha agregado compatibilidad con WEBP y AVIF para imágenes de logotipo al administrador. GitHub-32495
- Ya no puede cambiar el ámbito del atributo
media_gallery
. Anteriormente, cuando se volvía a cambiar el ámbito del atributomedia_gallery
aglobal
, la aplicación arrojaba un error.
- Los productos relacionados que se agregaron como una actualización programada ya no se muestran en la página de productos de una tienda después de la fecha de finalización de la actualización. GitHub-469
- El filtrado ahora funciona como se espera en la lista de exportaciones programadas cuando se selecciona el tipo de entidad. Anteriormente, el filtro no funcionaba y la aplicación arrojaba un error de JavaScript. GitHub-361
- Las imágenes de categoría ahora se copian como se espera del directorio
catalog/tmp/category
al directoriocatalog/category
cuando las categorías se guardan mediante el método de almacenamiento de la base de datos. La fila de imagen de la tablamedia_storage_file_storage
ahora también tiene eldirectory_id
correcto. GitHub-11995
- Ahora se notifica a los comerciantes sobre las cachés invalidadas como se espera después de enviar cambios a la jerarquía de CMS. Anteriormente, la aplicación no invalidaba las cachés al guardar la jerarquía de CMS.
- AJAX Se han reducido las solicitudes de redundantes a la sección del carro de compras. Anteriormente, la aplicación no cargaba correctamente el subtotal del carro de compras, lo que activaba la recarga de nuevo.
- Se ha agregado validación para las direcciones URL para evitar que las palabras reservadas se incluyan en las claves URL. Consulte Definición de identificadores uniformes de recursos (URI) conocidos
- En implementaciones que ejecutan PHP 7.4, la aplicación devuelve ahora un error 404 cuando la configuración Generar reescrituras de URL de "categoría/producto" se establece en No, y un comprador intenta acceder a una ruta de categoría inexistente. Anteriormente, la aplicación devolvió un error 500 que indica:
Trying to access array offset on value of type bool
. GitHub-31984
nowdoc
ha reemplazado aheredoc
en el conmutador de almacénMagento_Backend
. GitHub-32262
- Se agregaron las regiones Argentina, Bolivia, Chile, Ecuador, Guyana, Paraguay, Perú, Surinam y Venezuela a la tabla
directory_country_region
. GitHub-31169
- Se agregaron las regiones de Albania, Dinamarca, Grecia, Islandia, Portugal y Suecia a la tabla
directory_country_region
. GitHub-31040
- Los mensajes ahora se marcan como errores en la cola de mensajes de MysqlMQ cuando se producen excepciones. GitHub-18140
- La aplicación ahora hace referencia al objeto de clase correcto al cargar la información de impuestos para las páginas de nota de abono de administrador y factura. GitHub-31197
- La integración de Royal Mail Click & Drop ahora funciona según lo esperado. Anteriormente, la aplicación arrojó este error cuando intentó activar esta integración:
Sorry! Something went wrong. Please try again later
. GitHub-28996
- La aplicación ahora muestra un mensaje de error informativo cuando se pasa un envío, una nota de abono o un ID de factura incorrectos en una dirección URL. Anteriormente, la aplicación arrojaba un error grave. GitHub-30424
- Se ha eliminado la recursión en la ubicación de los archivos estáticos. La aplicación ahora muestra una página 404 en lugar de un error 500. Anteriormente, un error en la configuración predeterminada de NGINX provocaba una recursión infinita. GitHub-31530
- El nombre del archivo
cms_index_noroute.xml
se ha corregido acms_noroute_index.xml
. GitHub-31300
- El archivo
.editorconfig
se ha refactorizado para corregir el formato automático dedb_schema_whitelist.json
archivos. GitHub-31171
- El cambio de tamaño de una ventana del explorador ya no almacena en déclencheur los eventos de lupa de enlace duplicados. GitHub-30788
- La aplicación ya no emite una excepción SQL al filtrar
Magento\Users\Model\ResourceModel\Users\Collection
poruser_id
. GitHub-31216
Tarjetas de regalo
- Se ha añadido la lógica de validación de intervalo de precios a la página de creación de tarjetas regalo. Anteriormente, un administrador podía crear una tarjeta con un valor mínimo que superara el valor máximo. GitHub-493
- La consulta
addRequisitionListItemsToCart
ahora devuelve la cantidad de una tarjeta regalo personalizada como se espera cuando la solicitud no contiene un valor paraallow_open_amount
.
Mensaje de regalo
- Ahora se redirige directamente a los administradores a la página de administración solicitada después de iniciar sesión. Anteriormente, cuando un administrador iniciaba sesión, se le redirigía al tablero de administración (o a cualquier página configurada como página de inicio) y tenía que desplazarse manualmente a su destino. GitHub-31042
Google Tag Manager
- El componente IU para la dirección de facturación en la página de pago del flujo de trabajo de cierre de compra ahora utiliza correctamente la dirección de oferta cuando Google Tag Manager está habilitado. Anteriormente, se producía un error de JavaScript en la página de pago.
GraphQL
- La consulta de GraphQL
products
ahora devuelve opciones de atributo que se ordenan en el mismo orden utilizado en la página de edición de atributos.
- La respuesta a la solicitud de GraphQL
{ category(id: 2){ children { name children { name } } } }
ahora incluye un árbol de categorías ordenado correctamente.
- El objeto
CartItemPrices
ahora contiene el nuevo campo de GraphQLfixed_product_taxes
, que devuelve una matriz de los impuestos fijos sobre productos que se aplican a un elemento del carro de compras. Anteriormente, los impuestos de producto fijos aplicados a un elemento del carro de compras no se incluían en la consulta del carro de compras.
- Las solicitudes vacías a GraphQL ahora emiten el código de respuesta 200 en lugar de 500. Anteriormente, el analizador de GraphQL arrojaba una excepción antes de que se generara el resultado de la consulta.
- La mutación
applyRewardPointsToCart
ahora actualiza el total general de un carro de compras para reflejar con precisión el valor de los puntos de recompensa deducidos. GitHub-486
- Los productos desactivados ya no se incluyen en la respuesta de GraphQL cuando GraphQL se utiliza para vincular productos de ampliación de venta.
- Los comerciantes ahora pueden usar el método GraphQL
setShippingAddressesOnCart
para establecer las direcciones de facturación y envío para el carro de compras de un comprador cuando se deshabilita el cierre de compra de un invitado.
- La consulta
categoryList
ya no genera una excepción cuando contiene varios fragmentos en el objetoCategoryTree
. GitHub-31086
- La consulta de GraphQL
product
ahora devuelve los precios correctos del grupo de clientes.
- La respuesta de consulta
products
de GraphQL ahora ordena las agregaciones según la posición del atributo del producto.
- La aplicación ya no emite errores de tipo durante las consultas de GraphQL cuando los sufijos de URL de productos y categorías contienen valores nulos. GitHub-30909
- El objeto
CustomizableDateValue
ahora contiene el atributotype
. Su valor es una enumeración que se puede establecer en DATE, DATE_TIME o TIME.
- La consulta
dynamicBlocks
devuelve el contenido de bloques dinámicos que coinciden con los filtros especificados.
- La solicitud del POST
V1/products/special-price-delete
ahora elimina solamente el precio con unstore_id
especificado según lo esperado. Anteriormente, la llamada eliminaba todos los precios especiales para el SKU especificado de todas las tiendas. GitHub-25907
- Se ha corregido un error con el atributo
country_code
en la mutacióncreateGiftRegistry
.
- Se han corregido problemas con el atributo
giftRegistryUid
de la mutaciónupdateGiftRegistryItems
.
- Se ha agregado una comprobación adicional para evitar que la mutación
updateGiftRegistryRegistrants
se use para agregar personas aleatorias como inscritos a un registro de regalos.
- La mutación
addConfigurableProductsToCart
devuelve ahora la miniatura correcta del producto especificado. Anteriormente, devolvía la miniatura del producto principal.
- La consulta
products
ya no expone el precio especial de un producto cuando el período de precio especial está establecido para una fecha futura. GitHub-30210, GitHub-29631
- La respuesta a la consulta
customer
ahora incluye el atributototal_giftcard
como parte del objetoOrderTotal
.
- Se ha corregido un problema que hacía que la consulta
products
devolviera información errónea acerca de los niveles de precios en artículos que no tienen establecidos precios de nivel. GitHub-32279
Imagen
- Ahora puede establecer los atributos del paquete required_options y has_options como se espera al crear o actualizar un producto del paquete mediante el extremo del POST
/V1/product/:sku
. Anteriormente, estos atributos personalizados se establecían en 0 (cero) a pesar de los esfuerzos por establecerlo en 1 (uno).
Importar/exportar
- El filtro ID de categoría para entidades de producto en la cuadrícula Exportar atributos de entidad de la página ahora funciona según lo esperado.
- El estado de existencias de productos agrupados ahora se actualiza, según lo esperado, cuando todos los productos secundarios están agotados. GitHub-32647
- El estado de stock de producto configurable ahora se actualiza automáticamente según lo esperado cuando el estado de stock de producto secundario se actualiza mediante la importación. Anteriormente, el estado de existencias del producto no se actualizaba automáticamente cuando el estado de existencias del producto secundario se actualizaba mediante la importación.
- Ahora puede guardar valores vacíos en una exportación programada. Anteriormente, la aplicación actualizaba los valores de filtro vacíos después de crear o guardar la exportación. Los valores
no
ynot specified
se representaban con cero en la base de datos, y se anuló un valor denot selected
conno
.
- El proceso de exportación ahora tiene en cuenta el ámbito de la función del usuario al exportar productos, fuentes de stock y entidades del cliente. Anteriormente, el proceso de exportación ignoraba el ámbito de la función de usuario, que permitía la exportación de entidades de exportación de función de usuario privadas.
- La aplicación ahora establece la clase de impuestos del producto en
None
si se importa un producto contax_class_name
valoresNone
o0
. Anteriormente, siproduct tax_class_name
eraNone
en el archivo CSV, la aplicación creaba una nueva clase de impuestosNone
, que duplicaba la clase de impuestos existente. Siproduct tax_class_name
eran0
en el archivo CSV, la aplicación ignoró ese valor y la clase de impuestos del producto no cambió después de la importación.
- Los administradores ahora pueden cambiar correctamente el
name
debundle_values
de un producto del paquete desde el administrador. Anteriormente, la aplicación mostraba el producto agotado en la tienda después de cambiar el nombre del administrador. Los productos también se combinaron con el mismo SKU en una sola sección de opción de paquete.
- La aplicación ahora tiene en cuenta el ámbito del usuario al exportar los datos del cliente. Anteriormente, al intentar exportar clientes, la aplicación exportaba datos de clientes de todos los sitios web.
- La aplicación ahora elimina las relaciones de producto entre las ventas ascendentes, las ventas cruzadas y los productos relacionados durante la importación del archivo CSV, tal como se espera cuando se especifica
__EMPTY__VALUE__
en el archivo CSV.
- La exportación de datos de direcciones personalizadas para muchos clientes (Administrador Sistema > Exportar) ya no provoca un error de memoria de forma rutinaria. Anteriormente, al exportar los datos de direcciones personalizadas, la aplicación intentaba cargar todos los datos del cliente, lo que provocaba un agotamiento de la memoria, y la aplicación arrojaba un error de no asignación de memoria.
- Los precios de nivel duplicados ya no se importan durante el proceso de importación CSV predeterminado. Anteriormente, faltaba validación para evitar la importación de precios de nivel duplicados y, cuando se producían precios de nivel duplicados, los comerciantes no podían guardar los productos. Los comerciantes también vieron este error cuando intentaron programar un cambio de producto:
SQLSTATE[23000]: Integrity constraint violation: 1062 Duplicate entry…
.
- Todas las imágenes de productos se validan durante la importación. Anteriormente, la aplicación solo validaba la primera imagen cuando un producto tenía varias imágenes. GitHub-28236
- Ahora puede eliminar una región de una dirección de cliente como se espera durante la importación. Anteriormente, la región asignada no cambiaba cuando se importaba una dirección de cliente con una región vacía.
- Los productos con contenido JSON o de HTML como atributos de producto adicionales ahora se exportan correctamente a un archivo CSV. Anteriormente, el archivo CSV contenía cadenas de datos superpuestas en campos incorrectos.
Índice
- Process Manager ahora se cierra con un error cuando falla un proceso secundario. Anteriormente, Process Manager siempre se cerraba correctamente si el número de funciones que se le pasaban (por ejemplo, dimensiones del indizador) era inferior al valor de la variable de entorno
MAGE_INDEXER_THREADS_COUNT
. GitHub-30964
- Los productos ahora están disponibles según lo esperado en los resultados de búsqueda de la tienda al vincular productos con una solicitud de PUT REST
/V1/products/:sku/links
cuando el modo de indizador está establecido en Actualizar al guardar.
- El indizador de reglas de precios de catálogo ahora funciona como se espera cuando el modo de indizador está establecido en Actualizar al guardar. GitHub-370
- La eliminación de una categoría deshabilitada que no incluye un producto ahora no afecta a la búsqueda en el catálogo ni a las tablas de índice plano de categorías. Anteriormente, al eliminar una categoría inactiva se activaba un reindexado completo. GitHub-23297
- Los indexadores personalizados ahora pueden utilizar nombres de columna de entidad diferentes para las suscripciones. Anteriormente, el déclencheur de la base de datos utilizaba el nombre de columna del indizador establecido por última vez en Actualizar por programación en lugar del indizador designado. GitHub-21853
- AJAX La aplicación ya no envía solicitudes de para volver a cargar secciones de datos de clientes (
Magento_Customer/js/section-config
) que no se vean afectadas por la solicitud. GitHub-31948
- Los siguientes indizadores ya no se invalidan después de agregar, quitar o reordenar productos en una categoría:
catalog_category_product
ycatalogsearch_fulltext
(y sus dependientes). Anteriormente, estas eliminaciones involuntarias desencadenaban una reindexación completa de los sitios. Ahora se impide una reindexación completa en estas condiciones cuando el catálogo plano no está habilitado.
Infraestructura
- La dependencia
pelago/emogrifier
se ha actualizado de la versión 3.1.0 a la 5.0.0. Esta actualización resultó en la introducción de cambios incompatibles con versiones anteriores en la claseMagento\Email\Model\Template\Filter
. El código modificado se ejecuta durante el procesamiento de las plantillas de correo electrónico. Consulte Referencia de BIC.
- Se ha corregido un problema con
\Magento\CatalogInventory\Model\Indexer\Stock\CacheCleaner::getCategoryIdsByProductIds
que impedía guardar un nuevo producto.
- Se ha eliminado la biblioteca obsoleta TinyMCE v3. El módulo
Magento_Tinymce3Banner
y las pruebas MFTF relacionadas con TinyMCE v3.x se han eliminado de Adobe Commerce.
- La aplicación ya no genera un error
Invalid header value detected
en el formulario Contáctenos cuando un comprador introduce una dirección de correo electrónico que contiene marcas diacríticas francesas (como "é", "è"). La aplicación ahora convierte letras UTF-8 en el nombre de usuario a codificación ASCII. Anteriormente, las letras UTF-8 no se convertían a codificación ASCII en la sección única de la dirección de correo electrónico.
- La aplicación ya no genera un error grave de PHP cuando se añade un complemento a una clase principal. GitHub-31291
- Se han actualizado los archivos README.md para estos módulos:
Magento_Msrp
,Magento_MsrpConfigurableProduct
,Magento_MsrpGroupedProduct
,Magento_Multishipping
,Magento_MysqlMq
. GitHub-32577
phpcpd
se ha actualizado a la versión 6.0.3 para garantizar la compatibilidad con PHP 8.
ramsey/uuid
se ha actualizado por compatibilidad con PHP 8.0. GitHub-31777, GitHub-826
colinmollenhour/php-redis-session-abstract
se ha actualizado a la versión 1.4.4 para garantizar la compatibilidad con PHP 8. GitHub-32709
- Se corrigió una combinación no válida de tabulaciones y espacios en el archivo
phpstan.neon
. GitHub-31239
- Se ha eliminado el uso de la propiedad obsoleta
$_isScopePrivate
en toda la base de código. GitHub-30506
- Los diseños de página ya no están codificados en
Magento\Widget\Block\Adminhtml\Widget\Instance\Edit\Chooser\Container
. Como resultado, la funcióngetPageLayouts()
devuelve ahora la lista real de diseños de página declarados por los diferentes módulos según lo esperado. Anteriormente, solo devolvía diseños codificados. GitHub-31168
- El archivo
composer.lock
se ha actualizado a la última versión de Coding Standard. GitHub-31152
- Se agregó una dependencia que falta en el paquete
web-token/jwt-framework
almagento/module-jwt-framework-adapter
. GitHub-32578
- Se han agregado agentes de escucha pasivos a la biblioteca
fotorama.js
para mejorar la puntuación de las métricas de Lightthouse. GitHub-31140
- Se ha actualizado el archivo README.md para el módulo Google Analytics. GitHub-32616
- El Administrador de procesos ahora gestiona las excepciones correctamente en los procesos bifurcados. El proceso principal ahora se cierra y la aplicación muestra un mensaje de error solo una vez. Además, las excepciones de los procesos bifurcados ahora se gestionan cuando se inician en el proceso principal. Anteriormente, la aplicación registraba varios errores de indizador y mostraba varios mensajes de error. GitHub-30622
- La aplicación ya no emite un error cuando se añade un complemento a una clase principal. (El parámetro
optionsProvider
ahora se declara después degetContentIdentities
enAssest.php
.) Anteriormente, la aplicación arrojaba este error:Error: Cannot instantiate interface Magento\Framework\Data\OptionSourceInterface
. GitHub-31291
- Al ejecutar
Magento\Framework\Filesystem\Io\Ftp::ls()
en una carpeta vacía, ahora se devuelve una matriz vacía como se esperaba. Anteriormente, la aplicación arrojó esta excepción:Invalid argument supplied for foreach() in vendor/magento/framework/Filesystem/Io/Ftp.php…
. GitHub-31288
- El método
update
tanto para el Rol como para las Reglas se ha marcado como obsoleto enapp/code/Magento/Authorization/Model/Role.php
. GitHub-30756
- Se ha corregido la concatenación de los parámetros de cookie de SameSite. Anteriormente, una concatenación incorrecta adjuntaba el sufijo
lex
avalue
,domain
y otros parámetros. GitHub-26377, GitHub-32440
allure-framework/allure-phpunit
se ha actualizado a la versión 1.3.1 en toda la base de código. Anteriormente, la aplicación mostraba este error:Warning: Use of undefined constant GLOB_BRACE - assumed 'GLOB_BRACE' (this will throw an Error in a future version of PHP) in /var/www/html/src/vendor/allure-framework/allure-phpunit/src/Yandex/Allure/Adapter/AllureAdapter.php:74.
GitHub-24635
- La aplicación ahora muestra más errores informativos cuando se producen errores al ejecutar comandos
bin/magento
en el modo de producción. Anteriormente, la aplicación no mostraba mensajes de error o mostraba mensajes sin información. GitHub-32786
- El objeto PHP
ArrayIterator
se ha actualizado para que funcione según lo esperado con PHP 7.4. GitHub-32088
- La aplicación ya no genera un error cuando un cliente intenta completar un pedido cuando no hay transportistas disponibles. En su lugar, muestra la página de cierre de compra y este mensaje:
Sorry, no quotes are available for this order at this time
. Anteriormente, la aplicación mostraba una página de desprotección en blanco y registraba este mensaje en el registro de excepciones:array_keys() expects parameter 1 to be array, null given
. GitHub-30830
- La aplicación ya no registra cada cookie como un contexto independiente. La matriz
$_COOKIE
también se ha convertido en una cadena. Anteriormente, debido a que cada cookie se registraba como un contexto independiente, cuando el número de cookies superaba las 50, la aplicación registraba este mensaje:Unable to send the cookie. Maximum number of cookies would be exceeded
. GitHub-31334
Factura
- Al crear nuevas facturas en el Administrador, la casilla de verificación Copia de correo electrónico de ahora funciona según lo esperado. Anteriormente, la casilla de verificación se ignoraba si la configuración global para enviar correos electrónicos de factura estaba habilitada en Correos electrónicos de ventas. Ahora es coherente y funciona del mismo modo que las páginas de creación de envío y nota de abono. GitHub-28511
Galería de medios
- XMP
bin/magento media-gallery:sync
ahora falla como se espera al procesar imágenes PNG que carecen de información de la.
- Las entradas de la tabla
catalog_product_entity_media_gallery
se quitan según lo esperado cuando se eliminan productos relacionados. GitHub-17727
- Los detalles de la imagen ahora se pueden actualizar en la Galería multimedia cuando la minificación de JavaScript está habilitada. Anteriormente, los detalles de la imagen no se guardaban y la aplicación mostraba este error:
TypeError: Cannot read property 'call' of undefined in jquery.validate
. GitHub-31633
MFTF
Las nuevas características y las correcciones de errores principales de MFTF se describen en Registro de cambios del marco de pruebas funcionales.
- Los comandos
magento indexer:reindex
ycache:flush
y el grupo de acciónAdminReindexAndFlushCache
se han eliminado de las pruebas para mejorar la ejecución de los siguientes módulos:Bundle
,Catalog
,CatalogRule
,CatalogRuleConfigurable
,CatalogUrlRewrite
,Downloadable
,Indexer
,Paypal
ySales
. GitHub-31031
AdminSubmitCategoriesPopupActionGroup
se ha agregado a las pruebas para evitar errores en las pruebas. GitHub-31251
- Las pruebas se han refactorizado con
StorefrontCheckQuickSearchStringActionGroup
yStorefrontAssertProductNameOnProductMainPageActionGroup
(grupos de acción existentes). GitHub-31251
Pruebas refactorizadas
Las siguientes pruebas se han refactorizado para mejorar el tiempo de ejecución:
AddOutOfStockProductToCompareListTest
AdminApplyTierPriceToProductWithPercentageDiscountTest
AdminCheckingCreditMemoTotalsTest
AdminCheckDashboardWithChartsTest
AdminConfigDefaultProductLayoutFromConfigurationSettingTest
AdminCreateInvoiceTest
AdminCreateOrderAddProductCheckboxTest
AdminMassOrdersCancelCompleteAndClosedTest
AdminMassOrdersCancelProcessingAndClosedTest
AdminMassOrdersHoldOnCompleteTest
AdminMassOrdersHoldOnPendingAndProcessingTest
(reemplazo de AdminMassOrdersHoldOnPendingAndProcessingTest
obsoleto)
AdminMassOrdersUpdateCancelPendingOrderTest
AdminMassProductPriceUpdateTest
AdminMassUpdateProductAttributesMissingRequiredFieldTest
AdminOrdersReleaseInUnholdStatusTest
AdminPanelIsFrozenIfStorefrontIsOpenedViaCustomerViewTest
AdminSortingByWebsitesTest
AdminUpdateSimpleProduct
AdminUpdateSimpleProductWithRegularPriceInStockEnabledFlatTest
AdminValidateShippingTrackingNumberTest
CancelOrdersInOrderSalesReportTest
ProductsQtyReturnAfterOrderCancelTest
StorefrontConfigurableProductBasicInfoTest
Grupos de acción
Las acciones repetitivas se han sustituido por grupos de acciones en estas pruebas:
AdminCheckConfigurableProductPriceWithDisabledChildProductTest
AdminConfigurableProductCreateTest
AdminConfigurableProductRemoveAnOptionTest
AdminCreateProductDuplicateUrlkeyTest
AdminCreateSimpleProductNegativePriceTest
AdminCreateSimpleProductZeroPriceTest
AdminCreateVirtualProductFillingRequiredFieldsOnlyTest
AdminUpdateSimpleProductWithRegularPriceInStockDisabledProductTest
AdminUpdateSimpleProductWithRegularPriceInStockNotVisibleIndividuallyTest
AdminUpdateSimpleProductWithRegularPriceInStockVisibleInCatalogOnlyTest
Nuevos grupos de acción
AdminClearFiltersOnGridActionGroup
AdminClickAddNewPageOnPagesGridActionGroup
AdminClickInsertWidgetActionGroup
AdminClickRefundOfflineOnNewMemoPageActionGroup
AdminFillAccountInformationOnCreateOrderPageActionGroup
AdminGoToOrderStatusPageActionGroup
AdminOpenCMSPagesGridActionGroup
AdminSelectAttributeSetOnEditProductPageActionGroup
AssertAdminProductIsAssignedToCategoryActionGroup
(reemplaza la cuadrícula de productos de filtrado por SKU y hace clic en la primera fila (para reducir el tiempo de ejecución de la prueba)
AssertLinkActionGroup
AssertStorefrontCartDiscountActionGroup
ClickPlaceOrderActionGroup
SaveCmsPageActionGroup
StorefrontAssertProductNameIsNotOnProductMainPageActionGroup
StorefrontGuestCheckoutProceedToPaymentStepActionGroup
StorefrontHoverProductOnCategoryPageActionGroup
StorefrontSelectCustomizeAndAddToTheCartButtonActionGroup
Grupos de acciones eliminados
- Se quitó
CliIndexerReindexActionGroup
(o se cambió el valor) de las pruebas para mejorar el tiempo de ejecución de los módulosBackend
,Bundle
,BundleImportExport
,Catalog
,CatalogRule
,CatalogSearch
,Checkout
,Downloadable
,Elasticsearch
,Elasticsearch6
,Indexer
,LayeredNavigation
,LoginAsCustomer
,Newsletter
,Sales
,SalesRule
,Search
,Store
,Swatches
,UrlRewrite
,Weee
yWishlist
.
- Se eliminaron
CliCacheFlushActionGroup
deCatalog
,CatalogUrlRewrite
,Checkout
,Config
,ConfigurableProduct
,Contact
,Cookie
,CurrencySymbol
,Customer
,Downloadable
,Elasticsearch
,Elasticsearch6
,Fedex
,Indexer
,LayeredNavigation
,LoginAsCustomer
,Msrp
,Multishipping
,Sales
,Swatches
,Translation
,UrlRewrite
,Vault
,Weee
yWishlist
módulos.
Newsletter
- La aplicación ya no envía correos electrónicos de newsletter a un cliente que se ha dado de baja de la newsletter en el periodo de tiempo entre la creación de la cola de la newsletter y el envío de la newsletter. GitHub-32116
- La aplicación respeta ahora la configuración de habilitación de boletines informativos (Tiendas > Configuración > Configuración > Clientes > Boletín > Opciones generales). Anteriormente, esta configuración siempre se recuperaba del ámbito predeterminado en implementaciones de varias tiendas. GitHub-31188
- La GET de llamadas REST
/V1/customers/search
devuelve ahora la información correcta para los clientes suscritos a varios boletines. GitHub-31168
- El estado de suscripción de almacenamiento en caché se ha eliminado del complemento de newsletter. GitHub-19345
Pedido
- La aplicación ahora calcula correctamente un saldo de cliente facturado al devolver el crédito de tienda a una cuenta de cliente para un pedido parcialmente facturado.
- La aplicación guarda ahora un pedido modificado como se espera cuando guarda un saldo de cliente reembolsado. GitHub-393
Métodos de pago
- La aplicación ahora procesa bloques de pago en
frontend
independientemente del área desde la que se envió el correo electrónico. (El área actual ahora se emula comofrontend
antes de que se represente el bloque de pago). Anteriormente, los bloques de pago se representaban en el área desde la que se enviaba el correo electrónico. Como resultado, tanto si el correo electrónico de ventas se activó desde el administrador como desde la API de REST, las direcciones URL de los recursos intentaron cargarlos desde un área incorrecta (webapi_rest
oadminhtml
).
- La aplicación ahora envía el vínculo de un producto descargable a la dirección de correo electrónico especificada durante el cierre de compra. Anteriormente, cuando un comprador invitado utilizaba el Pago y envío de PayPal Express e introducía diferentes direcciones de correo electrónico para enviar el pedido y para pagar, la aplicación enviaba el vínculo de producto descargable a la primera dirección.
- La aplicación ahora muestra un valor preciso para el crédito de tienda disponible en la página Método de pago en implementaciones que admiten varias monedas.
- La lista de métodos de pago ahora se actualiza según lo esperado cuando un comprador invitado cambia la dirección de envío de un pedido a un país diferente durante el cierre de compra. Anteriormente, el cambio de la dirección de facturación no almacenaba en déclencheur una actualización de los posibles métodos de pago.
PayPal
- Los compradores ahora pueden realizar correctamente un pedido de PayPal Payflow Pro con una dirección de envío que contenga caracteres especiales. Anteriormente, la aplicación rechazaba el pago de estos pedidos.
- Ahora se redirige a los compradores a la página de éxito del pedido después de un pago realizado correctamente con PayPal. Anteriormente, se redirigía a los compradores a una página en blanco porque se perdían datos de sesión.
Rendimiento
- Se ha mejorado el rendimiento de la búsqueda de SKU de administrador en catálogos grandes. Las sugerencias del optimizador de consultas ahora fuerzan el uso del índice durante la ejecución de la consulta.
- Se ha mejorado el rendimiento del proceso cron
catalog_product_alert
al ejecutarse en tablas grandes (varios millones de filas). Anteriormente,catalog_product_alert
cargaba todas las alertas de producto, lo que provocaba una excepción de memoria insuficiente.
- La aplicación ya no carga todas las páginas de CMS cuando solo se necesita una página de edición para procesar un formulario de administrador. Estas páginas ahora se cargan más rápido. GitHub-30936
-
Los valores numéricos de las expresiones
WHERE IN
ahora se convierten en números, no en cadenas, lo que mejora el rendimiento de las consultas en algunas versiones de MariaDB. GitHub-31135 -
El modo
use_application_lock
le permite habilitar la reindexación mediante el uso de variables de entorno o configurando el archivoapp/etc/env.php
. Ya no es necesario restablecer manualmente el indexador después de un error con este modo habilitado. Cuando este modo no está habilitado, debe restablecer manualmente el indexador tras producirse un error. Consulte Uso del modo de bloqueo de aplicación para reindexar procesos.
Precio
- La aplicación ahora actualiza correctamente el precio de un producto con precios agrupados cuando un comprador actualiza la cantidad del producto en la tienda. GitHub-32669
- Los productos agrupados ahora se pueden guardar cuando se ha asignado un precio de nivel a los productos y se utiliza
Magento\Framework\Api\ExtensibleDataObjectConverter
para convertir los datos del producto. Anteriormente, cuando se usabaMagento\Framework\Api\ExtensibleDataObjectConverter
para convertir datos de producto en una matriz al guardar un producto, la aplicación no lo guardó y mostró este error:Notice: Undefined index: price in app/code/Magento/Catalog/Model/Product/Type/Price.php on line 382.
- Las actualizaciones de precios programadas ahora se aplican a productos que ya están en el carro de compras de un comprador. GitHub-356
- El precio de nivel ahora se aplica a un producto como se espera cuando los incrementos de cantidad están activados y el inventario decimal es inferior a 1. Anteriormente, la cantidad mínima de precio de nivel se establecía en 1.
Vídeo del producto
- Ahora puede usar el botón Agregar vídeo (Administrador Catálogo > Productos) para agregar varios vídeos de forma consecutiva. Anteriormente, los campos de vídeo conservaban los detalles del vídeo anterior.
- La introducción del modo de pantalla completa para un vídeo de producto en una página de producto ahora funciona como se espera en dispositivos móviles. Anteriormente, al entrar en modo de pantalla completa, el vídeo se pausaba antes de salir del modo de pantalla completa.
- Los botones de flecha de navegación (Siguiente y Anterior) ahora están visibles como se espera en los vídeos de productos de tienda.
- Los comerciantes ahora pueden agregar videos de Vimeo usando el botón Insertar video en la página del producto según lo esperado. Anteriormente, la aplicación mostraba un error 404. GitHub-31753
Cita
- La llamada a
/V1/guest-carts/examplecartid/items
ahora devuelve la vista de almacén solicitada. Anteriormente, devolvía la primera vista de tienda de la tienda, no la solicitada.
- El envío de facturas ahora se puede configurar. Anteriormente, el envío de facturas no se podía configurar y la aplicación siempre enviaba una factura después de crearla. Los correos electrónicos de factura y pedido se enviaron en el ámbito de un observador. Los observadores independientes ahora rigen el envío del correo electrónico de pedido y el correo electrónico de factura. GitHub-27656
Informes
- La fecha de la última revisión en Administración Informes > Revisiones > Por productos ahora muestra la fecha de revisión correcta. Anteriormente, la aplicación mostraba la fecha de creación del producto en lugar de la fecha de revisión.
Críticas
- Las estrellas de clasificación de revisión de productos ahora se calculan correctamente en la sección Detalles de revisión de la página Mi cuenta.
- Las secciones Clasificación promedio del producto y Clasificación del producto de la página de detalles de revisión del producto ahora se representan correctamente. Anteriormente, el ID de revisión no se establecía cuando la aplicación calculaba la clasificación de tiendas y la plantilla de revisión de producto no se representaba correctamente.
- El vínculo Sea el primero en revisar este producto ahora cambia según lo esperado a un recuento de revisiones después de que un administrador apruebe una revisión.
- Los administradores ahora pueden ordenar las revisiones de producto en la sección Revisiones de producto de la página de edición de productos según lo esperado. GitHub-30270
- Las revisiones ahora se guardan con el ID de almacén correcto después de que un administrador apruebe y guarde la revisión desde un dominio diferente al del almacén. GitHub-17510
Recompensas
- La aplicación ahora actualiza la lista de métodos de pago cuando un comprador que ha cerrado la compra con varias direcciones comprueba o desmarca la opción Crédito de tienda (puntos de recompensa).
Ventas
- Los usuarios administradores ahora pueden realizar pedidos de artículos sin existencias cuando la opción Pedidos no satisfechos está habilitada (Tiendas > Configuración > Catálogo > Inventario > Opciones de productos). Anteriormente, la aplicación arrojaba un error.
- Los compradores ahora pueden encontrar un pedido en la página Pedidos y devoluciones cuando el apellido termina en un espacio en blanco.
- Las facturas ahora se crean con el total general correcto cuando se aplica una regla de precio del carro de compras que asigna un descuento del 100% a un pedido que también está sujeto a impuestos de descuento y productos del catálogo y que cumple los requisitos para el envío gratuito. Anteriormente, el pedido tenía el precio correcto, pero la factura no. GitHub-30853
- Filtrar los pedidos por fecha ahora devuelve resultados precisos. Anteriormente, la aplicación no devolvía un pedido realizado después de las 00:00 UTC cuando se filtraban los pedidos por fecha de pedido.
- La cuadrícula de notas de crédito ahora muestra el símbolo de moneda correcto cuando se usa el ámbito Sitio web para un atributo Price en una implementación de varias tiendas.
- Los botones de opción Métodos de pago ya no desaparecen en la sección Información de pago y envío del flujo de trabajo de cierre de compra después de volver a cargar la página Crear nuevo pedido del administrador. GitHub-32106
- El texto en árabe ahora se muestra correctamente en las facturas.
- La aplicación ahora calcula correctamente los totales de impuestos de la nota de abono parcial para las notas de abono que se basan en un pedido o en una factura en tiendas que implementan PayPal Payment Pro como pasarela de pago. Anteriormente, para pedidos con varias facturas, la aplicación aplicaba todo el impuesto de ese pedido para la cancelación parcial de la factura en la nota de abono.
- La aplicación ya no crea interbloqueos de base de datos aleatorios al enviar nuevos correos electrónicos de pedido a los clientes. Anteriormente, se producían interbloqueos porque la aplicación guardaba todo el objeto y sus objetos relacionados en lugar de columnas SQL actualizadas. La aplicación mostró este tipo de error:
SQLSTATE[40001]: Serialization failure: 1213 Deadlock found when trying to get lock; try restarting transaction
. GitHub-31090
- La página de detalles de pedido de tienda ahora muestra la cantidad de producto enviada correctamente. Anteriormente, las cantidades de productos eran incorrectas porque la plantilla de la página Envío de pedidos procesaba Cantidad enviada como
int
. Esto se cambió afloat
.
- La aplicación ya no envía copias por correo electrónico de una factura de pedido cuando el botón Enviar copia por correo electrónico de la factura está desmarcado. Anteriormente, la aplicación enviaba un correo electrónico a Cliente y Enviar copia del correo electrónico de factura a. GitHub-28511
- La aplicación ya no crea entradas de direcciones duplicadas para una cuenta de cliente al crear un nuevo pedido desde el administrador para un cliente existente. Se cambió el nombre de la casilla de verificación Guardar en la libreta de direcciones a Agregar a la libreta de direcciones y ahora está desactivada de forma predeterminada en el administrador.
- La aplicación ahora usa el logotipo que se ha cargado en la configuración de Logotipo para la vista impresa del HTML cuando los compradores imprimen un pedido desde su cuenta. Anteriormente, la aplicación mostraba el logotipo de LUMA en lugar del logotipo cargado.
- El localizador de artículos de la tienda ahora funciona como se espera cuando el número de artículos supera los 20. Anteriormente, el localizador tenía en cuenta productos secundarios y el recuento total era incorrecto.
- La aplicación muestra ahora los símbolos de divisa correctos para los valores de subtotal y envío y gestión en las cuadrículas de la página Pedido y de la página Nota de Abono. GitHub-22662
- Los administradores que utilizan Safari ahora pueden añadir correctamente un producto a un pedido del administrador. Anteriormente, cuando el administrador hacía clic en el botón Agregar productos seleccionados al pedido, la aplicación mostraba el icono de carga giratoria y la página se bloqueaba.
Regla de ventas
- La aplicación ahora aplica las reglas de precio del carro de compras con Descuento de cantidad máxima aplicado a o Paso de cantidad de descuento (comprar X) condiciones correctamente cuando se aplican varias reglas de precio del carro de compras. Anteriormente, si se aplicaba una regla de precio del carro de compras con Descuento de cantidad máxima a o Paso de cantidad de descuento (comprar X) después de otra regla de precio del carro de compras, el descuento total se reducía al valor configurado para Descuento de cantidad máxima se aplica a o Paso de cantidad de descuento (comprar X) veces el precio del producto.
- El informe Coupon ahora refleja con precisión la actividad de los cupones en implementaciones en las que se implementa una base de datos dividida.
- Las reglas de precios del carro de compras que contienen la condición Categoría IS NOT se aplican ahora según lo esperado a productos simples o secundarios configurables que no están asignados a una categoría pero cuyos productos principales están asignados.
- La consulta de GraphQL
cart
ahora devuelve el total general correcto para el paso de facturación de un carro de compras cuando se aplica un cupón al pedido.
Buscar
- La página de categoría ya no contiene estos identificadores de elemento de HTML duplicados:
modes-label
,mode-list
,toolbar-amount
,sorter
,limiter
.
- Los resultados parciales de búsqueda de palabras ya no incluyen coincidencias inesperadas o irrelevantes, y las búsquedas producen resultados coherentes tanto en la tienda como en el administrador. La aplicación ahora utiliza un analizador diferente sin un simulador para las búsquedas parciales de palabras. Anteriormente, los resultados de búsqueda mostraban productos que no incluían palabras clave de búsqueda. (Anteriormente, el analizador predeterminado incluía un analizador y, como se utilizó el mismo analizador en el momento de la búsqueda para la búsqueda de palabras parciales, el resultado de la búsqueda podría producir coincidencias inesperadas o irrelevantes).
- La búsqueda rápida ahora devuelve resultados si la consulta de búsqueda tiene varias palabras y el nombre del producto está configurado como no se puede buscar. Anteriormente, si el nombre del producto estaba configurado como no se puede buscar, la aplicación arrojaba una excepción de consulta en consultas de búsqueda con varias palabras.
- Los resultados de búsqueda ahora incluyen el atributo
weight
como se espera cuando se configura como un atributo en el que se puede buscar.
- La aplicación ya no genera un error cuando se ve una página de categoría vacía con el Elasticsearch habilitado. En su lugar, procesa la página según lo esperado y muestra un mensaje informativo. Anteriormente, un índice de texto completo vacío activaba una excepción en una página de categoría.
- La función de autocompletar el campo de búsqueda ahora funciona como se espera si un comprador hace clic fuera del campo de búsqueda después de comenzar su búsqueda. Las sugerencias de autocompletar ahora vuelven a aparecer cuando el comprador reanuda la escritura. Anteriormente, la aplicación no mostraba sugerencias de autocompletar y al hacer clic en el cuadro de búsqueda no se volvían a ver las sugerencias de búsqueda (aunque sí se volvían a escribir cartas adicionales).
- Al buscar un producto en función de su SKU total o parcial en Búsqueda avanzada, ahora se devuelve el producto esperado.
- Los filtros de navegación por capas ahora muestran recuentos de productos precisos. Anteriormente, los valores de recuento de productos del Elasticsearch no se filtraban con permisos de catálogo.
- El Elasticsearch ya no genera un error cuando el parámetro de página de URL de categoría supera la paginación. GitHub-23843
- Ahora puede agregar un asignador de campos de Elasticsearch personalizado a
Magento\Elasticsearch\Model\Adapter\FieldMapper\Product\FieldProvider\FieldName\Resolver\CompositeResolver
.
- Los desarrolladores ahora pueden cambiar las asignaciones de Elasticsearch. Anteriormente, las plantillas dinámicas enviadas al servidor de Elasticsearch en las asignaciones predeterminadas estaban codificadas, lo que impedía a los desarrolladores indexar en Elasticsearch cualquier dato adicional asociado a un módulo personalizado.
- Los campos de búsqueda (minibúsqueda de formularios) ahora funcionan según lo esperado cuando las sugerencias de búsqueda están desactivadas.
Envío
- La aplicación ahora actualiza el precio de envío como se espera cuando un comprador vuelve a la página del carro de compras después de eliminar un producto durante el cierre de compra con varias direcciones.
- La solicitud ahora muestra el precio de envío ajustado correcto cuando algunos artículos del carro cumplen los requisitos para el envío gratuito. Anteriormente, cuando un subconjunto de artículos del carro de compras cumplía los requisitos para el envío gratuito, la aplicación no ajustaba el precio de envío y mostraba el precio de envío completo al comprador.
- Los usuarios administradores restringidos a un sitio web específico ahora pueden crear un envío para un pedido realizado en el mismo sitio web. Anteriormente, la aplicación arrojaba esta excepción cuando un usuario administrador que no tenía permiso para acceder a la vista de tienda predeterminada intentaba enviar un pedido colocado en una vista de tienda a la que el usuario administrador tenía acceso:
Notice: Undefined offset: 1 in /app/code/Magento/Catalog/Model/Product/Attribute/Backend/GroupPrice/AbstractGroupPrice.php on line 293
.
- La aplicación ahora tiene en cuenta los descuentos pertinentes en la regla de precio de carro de compras al determinar si un pedido cumple las condiciones para el envío gratuito de DHL.
- Las etiquetas de envío ahora utilizan la divisa base como se espera en lugar de la divisa de pedido en tiendas que admiten varias divisas cuando se realiza un pedido en una divisa no base. GitHub-31891
- La aplicación ahora muestra el subtotal de pedido correcto cuando un comprador vuelve a la página del carro de compras durante el cierre de compra después de salir de la página de envío múltiple. GitHub-31889
- La edición de la información de facturación durante la creación del pedido de administración ya no cambia la información de envío para los clientes con diferentes direcciones de envío y facturación predeterminadas. GitHub-31786
- La aplicación ya no desmarca la casilla de verificación Anexar comentarios cuando un comprador hace clic en Obtener métodos y tarifas de envío y selecciona un método de envío al crear un pedido desde el administrador.
- Los compradores ahora pueden usar el botón Atrás del navegador para volver a la página Seleccionar método de envío mientras retiran un pedido con varias direcciones. Anteriormente, la aplicación mostraba una página Seleccionar método de envío dañada. GitHub-30268
- La cantidad de productos ahora permanece sin cambios según lo esperado después de que un comprador cambie la cantidad en la página Enviar a varias direcciones y haga clic en el botón Atrás del explorador.
- Los cargos por método de envío de tarifa única ya no se convierten en cero cuando se aplica una regla de precio de carro de compras durante el cierre de compra. GitHub-21832
- La aplicación ya no genera un error cuando un comerciante intenta enviar un pedido mediante DHL cuando la casilla de verificación Crear etiqueta de envío está habilitada y el nombre del producto contiene caracteres Unicode. Anteriormente, la aplicación mostraba este error al solicitar la creación de etiquetas:
The response is in wrong format
.
- Puede realizar correctamente un pedido del administrador en una implementación de varios sitios en la que
United States
está habilitado en un sitio web yDisable all countries
está habilitado como el ámbito predeterminado en el otro sitio web. Anteriormente, la aplicación no realizó el pedido y mostró este error:Please check the shipping address information. "regionId" is required. Enter and try again
.
Almacenar
- La aplicación ya no trata una cadena de
0
como un valor vacío al mostrar una página principal de la tienda. Anteriormente, la aplicación trataba un valor entero al principio de una ruta de solicitud como un ID de almacén, lo que tenía efectos no deseados en la SEO.
- Los complementos para
\Magento\Framework\App\ActionInterface
enlib/internal/Magento/Framework/App/Action/Plugin
se han quitado para seguir la guía de que los complementos se deben usar para personalizar el comportamiento de un módulo desde otro módulo. GitHub-28050
- La aplicación ahora muestra este mensaje cuando intenta seleccionar
Website
como predeterminado cuandoStore View
está deshabilitado durante la creación del sitio web:Please enable your Store View before using this Web Site as Default
. Anteriormente, el sitio web se bloqueaba y la aplicación no mostraba una alerta.
Impuestos
- La aplicación ahora tiene en cuenta los impuestos ocultos durante la validación del importe mínimo del pedido.
- La aplicación ahora muestra Impuestos fijos sobre productos (FPT), tal como se espera cuando un comprador regresa a su carro de compras y continúa con el cierre de compra después de agregar productos agrupados al carro de compras. GitHub-30250
- La aplicación ahora rellena previamente los campos de entrada Número de IVA para las direcciones de facturación y envío de la sección Información de dirección de la página de nuevo pedido del administrador con números de IVA guardados cuando un administrador crea un pedido para un cliente existente. GitHub-31846
- La aplicación ahora muestra el campo Número de IVA en la página de registro del cliente cuando
customer/create_account/vat_frontend_visibility
está habilitado.
Prueba
- Los entornos de prueba se han actualizado a Redis 6.0.12.
- Se eliminó
CacheCleaner::cleanAll();
de las pruebas de integración.
- Se ha añadido una prueba para este escenario: Los usuarios administradores pueden editar una cuenta de cliente cuando el cliente está suscrito a un boletín informativo en cola.
- Se eliminó el comando
cache:flush
de las pruebas para mejorar el tiempo de ejecución de los módulosCatalog
,CatalogUrlRewrite
yLoginAsCustomer
.
- Se eliminaron los parámetros redundantes y se cambió el POST a la GET donde era necesario en
\Magento\Logging\Model\ProcessorTest::testLoggingProcessorLogsActionShipping
.
Tema
- La página de inicio de sesión del cliente ya no muestra este mensaje cuando la configuración de Mover código JS al final de la página (Almacenar > Configuraciones > Avance > Desarrollador > Configuración de JavaScript) y las cookies están habilitadas:
The store will not work correctly in the case when cookies are disabled
.
- Los vínculos de cuenta en los encabezados ahora siguen los estándares WCAG. Anteriormente, los vínculos de cuenta en los encabezados contenían ID duplicados, lo que provocaba que fallara la validación de WCAG.
- La aplicación ahora prioriza la configuración de la tienda para una imagen de logotipo de tienda sobre la configuración del diseño. Anteriormente, el tamaño de las imágenes de logotipo era fijo y no variaba según el almacén.
- La aplicación ahora muestra los elementos de página de forma coherente en las páginas de tienda que utilizan temáticas de Magento Open Source estándar. Anteriormente, no todos los estilos se aplicaban en la temática en blanco, por lo que no todos los elementos de página se mostraban en las páginas que utilizaban esta temática. (Por ejemplo, no había ningún icono de lupa en el campo de búsqueda de la página Mis pedidos).
Traducción y configuraciones regionales
- Los corchetes que se agregan a las cadenas ya no se escapan cuando se configura la traducción en línea. Anteriormente, el método
escapeHtmlAttr
convertía los corchetes en códigos de entidad de HTML.
- Las frases que no se pueden traducir en el administrador ahora se pueden traducir. (Esta solicitud de extracción contribuye a los esfuerzos continuos para que todas las cadenas de administrador sean localizables). GitHub-11175
- Ahora se pueden traducir las cadenas de texto de la plantilla que se usan para administrar los métodos de pago almacenados (Mi cuenta > Métodos de pago almacenados ).
- Solicite los correos electrónicos enviados desde el administrador ahora usan la configuración regional del almacén, no la configuración regional asociada a la cuenta del administrador.
IU
- El pie de página del administrador ahora muestra la versión del producto correcta.
- La paginación para orígenes está ahora presente como se espera durante la creación del envío de administración.
- El filtro de cuadrícula de producto ahora funciona correctamente cuando utiliza atributos de fecha personalizados para filtrar productos y la configuración regional del usuario administrador es
en_GB
.
- Los gestos de pellizco y zoom ahora funcionan según lo esperado en la lupa de la galería de imágenes de la página de productos en dispositivos iOS.
- La paginación de los resultados de búsqueda de la cuadrícula de productos de administración ahora comienza en la página uno para cada búsqueda según lo esperado.
- Se han resuelto las anomalías con la visualización del carro de compras al ampliar o reducir. Anteriormente, los elementos de visualización se superponían al ampliar esta página.
- La página de revisión de pedidos que se muestra durante el cierre de compra con PayPal Express Checkout ahora se carga correctamente. Anteriormente, la plantilla contenía el botón Actualizar método de entrega que no se usaba y que el script solo ocultaba parcialmente durante la representación de la página.
- Las estrellas de clasificación y el texto de revisión de la sección de revisiones del cliente de la página del producto ahora se separan correctamente cuando hay nombres de clasificación largos.
- Las opciones ahora se muestran según lo esperado en la lista desplegable Acciones de las páginas Archivar Facturas, Envíos y Notas de Abono.
- La aplicación ahora muestra un valor de tiempo correcto cuando la opción
datetime
componentetimeOnly
está establecida en yes. GitHub-23157
- Ahora puede quitar una actualización de diseño después de crear un widget nuevo en Administración Contenido > Widgets. GitHub-29936
- El botón Eliminar actualización de diseño ahora funciona como se espera en cualquier diseño que haya agregado desde Administración Contenido > Widgets. Anteriormente, este botón no funcionaba en ningún diseño distinto del primero seleccionado al agregar varios diseños. GitHub-30286
- La aplicación utiliza ahora el título de página definido en el archivo de diseño como título de la página del explorador para el archivo de edición de cuentas de cliente. Anteriormente, la acción del controlador
Magento\Customer\Controller\Account\Edit
aplicaba el valor del título de página aAccount Information
. GitHub-30724
-
Se han añadido a estas páginas las casillas de verificación que permiten a los comerciantes alternar entre mostrar y ocultar contraseñas:
- Inicio de sesión del cliente
- Registro de cliente
- Edición de clientes (sección Cambio de contraseña)
- El cliente estableció la nueva contraseña GitHub-31557
- Se ha eliminado un encabezado redundante en las celdas de la cuadrícula que aparecía cuando un administrador añadía un producto a un conjunto de productos agrupado después de cambiar el conjunto de atributos. GitHub-30911
- La aplicación ahora muestra un filtro
DateRange
en el área de Inicio de sesión de la página Cliente > Inicio de sesión. Anteriormente, la aplicación mostraba un filtroText
. GitHub-30328
- JavaScript se ha eliminado de los archivos de plantilla y se ha movido a archivos independientes para reducir los problemas de procesamiento en las páginas de administración. Anteriormente, las páginas de administración no se representaban correctamente en implementaciones en las que se había habilitado la minificación de HTML. La aplicación mostró este error:
An error has happened during application run. See exception log for details
. GitHub-32454
- El widget
dropdownDialog
ahora carga solamente los fragmentosjquery-ui
arrastrables y redimensionables que necesita. Anteriormente, cargaba grandes cantidades de código innecesario, lo que inflaba el tiempo de carga y reducía el rendimiento. GitHub-32810
Reescrituras de URL
- Las reescrituras de URL de productos para un sitio web específico en una implementación de varios sitios ahora se generan tal como se espera después de que los productos se asignen a un sitio web mediante una actualización masiva.
- La aplicación ahora genera correctamente la ruta de URL para las categorías secundarias cuando la casilla de verificación Usar valor predeterminado para la clave URL está habilitada para la categoría principal. Anteriormente, al mover una categoría en la jerarquía, se producía un valor
url_path
incorrecto al usar claves de URL diferentes en una implementación de vista de varias tiendas. GitHub-16202
- La aplicación ahora actualiza
url_path
de la categoría asignada a todo el ámbito de almacén cuando se mueve una categoría en la jerarquía de categorías. Anteriormente, al mover una categoría en la jerarquía, se producía un(a)url_path
incorrecto.
- Las redirecciones de URL creadas desde el administrador mediante una URL personalizada ahora funcionan correctamente. Anteriormente, GraphQL almacenaba en caché la respuesta de una consulta de GraphQL
urlResolver
y devolvía el valor antiguo después de actualizar la reescritura de la URL.
- Las reescrituras de URL del producto ahora se eliminan según lo esperado cuando se elimina un producto de un sitio web. GitHub-24184
- Se agregó una referencia
main_table
astore_id
en la funciónaddStoreFilter
de la colecciónapp/code/Magento/UrlRewrite/Model/ResourceModel/UrlRewriteCollection.php
. Anteriormente, se producían problemas cada vez que se agregaba un(a)join
a la colección en una tabla que también contiene una columnastore_id
. GitHub-31853
- El extremo REST
PUT /V1/products/:sku
ahora vuelve a generar las reescrituras de URL del producto según lo esperado. Anteriormente, el extremo generaba de nuevo los valores de productourl_key
, pero no reescribía las direcciones URL. GitHub-30316
Usuario
- Ahora puede guardar una nueva función de usuario efectiva (Administrador Sistema > Permisos > Funciones de usuario) con todo el árbol
Catalog
seleccionado excluyendoEdit Product Design
(Catálogo > Inventario > Productos > Editar diseño de producto). Anteriormente, la aplicación no guardó los cambios de producto realizados por un usuario con esta función y mostraba este error:Not allowed to edit the product's design attributes
. GitHub-31973
- La aplicación ahora utiliza la plantilla de correo electrónico personalizada correcta al generar correos electrónicos para los nuevos usuarios administradores. Anteriormente, la aplicación utilizaba la plantilla predeterminada antigua, que omitía el nombre y los apellidos del administrador.
- La aplicación ahora utiliza la plantilla de correo electrónico correcta al enviar correos electrónicos a los nuevos usuarios. Anteriormente, la aplicación utilizaba la plantilla predeterminada incluso cuando se seleccionaba una plantilla personalizada.
VersionCMS
- La aplicación ahora aplica la temática correcta a una página de CMS después de cambiar su diseño. Anteriormente, la aplicación cambiaba el tema asignado a Luma después de guardar los cambios de diseño, independientemente del tema asignado a la página.
Vídeo
- Los vídeos ya están disponibles en la galería de productos como se espera cuando se habilita y utiliza el agrupamiento avanzado de JavaScript. GitHub-32501
- Los vídeos de YouTube para productos simples que pertenecen a un producto configurable ahora funcionan según lo esperado. Anteriormente, las imágenes se ordenaban por ID en lugar de por posición. En consecuencia, algunos videos fueron tratados como imágenes. GitHub-29690
Marco de API web
- La API de catálogo ahora actualiza correctamente los valores de opciones personalizadas de un producto añadiendo nuevos valores y eliminando valores antiguos. Anteriormente, la API no eliminaba los valores antiguos.
- El POST
/V1/guest-carts/:cartId/billing-address
ahora devuelve el identificador de dirección como un número entero, no como una cadena.
Widget
- Un administrador ahora puede eliminar todas las actualizaciones de diseño de un widget. Anteriormente, cuando un widget tenía varias actualizaciones de diseño, un administrador solo podía eliminar la primera.
- Al hacer clic en el botón Agregar al carro en el widget del producto, ya no se volverá a cargar la página. Anteriormente, al hacer clic en el botón Agregar al carro de un widget de productos, se volvía a cargar una página actual antes de que se agregara el producto al carro de compras.
Lista de deseos
- La aplicación ya no restablece los ajustes de configuración de un producto configurable cuando hace clic en el botón Editar elemento para el producto de una lista de artículos deseados. GitHub-32119
- La aplicación ahora muestra el precio de producto correcto cuando actualiza un producto con una opción de archivo personalizable en la lista de deseos. Anteriormente, la aplicación mostraba el precio de producto incorrecto y no mostraba un vínculo al archivo cargado.
- El recuento total de productos en una lista de deseos para un cliente con varias listas de deseos ahora coincide con el número de elementos en la lista de deseos. Anteriormente, el recuento total de productos incluía productos sin existencias.
- La aplicación ahora elimina un producto de una lista de artículos deseados después de añadirlo a un pedido. GitHub-30260
- Los compradores ahora pueden añadir productos relacionados a su carro de compras desde una lista de deseos. Anteriormente, la aplicación solo agregaba el producto configurable, no el producto configurable y sus productos relacionados, cuando un comprador hacía clic en el vínculo Seleccionar todo de la sección Productos relacionados. GitHub-32274
Problemas conocidos
Problema: Error de JavaScript cuando reCAPTCHA está deshabilitado. Si reCAPTCHA está deshabilitado para la desprotección, esta continúa, pero la aplicación muestra un error Uncaught TypeError
en el registro de la consola. Este problema se solucionará en una versión posterior.
Problema: Error de la directiva de seguridad de contenido. La tienda muestra el siguiente error en el registro de la consola: The Content-Security-Policy directive frame-ancestors does not support the source expression unsafe-inline
. El rendimiento de la tienda no se ve afectado.
Problema: Anomalías en la visualización de los importes de las tarjetas de regalo con crédito PayPal. Cuando se activa el crédito de PayPal y se configuran varios importes de tarjetas regalo, si un comprador cambia el importe por el valor de una tarjeta regalo, la tienda no actualiza el importe para los pagos a plazos. Se incluirá una corrección para este problema en Adobe Commerce 2.4.4 y en el Magento Open Source 2.4.4.
Problema: El botón Agregar al pedido no funciona para los productos agregados al carro de compras por SKU. la aplicación muestra este mensaje de error cuando hace clic en el botón Agregar al pedido después de agregar productos al pedido por SKU: An error has happened during application run
. Los productos no se añaden al carro de compras. Solución alternativa: use la característica Agregar productos.