Elementos destacados de Magento Open Source 2.4.6
Busque los siguientes aspectos destacados en esta versión.
Mejoras de seguridad
Esta versión incluye ocho correcciones de seguridad y mejoras de seguridad de la plataforma.
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, incluidas, entre otras, las siguientes:
- INCLUSIÓN EN LA LISTA DE PERMITIDOS IP
- autenticación de doble factor
- uso de una VPN
- uso de una ubicación única en lugar de
/admin
- buena higiene de las contraseñas
Consulte Boletín de seguridad de Adobe para conocer las últimas novedades sobre 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:
-
Se han corregido las lagunas en los registros de acciones de administración con una auditoría más específica de las acciones dentro de las vistas de cuadrícula, acciones masivas y exportaciones.
-
La validación de reCAPTCHA ya no falla durante el cierre de compra cuando se producen errores inesperados durante el procesamiento del pago. GitHub-35093
-
Nueva configuración del sistema para requerir confirmación por correo electrónico cuando un usuario administrador cambia su correo electrónico. Para reducir la vulnerabilidad del sitio, se agregó una nueva configuración del sistema (deshabilitada de forma predeterminada) para requerir confirmación por correo electrónico cuando un usuario administrador cambia su correo electrónico: Stores > Settings:Configuration > Customers > Customer Configuration > Account Information Options > Require email confirmation if an email has been changed. Cuando esta opción está habilitada, la aplicación solicitará una confirmación por correo electrónico cada vez que el usuario administrador cambie su dirección de correo electrónico. El siguiente módulo se ve afectado por este cambio:
Magento_Customer
.
Mejoras de Platform
Magento Open Source 2.4.6 presenta soporte para PHP 8.2. PHP 8.1 sigue siendo totalmente compatible.
La compatibilidad con PHP 7.4 se ha eliminado de esta versión. No se puede ejecutar Magento Open Source 2.4.6 en PHP 7.4.
Magento Open Source ahora es compatible con:
-
Composer 2.2.x. Se ha eliminado Composer 1.x.
-
Redis 7.0.x Aunque la compatibilidad con Redis 6.2 se mantiene, se recomienda implementar esta versión con Redis 7.0.x porque se espera que Redis 6.2 llegue al final de su vida útil en 2024.
-
OpenSearch ahora se admite como motor de búsqueda predeterminado para implementaciones locales y en la nube de Magento Open Source. Es compatible como motor de búsqueda independiente para Magento Open Source. Esta versión es compatible con OpenSearch v2.x y se ha probado con OpenSearch 2.5. Aunque sigue siendo compatible con OpenSearch 1.x, recomendamos utilizar esta versión con OpenSearch 2.x. Puede instalar y ejecutar Magento Open Source y Magento Open Source 2.4.6 con OpenSearch 2.x tanto en la nube como en las instalaciones Requisitos previos del motor de búsqueda.
-
Elasticsearch 8.x. Ver Actualizar Elasticsearch.
-
MariaDB 10.6 (versión LTS). Esta versión sigue siendo compatible con MariaDB 10.4, pero se recomienda actualizar a MariaDB 10.6.
Otras actualizaciones y reemplazos
-
El esquema DHL se ha migrado de la versión 6.2 a la versión 10.0.
-
Las bibliotecas de JavaScript obsoletas se han actualizado a sus versiones más recientes y se han eliminado las dependencias obsoletas. Estos cambios son compatibles con versiones anteriores.
-
La compatibilidad con PHP 7.4 ha sido eliminada de las bases de código Commerce y Magento Open Source.
-
Las dependencias de Symfony se han actualizado a la nueva versión de LTS. Las dependencias incluyen:
friendsofphp/php-cs-fixer
symfony/console
symfony/event-dispatcher
symfony/finder
symfony/process
web-token/jwt-framework
-
jquery-migrate
se ha eliminado de las bases de código de Commerce y Magento Open Source. GitHub-21406 -
Se ha actualizado la biblioteca
jQuery/fileUpload
a la versión 10.32. -
Los componentes del marco Zend (ZF1) que han llegado al final de su vida útil se han eliminado de la base de código. Ver resaltados de cambios incompatibles con versiones anteriores.
-
Las dependencias de Laminas se han actualizado para admitir PHP 8.2.
-
Se ha quitado el complemento Compositor
laminas/laminas-dependency-plugin
. GitHub-36515 -
Reemplazó a
Zend_Filter
conlaminas/laminas-filter
. -
Se ha actualizado
web-token/jwt-framework
a la versión 3.0.5. (versión más reciente) -
Se actualizó
allure-framework/allure-phpunit
a la versión 2.x. -
Se ha actualizado la biblioteca
Chart-js
a la versión 3.9.1
Actualizaciones de accesibilidad
El enfoque de esta versión ha sido crear una experiencia de tienda en Venia (PWA) que sea más perceptible, operable, comprensible y robusta. Estas mejoras incluyen:
- La etiqueta de texto visual para el botón Sign in coincide ahora con su nombre accesible. (Una práctica recomendada recomienda que el nombre accesible de un elemento de la interfaz de usuario comience con el texto de etiqueta visible).
- Se han agregado nombres descriptivos accesibles a los botones de toda la tienda.
- Se han agregado etiquetas descriptivas verbales a las casillas de verificación Has Video en los filtros de búsqueda.
- Los usuarios solo de teclado ahora pueden acceder a todas las funciones de la página en la tienda. Anteriormente, los compradores no podían acceder a los vínculos de subnavegación pulsando únicamente las teclas.
Integración de Adobe Commerce con Adobe IMS
Los siguientes módulos de Adobe IMS se han desunido del código principal de Adobe Commerce y Magento Open Source y ahora se empaquetan como un metapaquete independiente:
adobe-ims
adobe-ims-api
admin-adobe-ims
La nueva versión adobe-ims-metapackage
v2.2.0 está integrada con Adobe Commerce 2.4.6 y Magento Open Source 2.4.6. No se cambió ninguna funcionalidad en esta versión.
Braintree
- El botón Pay Later y los titulares (mensajes) de Italia y España se han habilitado para Braintree.
- Se han activado los mensajes PayAfter con PayPal Vault.
- Se agregaron los enlaces web Protección contra el fraude y ACH. El vínculo web de Protección contra el fraude se activa cuando se ha tomado una decisión sobre el riesgo en Braintree. El enlace web ACH se activa cuando el estado de un pago ACH se actualiza a
settled
osettlement decline
.
- Se ha añadido el enlace web LPM (métodos de pago locales).
GraphQL
Las mejoras de rendimiento de GraphQL incluyen:
Se mejoró el tiempo de respuesta al consultar categorías con permisos de categoría habilitados. Los tiempos de respuesta han mejorado al consultar productos en categorías para las que los permisos de categoría están habilitados y que contienen muchos grupos de clientes o catálogos compartidos. Los cambios de código que admiten esta mejora de rendimiento incluyen:
- Se ha optimizado la operación de resolución de GraphQL.
- El proveedor de datos ya no vuelve a establecer los datos en caché en tiempo de ejecución para cada nuevo producto que se procese, lo que ha mejorado el rendimiento.
- El procesamiento de permisos del producto se ha optimizado en la resolución de GraphQL. Los permisos de producto ahora se aplican a colecciones de productos en lugar de ahora por producto.
- Permisos optimizados leídos en catálogos compartidos en la mutación
addProductsToCart
. - Los permisos del producto se han optimizado con fragmentos en línea del producto.
Rendimiento optimizado de la representación del árbol de categorías. La consulta categoryList
se ha optimizado para admitir clientes con un gran número de categorías. Los comerciantes que utilicen esta consulta para buscar más de 1500 categorías con hasta cinco niveles de subcategorías anidadas notarán una mejora del rendimiento. La carga de elementos secundarios de categoría mediante la refactorización del código se ha mejorado eliminando las llamadas a métodos innecesarias, mejorando el almacenamiento en caché del árbol de categorías y cargando los datos de categoría de forma recursiva. Los cambios de código que admiten esta mejora de rendimiento incluyen:
- Se ha mejorado la captura de metadatos de atributos personalizados para modelos de categoría.
- Se mejoró la captura del ID de categoría y se redujeron las llamadas a
getChildren
. - Se mejoró la carga de elementos secundarios de categoría.
Tiempos de respuesta de consulta de operaciones de carro de compras en lotes reducidos. Las mutaciones de productos añadidos se han optimizado para mejorar el rendimiento de las consultas al añadir hasta 500 productos simples y configurables. Los productos agrupados no se ven afectados. Las mutaciones optimizadas incluyen addProductsToCart
, addConfigurableProductsToCart
, addDownloadableProductsToCart
, addSimpleProductsToCart
, addVirtualProductsToCart
, addWishlistItemsToCart
y updateCartItems
.
la consulta del cliente ahora admite la ordenación de pedidos. El objeto de salida orders
de la consulta customer
contiene ahora un campo de ordenación. Ahora puede ordenar los pedidos por número de orden o fecha de creación y en orden ascendente o descendente.
Nuevas mutaciones:
deleteCustomer
Page Builder
Page Builder 1.7.3 es compatible con Magento Open Source 2.4.6.
PWA Studio
PWA Studio v.13.0.x es compatible con Magento Open Source 2.4.6. Incluye varias mejoras para mejorar la accesibilidad. Para obtener información sobre la corrección de errores, consulte Versiones de PWA Studio. Consulte Compatibilidad de versiones para obtener una lista de versiones de PWA Studio y sus versiones principales de Adobe Commerce compatibles.
Problema conocido
Problema: New Relic no es compatible actualmente con PHP 8.2. Las implementaciones que ejecuten New Relic pueden ejecutar Adobe Commerce 2.4.6 en PHP 8.1 pero no en PHP 8.2. Solución alternativa: Ejecute Adobe Commerce 2.4.6 en PHP 8.1 hasta que se publique una nueva versión de New Relic compatible con PHP 8.2. Se espera esta versión para el verano de 2023.
Problemas solucionados
Hemos corregido cientos de problemas en el código principal de Magento Open Source 2.4.6.
Instalación, actualización e implementación
- La implementación de contenido estático ya no agota el tiempo de espera o falla durante las implementaciones estándar o compactas con varias configuraciones regionales y sitios web.
- La estrategia de compactación ya no causa una referencia no válida a un dominio externo al ejecutar la implementación de contenido estático (
bin/magento set:static-content:deploy -f --strategy compact
).
- La ejecución de
bin/magento setup:di:compile -vvv
(o con las opciones-v
o-vv
) ahora devuelve un mensaje informativo en caso de error. GitHub-35391
- Magento Open Source ya no genera la siguiente excepción cuando se ejecuta el comando
bin/magento setup:upgrade
en una implementación que ya ejecuta la herramienta de migración de datos:PHP Fatal error: Declaration of Migration\Logger\Logger::addRecord(int $level, string $message, array $context = []): bool must be compatible with Monolog\Logger::addRecord(int $level, string $message, array $context = [], ?Monolog\DateTimeImmutable $datetime = null): bool in /var/www/html/vendor/magento/data-migration-tool/src/Migration/Logger/Logger.php on line 34
. GitHub-35604
- El comando
bin/magento setup:db:status
ya no falla en entornos que ejecutan MySQL 8.0.29. Anteriormente, la salida del comando indicaba erróneamente que el esquema declarativo estaba obsoleto. GitHub-35671
- El comando
composer install
ya no sobrescribe.gitignore
archivos. GitHub-32888
- Ya no se produce el siguiente error al ejecutar
bin/magento sampledata:remove
para eliminar los datos de ejemplo después de la actualización en Alpine Linux:Undefined constant "MagentoHackathon\Composer\Magento\Deploystrategy\GLOB_BRACE
. GitHub-36062
bin/magento setup:upgrade
ahora se ejecuta correctamente después de ejecutarcomposer install --no-dev
por primera vez. GitHub-36351
- Las entradas de seguimiento de pila de excepciones y excepciones ahora se incluyen en
var/log/exception.log
. GitHub-36054
Magento Open Source ahora genera un error de validación de parámetros cuando se utiliza la línea de comandos para establecer una conexión de Redis sin contraseña.
Accesibilidad
- Los botones Proceed to Checkout, Review Order y Place Order del flujo de trabajo de cierre de compra ahora funcionan según lo esperado con la entrada de teclado.
- La indicación visual del enfoque en los botones al usar TAB o SHIFT + TAB para navegar por los controles de página ahora funciona según lo esperado.
Lectores de pantalla
- El lector de pantalla de la página del historial de pedidos ahora lee la descripción de imagen correcta.
Los lectores de pantalla ahora anuncian:
- Se encontró un total de elementos en los resultados de búsqueda según lo esperado
- Nombre de usuario que inició sesión cuando un usuario inicia sesión correctamente usando los controles de teclado
- El encabezado de página de resultados de búsqueda de productos ahora lee el valor correcto para el elemento
<title>
- Si los campos de entrada son obligatorios
- Corregir el estado actual de los elementos de acordeón (contraídos y expandidos)
- Cuando el contenido de la página se ha actualizado después de que el usuario haya hecho clic en el botón Create an account
Paquete de productos
- La actualización del producto del paquete a través de la API para una vista de tienda específica ahora no anula los datos de otras vistas de tienda del mismo producto del paquete. Anteriormente, los títulos de opciones de producto del paquete se sobrescribían con el primer título de opción para otras vistas de tienda.
- Los productos agrupados ahora se pueden filtrar correctamente desde Administración Catalog > Products al utilizar una configuración regional en neerlandés. Anteriormente, Magento Open Source mostraba este error cuando intentaba filtrar por
Type: Bundle Product
:Something went wrong with processing the default view and we have restored the filter to its original state
. GitHub-35704
- La cuadrícula de productos ya no genera una excepción cuando los productos agrupados tienen un precio especial que supera los 1000. Anteriormente, cuando buscaba el producto por SKU o navegaba a Catalog > Products, Magento Open Source arrojaba este error:
Non Numeric value encountered
. GitHub-36284)
- Las columnas de los PDF de notas de abono y facturas de los pedidos que contienen una combinación de paquete y productos simples ahora se representan correctamente. Anteriormente, las columnas estaban distorsionadas o mal alineadas.
- En las consultas de GraphQL que contienen un fragmento
BundleProduct
, el objetoitems.options.product
contiene datos según lo esperado. Anteriormente, el objeto podía ser nulo en algunas circunstancias.
- Las cantidades decimales para las opciones de paquete ahora se representan correctamente cuando Quantity uses decimals está habilitado. Anteriormente, solo se representaba la parte entera de la cantidad, no el componente fraccional. Por ejemplo, una cantidad de 1,5 se representó como 1,0. GitHub-35964
- Las consultas de productos de GraphQL ahora solo devuelven opciones de productos agrupados dentro del ámbito del almacén que se consulta.
- Los productos que no están asignados a categorías pero que son opciones de producto para paquetes o productos agrupados ahora se devuelven en las respuestas cuando la configuración de Allow Category Browsing está habilitada para que el cliente envíe la consulta.
Caché
- La caché de página completa ya no se vacía después de la realización del pedido a menos que el producto solicitado esté agotado. Anteriormente, la caché se depuraba para la categoría cada vez que se creaba un envío.
- Ahora los datos se almacenan en caché correctamente cuando la caché L2 está configurada y los datos remotos se desalojan parcialmente. Anteriormente, después de vaciar únicamente la caché de datos sin hash de esos datos, la nueva caché no se guardaba mientras existían los hash de datos.
- Se corrigieron defectos en
CatalogUrlResolverIdentity
yCmsUrlResolverIdentity
que impedían el almacenamiento en caché. Esto afectó al almacenamiento en caché de consultas de ruta en varias solicitudes.
Carro y cierre de compra
- Los compradores ahora pueden agregar un artículo adicional al carro de compras cuando este contiene la cantidad mínima del producto simple.
- Las llamadas a la API de REST para recuperar datos del carro de compras ahora devuelven los mismos valores
grand_total
ybase_grand_total
cuando la moneda de la tienda y la moneda base son la misma. GitHub-34649
- El valor exportado de Maximum Qty Allowed in Shopping Cart ahora coincide con el valor predeterminado establecido en la configuración de administración.
- Magento Open Source ahora calcula correctamente el total general de los reembolsos de pedidos con un descuento en el envío.
- Google reCAPTCHA ahora funciona según lo esperado para pedidos de tiendas. Anteriormente, Magento Open Source mostraba estos errores cuando no se seleccionaba Google ReCAPTCHA por primera vez antes de que un comprador intentara realizar un pedido por primera vez:
ReCaptcha validation failed, please try again
yNo such cart with id = ID
.
- La actualización de la imagen CAPTCHA ahora respeta la configuración de la administración y no se activa cuando la configuración está desactivada. Anteriormente, la actualización se activaba cada vez que cambiaba el método de pago, independientemente de si la configuración estaba habilitada o deshabilitada. GitHub-34855
- Magento Open Source ahora muestra una ventana emergente de confirmación como se espera antes de redirigir al comprador a la página siguiente cuando cambia la cantidad de productos en la página del carro de compras sin actualizar el carro de compras y luego intenta navegar a la página siguiente.
- Los compradores ahora pueden reducir la cantidad de un producto de su carro de compras después de que se haya reducido en el Administrador. Anteriormente, Magento Open Source arrojaba el siguiente error cuando un comprador intentaba reducir la cantidad de productos:
The requested qty is not available
. GitHub-35780
- Magento Open Source ya no genera un error en la consola de JavaScript cuando la cantidad de productos supera el máximo configurado durante el cierre de compra de envío múltiple. En su lugar, Magento Open Source ahora muestra un mensaje de error informativo. GitHub-36184
- La cantidad de artículos en la página del carro de compras ya no se representa como un número negativo cuando un comprador utiliza la tecla de flecha hacia abajo en el teclado para cambiar la cantidad de productos. GitHub-36299
- Los compradores ya no pueden añadir al carro de compras un producto de una categoría que ahora no está permitida después de cambiar el grupo de clientes al que pertenece el comprador. Magento Open Source ahora comprueba el acceso a los permisos del grupo de clientes para categorías específicas cuando se cambian los ajustes de configuración de los permisos.
- Los carros de compras de los clientes ya no se vacían antes de la creación del pedido del administrador y el contenido del carro de compras ahora se restaura si se cancela o abandona el pedido. Los artículos ahora se eliminan del carro de compras solo después de la creación del pedido. Anteriormente, cada vez que un usuario administrador intentaba crear un pedido en la página Administrar carro de compras, se vaciaba el carro de compras.
- El minicarrito ahora muestra las imágenes de producto correctas después de ejecutar
bin/magento catalog:image:resize
. Anteriormente, todas las imágenes se reemplazaban por la imagen de marcador de posición de producto predeterminada. GitHub-35535
- El cierre de compra ahora se puede completar correctamente cuando la dirección de envío contiene un atributo de extensión. Anteriormente, Magento Open Source arrojó este error:
Object of class Magento\Quote\Api\Data\AddressExtension could not be converted to string
. GitHub-34202
- La mutación
addBundleProductsToCart
ya no agrega productos a una cotización si una opción de producto requerida no tiene valor. GitHub-25676
- Magento Open Source devuelve ahora un mensaje informativo cuando falla una mutación
addProductsToCart
al agregar un producto al carro de compras con permisos insuficientes.
- Magento Open Source ya no genera un error en la página del carro de compras cuando se utiliza el pedido rápido para agregar un producto en una cantidad que supera el inventario disponible.
Regla de precio del carro
- Las opciones de envío gratuito establecidas durante la creación de reglas de la regla de precios del carro de compras ahora se aplican a los pedidos según lo esperado. Anteriormente, las opciones de envío gratuito aplicadas durante la creación de la regla se omitían durante el cierre de compra y no se permitía el envío gratuito cuando se aplicaba la regla. GitHub-35013
- La columna
discount_percent
de la tablasales_order_item
de un producto ahora se rellena según lo esperado con el porcentaje de descuento cuando la cantidad de descuento del artículo no está establecida o es mayor o igual que la cantidad del artículo del pedido. Anteriormente, esta columna no se rellenaba cuando se aplicaba una regla de precio de carro de compras a este producto.
Catálogo
- El widget de lista de productos ya no muestra precios incorrectos o almacenados en caché para un comprador que ha iniciado sesión. El precio mostrado en el widget de página de inicio ahora coincide con la dirección del comprador y se actualiza cuando el comprador actualiza la dirección. Anteriormente, la caché del explorador no actualizaba los precios del producto en la página de inicio en función de las reglas fiscales del grupo de clientes.
- La función de lista Comparar productos ahora funciona correctamente en una implementación de varios sitios web y depende del sitio web.
- Magento Open Source ya no muestra los datos de la página anterior cuando vuelve a cargar una página de detalles del producto. Anteriormente, cuando se volvía a cargar la página de detalles del producto, los datos de la primera pestaña se combinaban con los datos recién cargados durante una división de segundo.
- Ahora, las categorías con subcategorías se pueden expandir en el menú principal en dispositivos móviles según lo esperado. Anteriormente, los compradores no podían abrir ni expandir categorías con subcategorías en implementaciones móviles. GitHub-35329
- Los listados de categorías ahora se actualizan según lo esperado cuando se asigna un producto a un nuevo sitio web o tienda. Anteriormente, el indizador de precios del producto no se marcaba como no válido y, posteriormente, se reactivaba en una ejecución de
cron
según lo esperado. Como resultado, la entrada de precios del producto no aparecía en la tabla de índices de precios y no se mostraba en la nueva tienda o sitio web.
- El recuento de inventario de tienda ahora es preciso cuando la configuración de Display Out of Stock Products está habilitada. GitHub-35899
- La página de categoría ya no está vacía cuando la configuración Allow All Products Per Page está habilitada. GitHub-35900
- La opción de configuración Display Out of Stock Products ahora funciona según lo esperado cuando está habilitada. Anteriormente, todos los productos se mostraban como agotados en la tienda cuando esta opción estaba habilitada en el Administrador. GitHub-35898
- La ordenación de productos por atributos booleanos ahora funciona según lo esperado. GitHub-36390
- Los descuentos de la regla de precio de catálogo ya no se aplican a las opciones de producto personalizadas de precio fijo, sino que solo se aplican al precio original del producto.
- Las reglas de precios de catálogo ahora tienen en cuenta el ámbito seleccionado y se aplican a los productos únicamente para los sitios web para los que el atributo tiene un valor de opción que coincide con la regla. Anteriormente, la regla no tenía en cuenta el ámbito seleccionado en implementaciones de varios sitios. GitHub-36049
- Los atributos de tamaño y color de las opciones de muestra ahora se preseleccionan en la página de detalles del producto cuando un comprador modifica el producto configurable de la página Mi carro de compras. (La versión de jQuery 3.x ahora admite el nombre del widget
swatchRenderer
, que ahora es camel case). Anteriormente, la opción de muestra no estaba preseleccionada.
- Ahora se notifica a los clientes de las caídas de precios de productos cuando el cliente está suscrito a la alerta de caída de precios. Anteriormente, las notificaciones de caída de precios no siempre se enviaban debido al almacenamiento en caché de nivel de aplicación.
- Las reglas de catálogo basadas en SKU con la condición is not one of ahora funcionan según lo esperado.
- Magento Open Source ya no supone erróneamente que una categoría es la categoría principal de otra según la ruta de la categoría. Anteriormente, cuando dos categorías eran adyacentes y un ID de categoría empezaba por el ID de categoría de otra categoría, Adobe Commerce suponía que las categorías tenían la misma categoría principal. GitHub-32464
Productos configurables
- Magento Open Source ya no genera un error cuando un usuario administrador agrega productos manualmente a un producto configurable que ya tiene muchos productos simples asignados. Anteriormente, Magento Open Source mostraba este error:
Something went wrong with processing the default view and we have restored the filter to its original state
.
- Los compradores ya no pueden agregar productos configurables con una cantidad comercializable de 0 al carro de compras en implementaciones con pedidos pendientes deshabilitados. Magento Open Source ahora indica que el producto está agotado. GitHub-35319
- La creación de un nuevo producto mediante la importación de un producto configurable con muchas opciones desde una vista de tienda diferente ahora resulta en una copia exacta del primer producto según lo esperado. Anteriormente, el orden de clasificación de las opciones configurables del nuevo producto era incorrecto y los títulos no se traducían a la configuración regional de la nueva vista de tienda en implementaciones con varias vistas de tienda y configuraciones regionales. GitHub-35200
- Los productos configurables con todos los productos secundarios agotados ahora se muestran como agotados en la tienda.
- Los SKU y los nombres de productos configurables ahora se muestran con precisión. Anteriormente, los nombres y SKU se mostraban como indefinidos después de mover un grupo de atributos sobre el grupo Detalles del producto en Stores > Attribute set. GitHub-36309
Cupones
- Se ha añadido una lógica de validación al flujo de trabajo Administrar códigos de cupones para aplicar la configuración del código de cupones al generar cupones. Anteriormente, la generación de código de cupón ignoraba la configuración Code Length cuando el valor de Coupon Qty era mayor que 2500.
- Los puntos de recompensa ahora se añaden a la cuenta de un cliente como se espera cuando se aplica un cupón de recompensa durante el pago con el método de pago PayPal Express.
- Ahora puede aplicar un código de cupón durante la creación de la solicitud de administración cuando la regla de precio del carro de compras tenga el peso como condición. Anteriormente, los códigos de cupón no se establecían si no se seleccionaban otros campos para el producto. GitHub-36271
- Ahora puede filtrar informes de cupones según varias reglas de precio del carro de compras. GitHub-36272
- Las opciones personalizadas ahora se aplican y se guardan cuando un usuario administrador presiona Enter mientras configura un producto con opciones personalizadas. Anteriormente, podía seleccionar opciones y agregar el producto a un pedido, pero las opciones no se guardaban y se le pedía al usuario administrador que volviera a seleccionar las opciones del producto. GitHub-35284
- Los códigos de cupones ahora se pueden exportar correctamente a Excel XML. Anteriormente, el archivo generado no contenía todos los códigos de cupones seleccionados, sino solo tantos elementos como se seleccionaron en el selector elementos por página.GitHub-36073
cron
- El trabajo cron de
catalog_index_refresh_price
ahora se ejecuta correctamente. Anteriormente, Magento Open Source registraba este error durante la ejecución de cron:report.ERROR: Cron Job catalog_index_refresh_price has an error: SQLSTATE[HY093]: Invalid parameter number: number of bound variables does not match number of tokens
.
Moneda
- Se ha agregado un espacio que falta entre los símbolos de moneda personalizados y los precios a los precios de productos de tienda y administrador. Se han agregado la condición y la expresión regex adecuadas para permitir un NBSP personalizado en los símbolos de moneda. Por ejemplo, IDRx 105.00 se mostraba anteriormente como IDRx105.00.
Correo electrónico
- Magento Open Source ya no envía correos electrónicos duplicados a los clientes después de crear un pedido desde el administrador.
- Los correos electrónicos de órdenes de administrador ya no se envían cuando se deshabilita la configuración de Email order confirmation. GitHub-36256
- Las opciones de imagen ya no se muestran como marcado de HTML en la nota de crédito, la confirmación de pedido y los correos electrónicos de cliente de factura (plantilla predeterminada) para productos con opciones personalizadas.
Marcos
- Los usuarios administradores ahora pueden abrir correctamente la página Administración Store > Configuration cuando no haya ningún país en la configuración de Países de la Unión Europea (Stores > Configuration > General > Country options > European Union Countries). Anteriormente, cuando un usuario administrador intentaba abrir esta página, Magento Open Source arrojaba este error:
TypeError: explode(): Argument #2 ($string) must be of type string, null given in /var/www/php/folder/vendor/magento/module-config/ViewModel/CountryFilter.php:46
. GitHub-35901
- Las dependencias
jquery.cookie
ahora funcionan según lo esperado con dependencias de JavaScript. Anteriormente, no se podían usar alias parajquery/jquery.cookie
. GitHub-35913
- El comando
bin/magento i18n:collect-phrases
ahora incluye texto<title>
en el archivo CSV exportado. GitHub-35462
Magento\Framework\Code\Reader\ArgumentsReader::getParentCall()
ahora admite argumentos de constructor con nombre. Ahora puede llamar a una función configurando los parámetros por su nombre.
- Los errores ahora se registran como se espera en el archivo
exception.log
. Anteriormente, aunque se registraban errores en el archivosystem.log
, no se registraban errores envar/log/exception.log
.
- Los comerciantes ahora pueden especificar un proveedor SMTP externo personalizado. GitHub-26104
- Ahora, las integraciones de OAuth se pueden volver a autorizar como se espera en implementaciones que ejecuten Magento Open Source 2.4.3-p2. Anteriormente, se produjo este error en la reautorización:
The attempt to post data to consumer failed due to an unexpected error. Please try again later
. Magento Open Source también intentó descifrar valores no cifrados. GitHub-35313
- El parámetro
rowId
correcto ahora se pasa cuando se guarda la categoríaurlKey
para las categorías que tienen categorías secundarias. Anteriormente, se pasó uncategoryId
incorrecto al guardar la categoríaURLKey
.
- El código de atributo de producto
event
se ha agregado a la lista de códigos de atributo de producto reservados, lo que elimina los errores asociados con el uso de un atributo con este nombre en la tienda. Anteriormente, la aplicación arrojaba este error en las páginas de detalles del producto y de búsqueda/lista de productos cuando se usabaevent
:report.CRITICAL: Error: Call to a member function getStatus() on string in /home/mer33515/public_html/ee24develop/magento2ee/app/code/Magento/CatalogEvent/Observer/ApplyIsSalableToProduct.php:23
.
- Los mensajes de error de validación de tienda que se producen durante la realización del pedido ahora se muestran de forma coherente. Anteriormente, los mensajes aparecían, se contraían y luego volvían a aparecer. GitHub-35651
- Los consumidores de AMQP ya no fallan debido a una función
trim()
obsoleta en implementaciones que ejecutan PHP 8.1. Anteriormente, cuando el consumidor de AMQP se iniciaba después de la instalación, Magento Open Source arrojaba este error:Deprecated Functionality: trim(): Passing null to parameter #1 ($string) of type string is deprecated in .../vendor/magento/framework-amqp/Config.php on line 143
. GitHub-35380
- El método
getFilteredTimerIds
ahora funciona según lo esperado. La claseMagento\Framework\Profiler\Driver\Standard\Stat
ahora es compatible con PHP 8.1. Anteriormente, Magento Open Source arrojaba una excepción cuando se llamaba a este método. GitHub-35307
- Se ha eliminado la dependencia de la biblioteca
imagemin-svgo
.
- El proceso de minificación de plantillas ahora procesa correctamente comentarios consecutivos cuando el primer comentario comienza con
//
. GitHub-34880
- Se corrigió una consulta de base de datos emitida por el módulo
BundleGraphQl
que devolvió este error:"debugMessage": "Notice: Undefined offset: 16 in vendor/magento/module-bundle-graph-ql/Model/Resolver/Options/Collection.php on line 130"
.GitHub-34991
Correcciones generales
- Magento Open Source ahora muestra un intervalo de tiempo preciso cuando un usuario administrador selecciona la opción Last 24 Hours del panel de estadísticas de administración. Anteriormente, Magento Open Source mostraba un intervalo de tiempo incorrecto. Esto ocurrió porque la zona horaria de la base de datos permaneció sin cambios.
- Ahora se pueden generar notas de abono para cantidades enteras y decimales. Anteriormente, solo se admitían cantidades enteras.
- La regla de validación de entrada de código postal del cliente para el tipo numeric only funciona ahora según lo esperado en el campo Edit Customer Address (Store > Attribute > Customer Address). Anteriormente, la información de la dirección del cliente se guardaba sin validar el código postal.
- Las cuentas de cliente compartidas globalmente ahora tienen direcciones validadas con la lista de países permitidos para el sitio web actual y guardadas correctamente. Anteriormente, estas cuentas se validaban incorrectamente en los países permitidos del sitio web en el que se registraba el cliente.
- Las rutas de exploración de la jerarquía de páginas de CMS ya no se muestran cuando Enable Hierarchy Functionality está deshabilitado. Anteriormente, se mostraban las rutas de exploración y, cuando los compradores hacían clic en ellas, se mostraba una página 404. GitHub-35513
- La eliminación de un producto de todos los sitios web mediante el administrador ya no causa el siguiente error:
SQLSTATE[42000]: Syntax error or access violation
. GitHub-35133
- Los clientes que superen el número máximo de intentos fallidos de inicio de sesión ahora pueden iniciar sesión después de restablecer la contraseña. GitHub-34981
- El componente de filas dinámicas ahora se comporta como se espera cuando un usuario administrador agrega un nuevo elemento. Anteriormente, el componente de fila se comportaba incorrectamente cuando se agregaba un nuevo producto simple a un producto agrupado. GitHub-34850
- Se corrigieron errores tipográficos y gramática incorrecta en el archivo
app/code/Magento/Backend/etc/menu.xsd
.
- El archivo
app/code/Magento/Authorization/README.md
se ha actualizado para describir con precisión la creación de tablas.
- El método
recordLogin
se ha actualizado para establecer valores de inicio de sesión en el modelo de usuario, así como para conservar los valores correctos en los camposlogdate
ylognum
de la tablaadmin_user
. Anteriormente, no se registraban los intentos de inicio de sesión de los usuarios administradores actualizados.
- Las plantillas de problemas de GitHub se han convertido en formularios de problemas para problemas de experiencia del desarrollador y solicitudes de funciones.
- El atributo de cliente
Is required
ahora se implementa correctamente por ámbito de sitio web para el formulario de edición de cliente de administrador.
- El campo Grid Filter Condition Type de los atributos de cliente y dirección de cliente ya no está visible en la página de edición de atributos cuando la configuración Use in Filter Options está deshabilitada.
- Magento Open Source ahora muestra un mensaje de error informativo si un comerciante no introduce un valor de atributo SKU opcional al crear un producto. Anteriormente, la aplicación arrojaba esta excepción cuando el atributo era opcional:
Deprecated Functionality: trim(): Passing null to parameter #1 ($string) of type string is deprecated in /var/www/html/mg244/project-community-edition/vendor/magento/module-eav/Model/Entity/AbstractEntity.php on line 932
. GitHub-35810
- El filtro Show my quotes en la página My Quotes ahora funciona según lo esperado. Anteriormente, los resultados de los filtros incluían citas de otros usuarios administradores.
GraphQL
Types
que implementan varias interfaces en el código de GraphQL ahora pueden separarse mediante un signo&
, así como,
de acuerdo con la especificación@doc
de GraphQL.
- La mutación
setShippingAddressesOnCart
ahora admite la configuración de códigos de región numéricos comoregion
. Anteriormente, esta mutación no funcionaba correctamente para valores numéricos de código de región.
- La consulta
products
ahora devuelve solamente las revisiones asociadas con el ámbito especificado. Anteriormente, las consultas devolvían revisiones de todas las tiendas.
- Los permisos de categoría ahora se respetan durante las solicitudes de GraphQL.
- La consulta
customer
ahora filtra correctamente los pedidos con un intervalo especificado defrom
yto
. GitHub-31537
- La consulta
product
devuelve ahora los datos de categoría correctos en la agregación. Anteriormente,attribute_code.category_uid
devolvió el valor decategory_id
en lugar decategory_uid
.
- La consulta
customerOrders
ya no genera un error\"model\" value should be specified
. GitHub-35852
- La consulta
customer
ahora filtra pedidos según el ámbito. Ahora puede especificar si la consulta debe filtrar los pedidos por tienda, sitio web o globalmente.
- La consulta
categoryList
ahora devuelve un recuento preciso de productos para las categorías principales ancladas y no ancladas. El nuevo atributois_anchor
se ha agregado a la lista de columnas seleccionadas de la colección de categorías. Anteriormente, las solicitudes devolvían un recuento de productos 0. GitHub-36300
- La mutación
generateCustomerTokenAsAdmin
funciona ahora según lo esperado al crear un token para iniciar sesión en un almacén no predeterminado en una implementación de varias tiendas. GitHub-35084
- La mutación
createEmptyCart
ahora genera una excepción como se espera cuando se usa un token caducado. GitHub-26112
- Los mensajes de error de consulta del carro de compras son más informativos. GitHub-34546
- Los datos agregados en la respuesta de una consulta
products
ahora incluyen valores correctos para el atributo de tipo de precioattribute_code
ylabel
. GitHub-28878
- La consulta
products
devuelve información de categoría como se espera cuando el prefijo de base de datos tiene un valor no nulo. Anteriormente, devolvía unInternal server error
. GitHub-36117
- Se corrigió el tipo de valor devuelto para el método
getCustomerIsGuest
. GitHub-29529
- El complemento
Magento\CatalogGraphQl\Plugin\DesignLoader
se ha refactorizado.
- La recarga del carro de compras ahora se activa una sola vez, tal como se espera, cuando el carro de compras se inicializa mediante mutaciones de GraphQL. Anteriormente, la carga del carro de compras activaba una revalidación innecesaria contra el inventario de existencias, lo que consumía recursos significativos cada vez que se cargaba el carro de compras.
- Se agregó el tipo
gift_message
aOrderItemInterface
. GitHub-29418
- Las opciones de producto devueltas en las respuestas de GraphQL ahora incluyen solo los productos que están dentro del catálogo al que pertenece el usuario. Si el usuario pertenece a un catálogo compartido, solo se devolverán los productos de los catálogos compartidos. Si el usuario es un invitado o no forma parte de un catálogo compartido personalizado, solo se devuelven los productos del catálogo público.
Google ReCAPTCHA
- Se ha resuelto un error reCAPTCHA en el archivo
var/log/exception.log
para el inicio de sesión del administrador de reCAPTCHA de Google V3 y no se ha registrado ningún mensaje de error. Anteriormente, se producía el siguiente error cada pocos segundos cuando un usuario administrador configuraba su configuración de Configuration > Security > Google reCAPTCHA Admin Panel:main.ERROR: Can not resolve reCAPTCHA parameter. {"exception":"[object] (Magento\Framework\Exception\InputException(code: 0): Can not resolve reCAPTCHA parameter. at /home/xxxxxxx/public_html/vendor/magento/module-re-captcha-ui/Model/CaptchaResponseResolver.php:25)"} []
. GitHub-34975
Imagen
- Se han actualizado las recomendaciones sobre el tamaño del logotipo para la nota de factura de PDF.
Importar/exportar
- La importación de un producto con la misma clave de URL numérica que un producto existente pero sin su carácter alfabético de terminal ya no provoca un error de validación cuando Product URL Suffix se establece como vacío en el Administrador.
- El comando
bin/magento app:config:import
ahora importa correctamente el contenido de un archivoconfig.php
cuando contiene ciertas expresionescron
. Anteriormente, se produjo este error en la importación:Import failed: Notice: Trying to access array offset on value of type null in [..]/vendor/magento/module-config/Model/Config/Backend/Currency/Cron.php on line 66
. GitHub-31428
- La exportación completa ahora funciona correctamente cuando AWS S3 se utiliza como almacenamiento remoto. Anteriormente, la exportación fallaba debido al tamaño del archivo cargado.
- El estado del producto ahora se importa correctamente cuando faltan columnas de datos de inventario en el archivo CSV. Anteriormente, después de la importación del producto, se asignaba automáticamente el origen predeterminado al producto, su cantidad se establecía en cero y su estado se enumeraba como agotado cuando faltaban columnas de datos de inventario en el archivo CSV.
- La importación de valores de precios avanzados ahora proporciona el recuento correcto de registros nuevos y actualizados cuando la importación incluye más de 100 registros. Anteriormente, el mensaje de éxito de la importación proporcionaba un recuento incorrecto.
- Los archivos CSV exportados ahora contienen las rutas correctas a los nombres de categoría guardados en varios idiomas. Se ha agregado un ID de tienda para la colección de categorías. Anteriormente, los archivos exportados contenían rutas mixtas con diferentes idiomas en lugar de una ruta de categoría derivada de la vista de almacén predeterminada.
- La actualización de las opciones personalizadas de un producto en una vista de tienda específica mediante la importación ahora se realiza correctamente. Anteriormente, se producía un error interno del servidor si las filas relacionadas con un producto se dividían en varios lotes.
- El servicio de importación de
Fixer.io
ahora funciona según lo esperado. Las tasas de cambio ahora se importan correctamente. GitHub-36010
Índice
- La reindexación de precios ahora se ejecuta correctamente cuando el catálogo contiene productos agrupados que no están asignados a ningún sitio web. Anteriormente, se produjo el siguiente error al ejecutar el índice de precios del producto:
Warning: Undefined array key <bundel product id > in vendor/magento/module-bundle/Model/ResourceModel/Indexer/Price/DisabledProductOptionPriceModifier.php on line 117
. GitHub-35796
Infraestructura
- Se han resuelto los problemas con el módulo
colinmollenhour/php-redis-session-abstract
de terceros y PHP 8.1. GitHub-35634
Pedido
- El prefijo de pedido que se pasa en la secuencia de comandos de instalación ahora se agrega correctamente al ID de pedido.
- La página de detalles del pedido ahora se carga correctamente cuando el pedido contiene un producto con un valor de texto personalizado largo. Anteriormente, la página de detalles del pedido no se cargaba y el valor de la columna
sales_order_item.product_options
no se almacenaba correctamente si un producto contenía un valor largo para una opción personalizada de texto.
- El estado de los pedidos de tienda ahora es preciso para los pedidos parcialmente reembolsados. Anteriormente, un pedido permanecía en el estado de procesamiento después del envío cuando se aplicaba un reembolso parcial. GitHub-35528
- El grupo de clientes ahora se representa con precisión como Sin sesión iniciada para un pedido creado por un usuario invitado. Anteriormente, el grupo de clientes era NULL en los resúmenes de pedidos de invitado, lo que afectaba a los correos electrónicos de confirmación y a la exportación de pedidos. GitHub-35440
- Ahora se asigna un estado de Closed a los pedidos virtuales como se espera después de que se haya emitido una nota de crédito y se reembolse al cliente. Anteriormente, los productos virtuales se mostraban como Complete en la lista desplegable Estado, pero Closed en el pie de página de los comentarios del pedido cuando se agregó el comentario desde el administrador. GitHub-35283
- Los invitados ahora pueden realizar pedidos de productos con una cantidad inferior a uno y la cantidad de productos ahora se ha escrito estrictamente como
float
. Anteriormente, debido a que la cantidad de producto se escribía estrictamente comoint
, los pedidos de una cantidad de producto inferior a uno no se realizaron correctamente con este mensaje:Some of the products are disabled
. GitHub-36060
- Los reembolsos de envío ahora se calculan correctamente cuando la opción de configuración Apply discount on prices se establece en including taxes.
- Las cuadrículas de facturas, envíos y notas de abono ahora se actualizan de forma asíncrona después de archivar los pedidos.
- Los pedidos duplicados ya no son el resultado de solicitudes de GraphQL simultáneas e idénticas. Las ofertas ahora están bloqueadas durante un máximo de 10 segundos para evitar la creación de pedidos duplicados y la segunda solicitud falla con estos errores:
The cart isn't active
oThe order has already been placed and is currently processing
. Este valor de bloqueo se puede configurar mediante el id. para el parámetrolockWaitTimeout
de claseMagento\Quote\Model\PlaceOrderMutex
. GitHub-36274
- Los valores de atributos de la compañía ahora se muestran según lo esperado en las secciones de dirección de facturación y envío del flujo de trabajo de cierre de compra. Anteriormente, los atributos de empresa no se mostraban correctamente en la página de detalles del pedido porque las tiendas no se configuraban correctamente durante la creación del pedido. Los valores de atributo se almacenaron correctamente solamente cuando la propiedad Mostrar compañía se estableció en optional para Sitio web principal en implementaciones de varias tiendas.
- El valor
customer_address_id
ahora se establece como se espera para una nueva dirección de facturación cuando se marca la casilla de verificación My billing and shipping address are the same. Se ha introducido una condición adicional para identificar si la dirección de facturación es la misma que la de envío antes de establecer el ID de dirección del cliente para la dirección de envío.
- Se han resuelto los problemas de simultaneidad con la colocación del pedido. Anteriormente, si dos pedidos se realizaban desde exploradores diferentes al mismo tiempo o casi al mismo tiempo, a ambos se les asignaba el mismo ID de pedido. GitHub-35833
- Realizar un pedido facturado automáticamente de un producto gratuito cuando la indexación asíncrona está habilitada ahora funciona según lo esperado. No se agregaron entradas a la tabla
sales_order_grid or sales_invoice_grid
para estos pedidos. Anteriormente, Magento Open Source arrojaba una excepción porque la aplicación intentaba indexar las cuadrículas durante la colocación del pedido en lugar de depender decron
. GitHub-36334
Métodos de pago
- El método de pago contra reembolso ya no se muestra en el flujo de trabajo de cierre de compra de la tienda cuando se exime el pago contra reembolso en el país especificado en las direcciones de envío y facturación. Anteriormente, no se implementaban las opciones de configuración de administración de esta función.
- La información de pago de Vault ya no se muestra en la sección Pago del flujo de trabajo de creación de pedidos de administración si el comprador no ha guardado un token. GitHub-33954
- Los precios personalizados ya no se duplican después de aplicar un descuento mediante la regla de precio del carro de compras. GitHub-35154
- El nuevo estado de pedido pendiente ahora se acepta como se espera cuando se realiza un pedido mediante el método de pago de cierre de compra de subtotal cero.
- La configuración del correo electrónico de invitado ahora se respeta durante la creación del pedido para un comprador invitado con PayPal Express a través de GraphQL. Anteriormente, el conjunto de direcciones de correo electrónico se sobrescribía con la dirección de correo electrónico establecida en la cuenta de PayPal.
Braintree
- Los ID de pedido ahora se añaden a las solicitudes de liquidación de las transacciones de pago.
- Magento Open Source ya no genera el siguiente error cuando un comerciante hace clic en Reports > Braintree Settlement:
Error: Undefined constant Braintree\PaymentInstrumentType::ANDROID_PAY_CARD in /var/www/html/vendor/paypal/module-braintree-core/Ui/Component/Report/Listing/Column/PaymentType.php:49
. GitHub-35434
- La consulta
customerPaymentTokens
ya no devuelve tokens de Braintree cuando el almacén está desactivado en el administrador.
- Se han habilitado el botón Pay Later y los titulares para Italia y España.
- Los usuarios administradores ahora pueden crear un pedido o reordenarlo cuando el método de pago Braintree esté habilitado. Anteriormente, Magento Open Source arrojó este error:
report.CRITICAL: Error: Call to a member function getMethodInstance() on null in /app/vendor/paypal/module-braintree-core/Block/Form.php:174
.
- El proceso de pago mediante el método de pago Braintree ahora se completa correctamente cuando Braintree PayPal está habilitado y Enable Card Payments está deshabilitado. Anteriormente, la barra de progreso nunca se resolvía y Magento Open Source mostraba este error de consola:
adapter.js:66 Uncaught TypeError: Cannot read properties of undefined (reading 'clientToken')at Object.getClientToken (adapter.js:66:66)
. GitHub-35961
- Se han implementado enlaces web de protección contra el fraude, pago ACH y método de pago local. El enlace web de protección contra el fraude se activa solo si se ha tomado una decisión sobre el riesgo en Braintree. El enlace web de ACH se activa solamente después de que un pago de ACH se haya actualizado a
settled
osettlement decline
.
- Los campos de configuración Tagline y Layout se han eliminado de todos los botones PayPal de la sección Estilo de administración.
- La opción de método de pago Braintree Vault permanece seleccionada en el flujo de trabajo de cierre de compra cuando un comprador actualiza su dirección de facturación. Anteriormente, el método de pago se anulaba cuando el comprador anulaba la selección del botón My billing and shipping address are the same.
- Los elementos de línea ahora se pasan para transacciones de PayPal cuando la configuración de Send Line Items está habilitada desde el administrador.
- La lógica de validación del campo de método de pago ACH Account Number ahora admite texto de cuatro a 17 dígitos.
- La consulta
customerPaymentTokens
ya no devuelve tokens de Braintree cuando el administrador desactiva el almacén.
- Los usuarios administradores ahora pueden crear un pedido o repedido para los clientes cuando el método de pago Braintree está activado. Anteriormente, Magento Open Source arrojó este error:
report.CRITICAL: Error: Call to a member function getMethodInstance() on null in /app/vendor/paypal/module-braintree-core/Block/Form.php:174
- Los compradores ahora pueden usar el método de pago Braintree en tiendas donde se ha deshabilitado Enable Card Payments. Anteriormente, Magento Open Source arrojaba este error de JavaScript:
_adapter.js:66 Uncaught TypeError: Cannot read properties of undefined (reading 'clientToken')at Object.getClientToken (adapter.js:66:66).
Rendimiento
- El indexador de precios ahora elimina los datos obsoletos como se espera después de reemplazar registros durante la reindexación parcial de catálogos grandes. Anteriormente, el proceso de reindexación eliminaba los registros obsoletos antes de reemplazarlos, lo que provocaba que los productos desaparecieran temporalmente de la tienda. GitHub-35616
- Se ha mejorado el rendimiento del comando
bin/magento/setup:upgrade
. Anteriormente, este comando recreaba los déclencheur de la base de datos, lo que causaba un tiempo de inactividad significativo durante la ejecución del comando. Además, los indexadores no volvieron al modo programado y permanecieron en modo de guardado. GitHub-33386
- La actualización de los precios de nivel por API ahora se ejecuta más rápido. Anteriormente, al actualizar los precios de nivel se generaban
SELECT
consultas innecesarias, lo que retrasaba la ejecución cuando se asignaban muchos grupos de clientes a un producto.
- Se ha optimizado la carga de páginas que incluyen la lista de productos del widget de catálogo. Anteriormente, los atributos no globales se cargaban directamente desde la base de datos.
Informes
- Las fechas del informe Total de pedidos de y a ahora se muestran correctamente después de seleccionarlas en el selector de fechas.
- La constante
ANDROID_PAY_CARD
deBraintree/Ui/Component/Report/Listing/Column/PaymentType.php
ha reemplazado aGOOGLE_PAY_CARD
. Esto resuelve los problemas con el informe de Braintree.
Críticas
- Los usuarios administradores con acceso restringido a un ámbito específico ahora pueden eliminar críticas de producto según lo esperado.
Funciones
- Se ha agregado una ACL que falta para Stores > Configuration > Services > OAuth. Anteriormente, no se podía definir el acceso a esta configuración de OAuth al configurar permisos de funciones.
Buscar
- Las búsquedas de cadenas entre comillas ahora funcionan según lo esperado cuando el valor de configuración Minimum Terms to Match está habilitado. Anteriormente, Magento Open Source arrojó este error:
{"error":{"root_cause":[{"type":"parsing_exception","reason":"[match_phrase] query does not support [minimum_should_match]' ...
.
- El filtro de búsqueda Punto de registro para registros de clientes en las cuadrículas de clientes de pedidos de venta ahora funciona según lo esperado durante la creación del pedido.
- Se ha mejorado la calidad de las sugerencias de búsqueda para consultas de varias palabras.
- Los resultados de la búsqueda ahora incluyen salidas de opciones agotadas para todos los productos disponibles cuando Display Out Of Stock Products está habilitado GitHub-36055
Envío
- Las tarifas de envío de FedEx, USPS y UPS se calculan correctamente cuando la regla del carro de envío gratuito está configurada para que coincida únicamente con un subconjunto de artículos del carro de compras.
- La página de envío Administrador ya no muestra la opción de envío gratuito cuando el total del pedido es inferior al importe mínimo especificado que es apto para el envío gratuito. GitHub-33697
- Magento Open Source ahora respeta la configuración del cliente administrador Show Company al mostrar la dirección de envío o de cliente. Cuando esta opción está deshabilitada, la empresa de envío ya no se incluye en el envío, la dirección del cliente ni en el registro de pedidos de la base de datos. Anteriormente, la información se mostraba a pesar de la deshabilitación de la configuración. GitHub-33729
- Se ha eliminado una operación de guardado superflua en las ofertas al estimar el envío.
- El ámbito
storeId
ahora se aplica directamente desde$request->getStoreId()
para garantizar que el ámbito no se pierda cuando un usuario administrador cree un presupuesto. Anteriormente, ocasionalmente se producían problemas con los métodos de envío cuando se creaba una oferta desde el administrador utilizando módulos de terceros.
- Ahora se generan direcciones URL compatibles con SEO para los productos cuya configuración
url_key
se anula en el nivel de vista de tienda. Anteriormente, las direcciones URL de productos de categorías no se redirigían a direcciones URL compatibles con SEO.
- Magento Open Source ya no genera un error de importe mínimo de pedido cuando se aplica un descuento a los costes de envío.
- Los reembolsos de envío ahora se calculan correctamente cuando se aplican impuestos después de aplicar un descuento al envío.
- Todas las promociones aplicables para un carro solicitado a través de la consulta de GraphQL
cart
se devuelven juntas. Las promociones incluyen descuentos de artículos de línea, reglas/descuentos de carro de compras, cupones, tarjetas regalo y crédito de la tienda. GitHub-35545
- Se agregaron los tipos
price_excl_tax
yprice_excl_tax
al resultado de la mutaciónsetShippingMethodsOnCart
. GitHub-31206
- Los ID de envío únicos ahora se pasan en las respuestas de GraphQL según lo esperado con los detalles de envío de los pedidos enviados a varias direcciones para consultas de GraphQL.
Impuestos
- La configuración de Display Zero Tax Subtotal ahora se aplica según lo esperado a pedidos en implementaciones que ofrecen varios métodos de envío. Anteriormente, el campo de impuestos cero estaba visible en la página del carro de compras durante el cierre de compra antes de seleccionar un método de envío, incluso cuando esta configuración estaba deshabilitada. GitHub-35561
- Magento Open Source ahora puede mostrar productos agrupados con impuestos en la página de categoría de tienda en implementaciones que ejecuten PHP 8.1. Anteriormente, Magento Open Source no mostraba una lista de productos y arrojó esta excepción:
main.CRITICAL: Exception: Deprecated Functionality: ucfirst(): Passing null to parameter #1 ($string) of type string is deprecated in /var/www/m24/vendor/magento/module-tax/Pricing/Render/Adjustment.php on line 188 in /var/www/m24/vendor/magento/framework/App/ErrorHandler.php:61
. GitHub-35500
- Los comerciantes ya no pueden mover una actualización programada a otra actualización que contenga el mismo ID de regla. Anteriormente, las actualizaciones de programación para reglas de precios de carro de compras creaban programaciones duplicadas cuando una actualización se movía a otra actualización que contenía el mismo ID de regla.
- La asignación automática de grupos de clientes ahora funciona cuando no hay ningún ID de IVA asociado a la dirección del cliente. Si la dirección no contiene un ID de IVA, se trata como perteneciente a un cliente registrado sin IVA y Magento Open Source cambia el grupo de clientes a un grupo sin IVA. Anteriormente, cuando se habilitaba Enable Automatic Assignment to Customer Group, la cuenta de cliente no se asignaba automáticamente a
customerGroup
cuando se eliminaba el identificador de IVA de la cuenta de cliente.
- Ahora se muestran los bloques dinámicos correctos para las reglas de catálogo organizadas en el modo de vista previa provisional. Anteriormente, se mostraban bloques dinámicos no relacionados.
- Ahora se representan correctamente varios impuestos en la sección Resumen de Impuestos de facturas y notas de abono cuando se aplica el envío múltiple durante el cierre de compra.
- Los descuentos ya no se aplican cuando un subtotal de pedido, incluidos los impuestos, junto con el importe de impuestos fijos sobre productos supera la condición de regla de carro de compras en la página de carro de compras. Anteriormente, los descuentos se aplicaban incluso cuando el total superaba la condición de regla del carro de compras.
- Ahora puede especificar un
vat_id
al usar GraphQL para agregar o actualizar la dirección de un comprador invitado.
Prueba
- Se corrigieron errores de pruebas unitarias para distintas versiones de las bibliotecas
ICU
ylibxml
.
- Ahora los desarrolladores pueden indicar al sistema que ejecute un accesorio de datos en una vista de almacén específica. El nuevo parámetro opcional
scope
acepta un elementostring
que corresponde al alias de sujeción de almacén.
- Se ha agregado la capacidad de generar varias instancias de una sujeción de datos mediante el parámetro opcional
count
.
- Se ha eliminado la función
array_first
no nativa de las dependencias de desarrollo en el marco MFTF.
Traducciones y configuraciones regionales
- La traducción en línea ahora funciona correctamente con caracteres especiales, incluidos caracteres Unicode extendidos, en frases ubicadas en etiquetas SCRIPT. Anteriormente, los caracteres japoneses se representaban incorrectamente en el script editado al utilizar la traducción en línea.
- El carácter
ñ
de un nombre de producto ahora se convierte enn
durante la generación de claves de URL.
- El resultado de ejecutar
bin/magento i18n:collect-phrases
ahora incluye traducciones de plantillas de correo en construcciones dedepend
según lo esperado. GitHub-35449
- Ahora, los caracteres japoneses se pueden introducir directamente en el conjunto de atributos de la página de productos (cuadro combinado). Anteriormente, al introducir directamente caracteres japoneses en este cuadro combinado, se cambiaban o eliminaban caracteres al ejecutar el explorador Firefox en MacOS. El atributo HTML
textInput
, que puede administrar mejor la conversión de caracteres japoneses en todos los exploradores, ha reemplazado los atributosValue
yvalueUpdate
.
- El método
getOptions
ahora recupera correctamenteprice
valores de etiqueta de atributo basados en la vista de tienda. Anteriormente, el atributoprice
se tradujo durante las operaciones de GraphQL para la vista de almacén incorrecta.
IU
- La moneda específica del sitio web ahora se utiliza según lo esperado para las columnas Precio especial, Coste y MSRP en la cuadrícula de productos del administrador. Anteriormente, el símbolo de moneda correcto no se mostraba en la cuadrícula de productos del catálogo de administración al filtrar por la vista de la tienda para un precio especial.
- La funcionalidad de arrastrar y soltar de las opciones personalizadas del producto ahora funciona según lo esperado. Ahora puede mover una opción personalizable de una página a otra cuando hay varias páginas disponibles en la cuadrícula de opciones personalizables.
- Los gráficos del tablero de administración ahora muestran los intervalos de tiempo hasta la fecha desde el comienzo del año natural actual hasta la fecha actual según lo esperado. Anteriormente, los intervalos de fechas incluían más de 12 meses.
- Se ha añadido un icono de favoritos predeterminado que falta en la página principal de la tienda. GitHub-35493
- El administrador ahora muestra correctamente la última fecha de inicio de sesión de cada usuario administrador. Anteriormente, cuando un usuario administrador iniciaba sesión en el Administrador por primera vez, se mostraba un valor de fecha de inicio de sesión vacío en la cuadrícula del usuario Administrador.
- La característica de vista previa de plantillas de correo electrónico (Marketing > Communications > Email Templates) ahora muestra las plantillas correctamente. Anteriormente, la imagen de vista previa se truncaba. GitHub-35697
- Se ha agregado la clase
new-shipping-address-modal
para admitir el estilo del nuevo modal de dirección de envío.
- Se agregó texto informativo debajo del campo de entrada
Storefront Properties
del atributoSearch Weight
en el administrador Stores > Attributes > Product.
- Las vistas previas de correo electrónico ahora se abren en una pestaña independiente en lugar de en una ventana emergente, que proporciona una vista más amplia del contenido del correo electrónico. Anteriormente, el contenido del correo electrónico se truncaba.
- La función de filtro para la cuadrícula de funciones de usuario (Administración System > Permissions > User roles > Administrators) ahora funciona según lo esperado. El valor de la matriz ahora se gestiona por separado. Anteriormente, al intentar escribir una consulta en esta cuadrícula, Magento Open Source arrojaba este error de consola y la página no se cargaba:
Uncaught TypeError: Cannot read properties of null
. GitHub-35993
- Se ha añadido validación para valores de atributo al crear un cliente a través de la API de REST. El proceso de creación falla ahora cuando se proporcionan valores de atributos no válidos. Anteriormente, no había ninguna validación para el sexo, que no es un campo obligatorio. Durante la creación del cliente, el valor pasado para el género se guardó en la tabla
customer_entity
.
- Las direcciones añadidas durante el cierre de compra ahora mantienen el formato esperado. Anteriormente, se omitían las líneas en blanco.
- Cambiar la vista de cuadrícula de columnas de la cuadrícula de producto y seleccionar nuevas columnas para una vista personalizada ya no déclencheur la acción Seleccionar todas las columnas de cuadrícula. Anteriormente, el cuadro de columna desaparecía y los productos de la cuadrícula se seleccionaban o anulaban su selección. GitHub-36302
- Los usuarios administradores ahora pueden borrar el registro de tareas completadas de administración correctamente. Anteriormente, el administrador mostraba este error:
Something went wrong
. GitHub-36255
- La configuración del encabezado del tema
Welcome Text
ahora puede contener un carácter de comillas simples. Anteriormente, Magento Open Source arrojaba este error de JavaScript:Uncaught SyntaxError: Unable to process binding "ifnot: function(){return customer().fullname }"
.
Reescrituras de URL
- Si se cambia la visibilidad del producto a Not Visible Individually en el ámbito global de todas las vistas de tienda, ahora solo se quitarán las reescrituras de URL para las vistas de tienda que no hayan anulado el atributo de visibilidad. Cambiar la visibilidad del producto de esta manera también genera reescrituras de URL para todas las vistas de tienda, incluidas aquellas que han anulado el atributo de clave de URL (pero no la configuración de visibilidad). Anteriormente, las reglas de reescritura de URL no se aplicaban cuando se cambiaba la configuración de visibilidad.
Marco de API web
- La API de REST
DELETE /rest/V1/products/:sku/media/:entryId
devuelve ahora un mensaje de error si la imagen no se quita del producto porque está asignada a una función en otras vistas de la tienda. Anteriormente, la API devolvía una respuesta correcta incluso cuando la imagen no se eliminaba correctamente.
- Los comerciantes ahora pueden utilizar la API de REST para crear un abono para un pedido con un total general cero. Anteriormente, Magento Open Source mostraba este error:
The order does not allow a credit memo to be created. The credit memo's total must be positive. We can't create a credit memo for the invoice/order
.
- La página de edición del producto Administrador ahora refleja con precisión las asignaciones de un producto después de que la asignación del sitio web del producto se haya cambiado mediante la API de REST. GitHub-36281
- Ya no se pueden incluir ID de opción duplicados para atributos de selección múltiple durante solicitudes de API de REST masivas para actualizar productos. Anteriormente, se podían establecer ID de opción duplicados para atributos de selección múltiple al enviar una solicitud de API masiva para actualizar un producto. Cuando ese atributo de selección múltiple se configuró para su inclusión en la navegación por capas, la indexación EAV falló con un error
Duplicate entry
.
- Los nombres de productos en los carros de compras ahora utilizan los valores especificados de la vista de la tienda según lo esperado. Anteriormente, los nombres de producto en el carro de compras siempre devolvían el valor de vista de tienda predeterminado en las respuestas del carro de compras de la API de REST.
- Los valores de opciones personalizadas de elementos del carro de compras ahora se pueden actualizar mediante la API de REST. GitHub-35768
- Las solicitudes de API en lotes de más de 20
sourceItems
ahora se completan correctamente en implementaciones en las que el inventario está habilitado.
- El servicio de moneda Fixer ahora funciona como se espera con las claves generadas a través de ApiLayer, y las tasas de moneda se exportan correctamente. Anteriormente, Magento Open Source generaba un error cuando un comerciante intentaba importar tasas de cambio a través del administrador.
- Ahora puede usar la solicitud de la API de REST
/rest/V1/bulk?searchCriteria[filter_groups]
para consultar operaciones masivas por criterios de búsqueda. Anteriormente, se devolvió el siguiente error:report.CRITICAL: Report ID: webapi-624bbb1db96c4; Message: Item (Magento\AsynchronousOperations\Model\Operation) with the same ID "0" already exists.
- Los precios de los productos ahora se actualizan correctamente en las páginas de búsqueda del catálogo de administración y de tienda mediante la API Administrar precio base. GitHub-33767
Lista de deseos
- Los compradores ahora pueden añadir productos a su lista de deseos después de iniciar sesión. Anteriormente, debido a problemas con la validación de la clave del formulario después de iniciar sesión, la clave del formulario enviada con la solicitud de complemento a la lista de deseos se invalidó.
- Los productos ahora se añaden según lo esperado a la lista de deseos desde la lista de productos y la vista de páginas después de que un cliente invitado confirme su cuenta mediante un correo electrónico de confirmación. Anteriormente, los productos no se añadían a la lista de deseos después de la confirmación de la cuenta.
- La consulta
addProductsToWishlist
devuelve ahora un mensaje de error informativo cuando un comprador intenta agregar un artículo a una lista de artículos deseados con un valor no válido para la opción personalizada del productoselect
. Anteriormente, faltaba la validación del servidor para el valor de la opción personalizada desplegable, lo que provocaba un valor no válido en la base de datos. Como resultado, el extremo devolvió este error interno del servidor:GraphQL endpoint returns Internal server error with "Call
.
Problema conocido
Problema: no puede crear un abono cuando el envío gratuito está habilitado (Stores > Configuration > Sales > Delivery Methods) y el precio de envío mostrado incluye impuestos. Cuando intenta crear un abono, Adobe Commerce genera esta excepción: "Division by zero".vendor/magento/module-sales/Model/Order/Creditmemo/Total/Tax.phpLine 139
. GitHub-36800
Solución alternativa: Ya está disponible una solución para este problema. Vaya a Herramienta Parches de calidad: busque parches y busque el parche ACSD-50814.