Notas de la versión de Magento Open Source 2.4.2
Magento Open Source 2.4.2 incorpora mejoras en el rendimiento y la seguridad, además de mejoras significativas en la plataforma. Las mejoras de seguridad incluyen la ampliación de la compatibilidad con el atributo SameSite
para todas las cookies. Ahora se admiten Elasticsearch 7.9.x y Redis 6.x.
Esta versión incluye más de 280 nuevas correcciones del código principal y 35 mejoras de seguridad. Incluye la resolución de casi 290 problemas de GitHub por parte de los miembros de nuestra comunidad. Estas contribuciones de la comunidad van desde una limpieza menor del código principal hasta mejoras significativas en GraphQL.
Todos los problemas conocidos identificados en 2.4.1 se han corregido en esta versión.
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.
Parche de seguridad disponible
Los comerciantes ahora pueden instalar correcciones de seguridad urgentes sin aplicar los cientos de correcciones y mejoras funcionales que ofrece una versión trimestral completa (por ejemplo, 2.4.1-p1). El parche 2.4.0.12 (Composer package 2.4.1-p1) es un parche de seguridad que proporciona correcciones para vulnerabilidades que se han identificado en nuestra versión trimestral anterior, 2.4.1. Todas las correcciones rápidas aplicadas a la versión 2.4.1 se incluyen en este parche de seguridad. (Una corrección rápida proporciona una corrección de una versión publicada que soluciona un problema o error específico).
Para obtener información general acerca de los parches de seguridad, consulte Presentación de la nueva versión de parches de seguridad. Para obtener instrucciones sobre cómo descargar y aplicar parches de seguridad (incluido el parche 2.4.1-p1), consulte Instalación rápida local. Los parches de seguridad solo incluyen correcciones de errores de seguridad, no las mejoras de seguridad adicionales que se incluyen en el parche completo.
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.
Características destacadas
Busque los siguientes aspectos destacados en esta versión.
Mejoras sustanciales de seguridad
Esta versión incluye más de 35 correcciones de seguridad y mejoras de seguridad de la plataforma. Todas las correcciones de seguridad se han adaptado a 2.4.1-p1 y 2.3.6-p1.
Más de 35 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 incluyen:
-
Todas las cookies principales ahora admiten el atributo
SameSite
. -
La aplicación ahora muestra mensajes que identifican contenido potencialmente malicioso en los campos de descripción de productos y categorías cuando el usuario intenta guardar valores en estos campos.
-
Las operaciones del sistema de archivos en todos los componentes se han estandarizado y reforzado para evitar cargas malintencionadas.
-
Se han corregido las infracciones de la Política de seguridad de contenido principal (CSP).
Mejoras de infraestructura
Esta versión incluye mejoras en la calidad principal, que mejoran la calidad del marco de trabajo y estas áreas funcionales: Cuenta de cliente, Catálogo, CMS, OMS, Importar/Exportar, Promociones y objetivos, y Carro y cierre de compra.
Mejoras de Platform
-
Ahora se admite el Elasticsearch 7.9.x. Aunque se recomienda ejecutar el Elasticsearch 7.9.x, la versión 2.4.x sigue siendo compatible con el Elasticsearch 7.4.x.
-
2.4.2 se ha probado con Varnish 6.4. La versión 2.4.x sigue siendo compatible con Varnish 6.x.
-
Ahora se admite Redis 6.x. La versión 2.4.x sigue siendo compatible con Redis 5.x.
-
2.4.2 ahora es compatible con Composer 2.x. Recomendamos a los comerciantes migrar a Composer 2.x. Aunque puede instalar esta versión con Composer 1.x, Composer 1.x llegará pronto al final de su vida útil. Para obtener información general sobre las características de Composer 2.x, consulte Composer 2.0 ya está disponible.
La capacidad de configurar una instalación para utilizar una base de datos dividida ha quedado obsoleta en esta versión. Los comerciantes que actualmente utilizan bases de datos divididas deben empezar a planificar la reversión a una sola base de datos o la migración a ella, o utilizar un método alternativo. Consulte la Desaprobación de la funcionalidad de la base de datos dividida en la publicación de DevBlog del Magento Open Source para ver una descripción general de este problema. Consulte Revertir de una base de datos dividida a una sola base de datos para obtener instrucciones de migración.
Mejoras de rendimiento
Esta versión incluye mejoras de código que mejoran el rendimiento de la API y el tiempo de respuesta del administrador para implementaciones con catálogos grandes. Varias mejoras en la escalabilidad permiten que 2.4.2 admita de forma nativa catálogos complejos hasta 20 veces más grandes que en versiones anteriores.
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 las siguientes funciones:
-
Se agregó compatibilidad con listas de comparación. Los compradores pueden crear y eliminar listas de comparación, y agregar y eliminar elementos a las listas de comparación. Además, los compradores que creen una lista de comparación como invitados pueden iniciar sesión como clientes y conservar sus listas de comparación.
-
Se agregó la mutación
generateCustomerTokenAsAdmin
y se actualizó el objetoCustomer
para admitir la asistencia de compra remota. -
Se ha agregado compatibilidad con la localización en todas las tiendas para admitir tareas como cambiar idiomas, carros de compras y monedas.
-
Se ha añadido apoyo a los sindicatos en GraphQL. GitHub-29425
-
El esquema de GraphQL se ha mejorado para optimizar la recuperación de datos de productos para productos configurables con muchas variantes.
-
Los identificadores de objeto de tipo entero han quedado obsoletos en favor de
uid
atributos de tipo ID. -
Se agregó el atributo
staging
aProductInterface
yCategoryInterface
para determinar si un producto está ensayado y para ver su información de campaña asociada.
Consulte la Guía para desarrolladores de GraphQL para obtener más información sobre estas mejoras.
PWA Studio
Esta versión de PWA Studio incluye:
-
Internacionalización y localización. Venia ahora es compatible con varios idiomas y monedas.
-
Se ha mejorado el marco de trabajo de extensibilidad para admitir cambios en el código mediante extensiones.
-
Componentes iniciales para funciones relacionadas con Mi cuenta, como Lista de deseos, Pagos guardados, Libreta de direcciones e Historial de pedidos.
-
Varias optimizaciones de rendimiento y correcciones de errores.
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.
Galería de medios
Nuevos recursos de rol para la Galería multimedia. Esta versión proporciona a los comerciantes la capacidad de limitar el acceso de administrador solo a la galería de medios y de controlar quién puede realizar estas acciones:
-
Insertar recursos de medios en el contenido
-
Cargar recursos
-
Editar detalles de recursos
-
Eliminar recursos de la Galería multimedia
-
Administrar estructura de carpetas.
imágenes optimizadas para la web en el contenido. Los comerciantes ahora pueden usar representación de imágenes optimizadas para la web en el contenido en lugar de imágenes de alta resolución. La imagen original permanece sin modificar en la Galería multimedia y la representación de la imagen se genera dinámicamente cuando la imagen se inserta en el contenido.
Marco de prueba funcional (MFTF)
MFTF 3.2.1 ya está disponible. Esta versión introduce tolerancia a errores tanto en las pruebas como en la generación de grupos de pruebas. En el Registro de cambios del marco de pruebas funcionales se describen mejoras adicionales y correcciones de errores.
Extensiones desarrolladas por el proveedor
Consulte los siguientes artículos para obtener actualizaciones sobre las funciones y los cambios de esta versión:
Mejoras de compatibilidad con AWS S3
Se ha mejorado la compatibilidad con Amazon Simple Storage Service (AWS S3) para incluir compatibilidad con:
-
Almacenamiento de objetos y extensibilidad futura
-
Almacenamiento de archivos multimedia en AWS S3
Problemas solucionados
Hemos corregido cientos de problemas en el código principal 2.4.2.
Instalación, actualización e implementación
- La capacidad de configurar una instalación para utilizar una base de datos dividida ha quedado obsoleta en esta versión. Vea la obsolescencia de la funcionalidad de la base de datos dividida en la publicación DevBlog de Magento Open Source.
- Los comerciantes ahora pueden actualizar correctamente una implementación de Open Source que ejecuta MySQL 8.x a una implementación de Commerce. Anteriormente, la aplicación arrojaba una excepción cuando los valores de
AUTO_INCREMENT
se revertían a valores iniciales para todas las tablas en las que se agregórow_id
durante la actualización.
- La aplicación ahora muestra un mensaje de error que identifica la ruta de acceso que se utilizó para crear el parche si se produce un error al ejecutar
bin/magento/setup:db:generate-patch
. GitHub-27523
- Las cachés de
block_html
,full_page
ylayout
ahora están deshabilitadas como se espera después de la ejecución debin/magento/setup:upgrade
. GitHub-28186
- Se ha actualizado la versión de PHP mínima requerida en
bootstrap.php
. GitHub-30004
- Ahora puede ejecutar
bin/magento/setup:upgrade
después de instalar datos de ejemplo. Anteriormente, al intentar ejecutarbin/magento/setup:upgrade
, la aplicación mostraba este error:unable to apply data patch magento\catalogrulesampledata\setup\patch\data\installcatalogrulesampledata for module magento_catalogrulesampledata
. La aplicación también mostró este error en el registro del sistema:main.ERROR: Sample Data error: Unable to unserialize value. Error: Syntax error
. GitHub-30685
- Ahora puede establecer una clave de API de YouTube desde la línea de comandos según lo esperado. Anteriormente, la aplicación devolvió este error cuando intentó ejecutar
bin/magento config:sensitive:set catalog/product_video/youtube_api_key
:There are no sensitive configurations to fill
.
- La aplicación ahora respeta los valores de
maxMessages
definidos enqueue_consumer.xml
. Anteriormente, la aplicación solo utilizaba los valores de configuración de implementación. GitHub-29522
- La generación de URL para una nueva tienda ahora funciona como se espera cuando se crea la tienda con
bin/magento setup:config:import
. Anteriormente, las reescrituras de URL no se generaban en entornos de producción. GitHub-30025
- La aplicación ya no genera un error cuando intenta cambiar
backend-frontname
con el contenedorssh
después de instalar el Magento Open Source. GitHub-26762
- La aplicación ya no muestra esta pregunta cuando ejecuta
bin/magento setup:install
para conectarse a una base de datos existente:Overwrite the existing configuration for db-ssl-verify?[Y/n]
. GitHub-29612
Integración de Adobe Stock
- Se agregó compatibilidad para leer metadatos de
exif_image.png
oexif-image.jpeg
. GitHub-1449
- El contenido que se muestra al hacer clic en el marcador Vista predeterminada de la Galería multimedia ya no se filtra. Anteriormente, la vista predeterminada contenía un filtro que se aplicaba desde el aplicador
url-filter
. GitHub-1813, GitHub-1789, GitHub-1780
- Se ha quitado la lógica del controlador OnInsert de WYSIWYG (
Magento\Cms\Controller\Adminhtml\Wysiwyg\Images\OnInsert::execute()
) y se ha agregado al modeloModel\Wysiwyg\Images\PrepareImage::execute()
. GitHub-1504
- La emulación de área se ha quitado del comando
media-content:sync
(\Magento\MediaContentSynchronization\Console\Command\Synchronize::execute
). GitHub-1784
Analytics
- Ahora, los informes avanzados funcionan según lo esperado en varios entornos del mismo dominio. Anteriormente, los archivos CSV generados por los informes avanzados fallaban porque las comillas dobles se escapaban con barras invertidas en lugar de con otra comilla doble, como exige el estándar CSV RFC4180.
- El trabajo
analytics_collect_data
ahora se ejecuta correctamente cuando se usa el puerto predeterminado o no predeterminado para conectarse a MySQL enenv.php
. Anteriormente,analytics_collect_data
arrojó un error al usar el puerto no predeterminado.
- Los archivos CSV generados por
analytics_collect_data
ahora se han escapado correctamente. Anteriormente, estos archivos no se generaban con el escape correcto, lo que impedía la generación de informes de inventario.
Braintree
-
Los compradores ahora pueden usar Apple Pay para realizar correctamente un pedido de productos virtuales. Anteriormente, la aplicación arrojó este error:
There are no shipping methods available for you right now. Please try again or use an alternative payment method
. -
El método de pago predeterminado PayPal Express Checkout funciona ahora según lo esperado con el método de pago con tarjeta de crédito del Braintree. Anteriormente, la aplicación no mostraba el botón PayPal cuando se habilitó el método de pago con tarjeta de crédito de Braintree.
Paquete de productos
- La aplicación ya no establece los precios de los artículos secundarios del paquete de precio fijo entre comillas.
- La clasificación de precios ahora funciona como se espera cuando los productos agrupados incluyen productos sin existencias. Anteriormente, al ordenar el precio en orden descendente, no se mostraban los productos en orden descendente.
- La aplicación ahora aplica automáticamente una cantidad predeterminada de 1 para las opciones de producto del paquete cuando existen muchas opciones. Anteriormente, los comerciantes tenían que asignar manualmente una cantidad predeterminada a cada opción.
- La página de creación de facturas de pedido ahora muestra los productos secundarios de los productos agrupados según lo esperado. GitHub-27350
- La aplicación ahora asigna precios de producto correctos cuando se reordenan productos simples que forman parte de un paquete de productos con un precio personalizado. Anteriormente, al establecer un precio personalizado en un producto agrupado, se producían precios incorrectos en los productos simples adjuntos cuando se reordenaban. GitHub-30343
- Al llamar al POST
/V1/order/{orderId}/ship
para enviar un pedido que contiene un paquete de productos, ahora el pedido se marca como completado según lo esperado. Anteriormente, la aplicación mostraba este mensaje de error:You can't create a shipment without products
. GitHub-9762
Carro y cierre de compra
- El estimador del método de envío ahora funciona como se espera cuando los atributos de dirección personalizados están presentes en la etapa de envío del flujo de trabajo de cierre de compra. Anteriormente, la aplicación mostraba este mensaje de error:
{"message":"Error occurred during \"custom_attributes\" processing. A custom attribute is specified with a missing attribute code. Verify the code and try again."}
GitHub-27505
- La aplicación ahora muestra el mensaje
You have no items in your shopping cart
en el minicarrito como se espera cuando un comprador quita el único artículo del carrito. Anteriormente, los datos del carro de compras no se actualizaban paracheckout/cart/removeFailed
cuando un comprador quitaba el único elemento y la aplicación mostraba este mensaje:1 product requires your attention
.
- La aplicación ya no muestra el coste de envío de un pedido para un método de envío no aplicable. Anteriormente, la aplicación mostraba un precio de 0 para un método de envío no aplicable en el flujo de trabajo de cierre de compra.
- Ahora se selecciona una dirección de facturación predeterminada del cliente cuando la casilla de verificación Mi dirección de facturación y envío son la misma en el flujo de trabajo de cierre de compra no está seleccionada.
- El contenido del carro de compras ya no se pierde cuando un comprador cambia de una tienda a otra en un dominio diferente.
- Los compradores ahora pueden completar correctamente un pedido utilizando Desproteger con varias direcciones cuando se utilizan varios métodos de envío. Anteriormente, la aplicación mostraba este error:
There has been an error processing your request
. GitHub-30197
- La aplicación ahora muestra el país predeterminado correcto en la página de envío del flujo de trabajo de cierre de compra cuando el comprador cambia la vista de la tienda desde el carro de compras.
- La aplicación ahora excluye la sesión actual al limpiar las sesiones de los clientes después de un restablecimiento de contraseña posterior al cierre de sesión cuando un comprador invitado inicia sesión. Anteriormente, la aplicación vaciaba el carro de compras cuando el comprador restablecía su contraseña.
- La aplicación ahora muestra el país predeterminado correcto para una vista de tienda cuando un comprador cambia la vista de la tienda en el carro de compras. Anteriormente, cuando se cambiaba la vista de la tienda en el carro de compras, el país predeterminado era incorrecto.
- Se han eliminado las llamadas redundantes al extremo
/rest/V1/guest-carts/cart_id/totals-information
del carro de compras, lo que ha mejorado el rendimiento del carro de compras. Anteriormente, cuando un comprador agregaba un producto al carro de compras y posteriormente lo veía, la aplicación llamaba al métodocollectAddressTotals
varias veces.
- La aplicación ya no muestra el campo Región de un país en el flujo de trabajo de cierre de compra cuando la opción Permitir elegir estado si es opcional para el país está deshabilitada. GitHub-30747
- La aplicación ya no repite una dirección de envío en el flujo de trabajo de cierre de compra de la tienda cuando se vuelve a solicitar un pedido al administrador.
- Se corrigieron problemas con el diseño de
AdminMediaGalleryInsertLargeImageFileSizeTest
.
- A todos los registros nuevos de la tabla
quote
para invitados se les asigna ahora un valor de 1 encustomer_is_guest field
. Anteriormente, a cada nuevo invitado que agregaba un producto al carro de compras se le asignaba un 0 al campoquote.customer_is_guest
al registro.
- El botón Enviar de la sección Revisión y pagos del flujo de trabajo de cierre de compra se ha movido a dentro de
<form id="purchaseorder-form"...></form>
, lo que hace posible el envío implícito del formulario sin alterar ningún JavaScript. GitHub-27925
- La aplicación ya no muestra el campo Región en el flujo de trabajo de cierre de compra cuando la opción Permitir elegir estado si es opcional para el país está deshabilitada. GitHub-30747
- La aplicación ahora actualiza correctamente el subtotal de artículos del carro de compras cuando un comprador hace clic en Actualizar carro de compras mientras realiza la compra con varias direcciones. GitHub-30408
- La aplicación ya no genera una excepción cuando existen
config.xml
nodos para métodos de pago que no están instalados actualmente. Anteriormente, la aplicación arrojaba una excepción durante el cierre de compra. GitHub-29555
- La aplicación ahora procesa correctamente en el minicarrito los nombres de productos que contienen caracteres especiales. GitHub-29075
- La aplicación ahora establece el paquete de descuento correcto para la tarifa de tabla. Anteriormente, la aplicación no aplicaba una regla de carro de compras que estableciera un descuento en el carro de compras al calcular la tasa de tabla. GitHub-30169
Regla de precio del carro
- Las reglas de precios del carro de compras ahora se aplican según lo esperado cuando se calculan los subtotales de pedidos sin incorporar impuestos. La nueva opción
Subtotal (Incl. Tax)
se agregó como condición de regla de precio de carro de compras.
- La aplicación de una regla de precio con un cupón mediante GraphQL ahora funciona como se espera cuando se utiliza la acción Descuento de cantidad fija para todo el carro de compras.
Catálogo
- La aplicación ahora muestra todos los productos reactivados en la tienda según lo esperado. Anteriormente, cuando un producto se deshabilitaba y luego se volvía a habilitar, la aplicación no mostraba el producto hasta que se borraba la caché de la página de Barniz o se volvía a indexar la tienda, porque la caché de la página no se invalidaba después de volver a habilitar un producto.
- La reindexación parcial de catálogos grandes ahora funciona según lo esperado. Anteriormente, los productos desaparecían aleatoriamente de la página de categoría de tienda durante la reindexación con el indizador parcial
catalogsearch_fulltext
.
- Los compradores ahora pueden reordenar un pedido facturado de un producto con opciones personalizables según lo esperado. Anteriormente, la aplicación arrojaba este error cuando un comprador intentaba cambiar el pedido:
{"0":"The product's required option(s) weren't entered. Make sure the options are entered and try again
.
- Ahora puede establecer correctamente la configuración de Diseño en la página Diseño de categoría en Sin actualizaciones de diseño. Anteriormente, la aplicación volvió a Category - FullWidth cuando asignó el valor No hay actualizaciones de diseño.
- Se han resuelto problemas con el orden de los productos en la tienda. Anteriormente, cuando la aplicación indizaba los precios de los productos, ocasionalmente establecía
min_price
ymax_price
de un producto configurable en 0 en la tablacatalog_product_index_price
, lo que afectaba al orden de los precios en la tienda.
- La aplicación ahora actualiza correctamente los atributos etiquetados como
Product Type
. Anteriormente, debido a que el atributoproduct_type
estaba reservado en el código, la aplicación mostraba este mensaje cuando intentaba actualizar un atributoProduct Type
:An attribute with the same code (product_type) already exists.
- La aplicación ya no cambia la posición de un vídeo cargado en la sección Imágenes y vídeos de la página de detalles del producto al guardar el producto. Anteriormente, a la nueva posición de la imagen se le asignaba un valor de índice (posición en la lista) y, si las posiciones de imagen existentes no estaban alineadas con sus valores de índice, la nueva imagen se colocaba de forma incorrecta en la lista.
- La funcionalidad Agregar al carro ahora funciona según lo esperado siempre que el botón Agregar al carro esté disponible para hacer clic. Anteriormente, si hacía clic en este botón varias veces mientras esperaba a que se cargara una página de producto, la aplicación arrojaba este error:
Invalid Form Key. Please refresh the page
.
- La aplicación ya no vacía la caché de categorías cuando un comerciante añade o elimina productos desactivados de una categoría. Anteriormente, la aplicación vaciaba la caché para categorías relacionadas a pesar del estado del producto. También se quitó la asignación de categorías al guardar una categoría, lo que provocó el vaciado de la caché de categorías.
- El filtrado de productos de catálogo en el ámbito Vista de todas las tiendas funciona ahora correctamente. Anteriormente, los productos con un estado de
Enabled
oDisabled
se mostraban en la cuadrícula mientras se filtraban solo los productos habilitados o deshabilitados.
- La reindexación parcial ya no da como resultado productos perdidos y categorías vacías.
- La reordenación ahora funciona según lo esperado cuando Usar JavaScript Calendar está habilitado (Tiendas > Configuración > Catálogo > Opciones personalizadas de fecha y hora). Anteriormente, cuando se habilitaba esta configuración, la aplicación mostraba este error al intentar reordenar el pedido realizado anteriormente desde el administrador:
Please specify date required option(s)
.
- La aplicación ahora muestra la moneda correcta en implementaciones de varios sitios durante la creación de precios de nivel.
- Los atributos personalizados de imagen de producto ahora se escapan correctamente. El atributo
data-src
tiene el mismo valor que el atributosrc
, como se espera. Anteriormente, los símbolos especiales de URL se evitaban.
- Al actualizar una categoría a través de la API de REST, ya no se deshabilita la opción Usar valor predeterminado en los atributos Habilitar categoría, Incluir en el menú y Clave de URL.
- Al guardar una categoría, ahora se vacía solamente la memoria caché de bloques relacionada con esta categoría. Anteriormente, la aplicación vaciaba la caché de todos los bloques de categorías.
- El precio de una opción personalizada con un precio porcentual ahora se convierte según lo esperado en la moneda base de la tienda activa en implementaciones de varias tiendas. Anteriormente, el precio de una opción personalizada con un precio porcentual se convertía incorrectamente. GitHub-26432
- La aplicación ahora vuelve a crear imágenes correctamente y estas imágenes son visibles en el administrador como se espera cada vez que un comerciante envía datos de la galería de medios con el POST
rest/all/V1/products
. Anteriormente, la aplicación recreaba las imágenes pero las eliminaba cuando un comerciante enviaba datos de la galería de medios a través del POSTrest/all/V1/products
si las imágenes se eliminaban enpub/media
pero aún había registros en medios que contenían registros para estas imágenes. Como resultado, el comerciante solo vio marcadores de posición en el Administrador porque las imágenes se crearon y eliminaron durante el proceso de actualización.
- Los registros ahora se eliminan según lo esperado cuando se anula la asignación de un elemento de un sitio web. Anteriormente, las imágenes se duplicaban cuando se ejecutaba el POST
rest/all/V1/products
.
- La llamada a
/V1/categories/{categoryId}/products
ahora devuelve una lista de todos los productos que pertenecen a la categoría principal según lo esperado. Anteriormente, si un producto pertenecía a más de una subcategoría de la categoría principal, la aplicación arrojaba este tipo de error:Internal Error. Details are available in the application log file. Report ID: webapi-5f8579e37db54
. GitHub-30461
- El extremo REST
/V1/products/attributes/:attributeCode/options
ahora admite la actualización de una opción de atributo existente.
- El precio de una opción personalizada con un precio porcentual ahora se convierte según lo esperado en la moneda base de la tienda activa en implementaciones de varias tiendas. Anteriormente, el precio de una opción personalizada con un precio porcentual se convertía incorrectamente. GitHub-26432
- Los comerciantes ahora pueden guardar correctamente un nuevo atributo durante la creación del producto. Anteriormente, la aplicación no guardaba el atributo y redirigía al comerciante a la página de inicio de la vista de la tienda cuando intentaba guardarlo. GitHub-30362
- Las cuadrículas de productos de las páginas Ventas > Pedidos y Catálogo > Productos ahora enumeran todas las tiendas relevantes, no solo la tienda creada más recientemente. GitHub-29267
- El repositorio de productos ahora usa
store_id
cuando está disponible para guardar los valores de atributo de un producto existente. Anteriormente, la clase de repositorio de productos sobrescribía el ID de almacén de productos y siempre asignaba el ID de almacén predeterminado. GitHub-29933
Regla de catálogo
- Las reglas de precios de catálogo ahora funcionan según lo esperado con opciones personalizadas en las páginas de detalles del producto. Anteriormente, los precios de los productos en esa página no reflejaban las reglas de precios de catálogo aplicables. GitHub-22856
- Las cachés de productos y catálogos ahora caducan según lo programado. Anteriormente, las cachés caducaban a diario porque
сron
ejecutaba la tareacatalogrule_apply_all
una vez al día, lo que reindexaba todas las reglas de catálogo y los indexadores dependientes, y borraba la caché de todos los productos y categorías.
Cleanup
Escritura y limpieza gramatical
- Se ha revisado el título de la página Error de pedido para comprobar su precisión. Anteriormente, esta página se titulaba: Hemos recibido su pedido.. GitHub-29416
- Se eliminaron espacios innecesarios en
app/code/Magento/Contact/view/frontend/templates/form.phtml
. GitHub-29779
- Se corrigió un error tipográfico en el mensaje de ayuda del subcomando
bin/magento/setup:config:set
. GitHub-28802
- Se ha corregido la gramática en el PHPDoc del archivo
framework/Registry.php
. GitHub-29661
- Se eliminó el espacio en blanco superfluo de
app/code/Magento/Catalog/Helper/Product/View.php
. GitHub-30601
- Se corrigió un error tipográfico en un nombre de función en
app/code/Magento/Ui/view/base/web/js/form/element/ui-select.js
. GitHub-29987
- Se ha corregido la pluralización de "item" en el minicarrito y el resumen del pedido de cierre de compra. GitHub-29920
- Se han eliminado los espacios en blanco en los elementos en línea en los filtros de navegación por capas de marcado. GitHub-30448
rl
se ha corregido aurl
en\Magento\Framework\Filter\Template\Tokenizer\Parameter
. GitHub-29185
Limpieza de código
- Se ha quitado una etiqueta de HTML
<br>
superflua del área de mensajes Comprobar datos de la página Sistema > Importar.
ChangeQuoteControl
se ha refactorizado. GitHub-29673
AccessChangeQuoteControl
y sus pruebas unitarias se han refactorizado. GitHub-29672
- Se corrigió el estilo de código de la declaración de tipo devuelto en
app/code/Magento/Captcha/CustomerData/Captcha.php
. GitHub-29712
- Se ha corregido la posición de la lista de botones en la página Nuevo atributo.
- Se ha agregado la clase de bloque correcta para el ejemplo de referencia de front-end
viewModel
para la clase\Magento\Framework\View\Element\Template
. GitHub-30450
- Se ha eliminado un conjunto de campos redundante del formulario Regla de venta. GitHub-29599
- Se ha eliminado código innecesario de la plantilla
hierarchy/edit.phtml
.
- Se corrigió el comentario de PHPdoc en
app/code/Magento/CatalogImportExport/Model/Export/Product.php
. GitHub-30833
- Se ha corregido la anotación docblock del mensaje
PublisherInterface
. GitHub-30190
- Argumentos corregidos en el método
getStatusByState
. GitHub-30173
- Se corrigió la descripción del método en
app/code/Magento/Quote/Model/Cart/Totals/ItemConverter.php
. GitHub-30125
- Se han eliminado asignaciones de variables redundantes en la misma línea en varios archivos. GitHub-30133
- Se cambió
@param string $attribute
a@param AbstractAttribute|string[]|string $attribute
enEntityAbstract.php
. GitHub-30191
- Se han quitado etiquetas no válidas (por ejemplo,
@package
y@subpackage
) de los bloques de documentos en toda la base de código. GitHub-30061
- Se han quitado los parámetros no utilizados en la construcción de la clase
AdvancedPricing
. GitHub-29531
Productos configurables
- El filtrado de productos configurables sin existencias por precio ahora muestra los resultados dentro del rango de precios correcto.
- Un producto virtual ya no cambia de tipo cuando su estado se cambia de habilitado a deshabilitado (o viceversa). Anteriormente, la aplicación cambiaba el tipo de un producto de virtual a simple cuando cambiaba su estado.
- El método
getValue()
ya no almacena en déclencheur un error irrecuperable al actualizar los carros de compras.
- Los productos configurables que están disponibles en varios sitios web ya no muestran productos secundarios simples que no están asignados al sitio web específico. GitHub-28291
- Las páginas de productos de Storefront ahora muestran precios de nivel sin impuestos como se esperaba. GitHub-12225
- Los precios del MSRP para los productos configurables ahora se convierten correctamente a la moneda elegida. Anteriormente, la aplicación mostraba los precios en la moneda incorrecta y arrojaba el siguiente error:
Call to a member function setAppliedTaxes() on null
. GitHub-26526, GitHub-29603
- Los comerciantes ahora pueden guardar una etiqueta de opción de atributo de muestra de texto específica de un almacén con un valor de 0 (cero). Anteriormente, un valor de 0 se reemplazaba por el valor de la opción Etiqueta de administrador. GitHub-30073
cron
- La lista de mensajes del sistema ahora refleja con precisión las actualizaciones de productos después de que
cron
se haya ejecutado y la aplicación haya actualizado los productos según lo programado.
- Se ha agregado un índice basado en
schedule_id
ystatus
a la tablacron_schedule
. GitHub-29601
Atributos del cliente personalizados
- La aplicación ahora muestra atributos del cliente de tipo
file
en la página Información de cuenta después de la creación. Anteriormente, al intentar guardar un nuevo atributo de este tipo, la aplicación mostraba estos errores:The "newAttribute" attribute value is empty. Set the attribute and try again
yValidation is failed
.
- La aplicación ahora muestra correctamente los valores de atributos del cliente personalizados de varias líneas. Anteriormente, no se mostraban todos los datos.
- La aplicación ahora avisa a los compradores cuando introducen una fecha de nacimiento no válida al crear una cuenta. Anteriormente, el validador no tenía en cuenta la configuración regional y se redirigía a los compradores a la página Crear nueva cuenta de cliente con un error de fecha no válido.
- Los atributos de dirección personalizados ahora se incluyen según lo esperado en la Etapa de pago del flujo de trabajo de cierre de compra.
- Los atributos de selección múltiple de direcciones personalizadas ahora se muestran correctamente durante el cierre de compra de invitados y en la página de detalles de pedidos de Administración y Mi cuenta.
- Ahora puede eliminar un cero a la izquierda en un atributo de cliente personalizado cuando
Input Type
se establece enText
yInput Validation
se establece enNumeric Only
.
- La aplicación ahora exporta correctamente datos de clientes que incluyen un valor de atributo de género personalizado.
Cliente
- El widget de calendario para el campo Fecha de nacimiento de la página de cuenta del cliente de tienda ahora utiliza la configuración regional de tienda designada.
- La aplicación ya no guarda entradas duplicadas de una dirección de cliente durante la retirada de un pedido nuevo para un cliente existente del administrador.
- Al eliminar todas las direcciones de varios clientes desde el Administrador, ahora se eliminan todas las direcciones de la lista de direcciones de clientes y se eliminan las direcciones de facturación y envío predeterminadas. Anteriormente, la aplicación eliminaba la dirección de la lista de direcciones de clientes, pero no eliminaba las direcciones de facturación y envío predeterminadas.
- La pestaña Admin customer address ahora muestra correctamente el recuento de direcciones después de que un administrador haya realizado una eliminación masiva de direcciones. Anteriormente, la aplicación incluía direcciones eliminadas en el recuento.
- Se ha corregido el formato DateTime del campo Fecha de nacimiento de la página de registro de cliente. Anteriormente, faltaba el cero a la izquierda que precedía a un día de un solo dígito.
- La validación del formato de fecha para el campo Fecha de nacimiento funciona ahora antes de que el comprador haga clic en el botón Crear una cuenta. Anteriormente, un comprador podía introducir un valor en un formato no válido y, cuando hacía clic en el botón Crear una cuenta, se redirigía al comprador a la página Crear nueva cuenta de cliente con un error de fecha no válido.
- La aplicación ya no genera un error grave cuando un administrador intenta guardar una nueva cuenta de cliente que contiene datos no válidos para un atributo.
- La aplicación ya no emite un error 400 cuando un cliente intenta acceder a su carro de compras en una implementación en la que Magento Shipping estaba instalado anteriormente y la temática de Luma predeterminada está implementada actualmente. Anteriormente, la aplicación no filtraba los nombres de sección creados por módulos instalados o habilitados anteriormente que no eran compatibles con el administrador antes de enviar solicitudes al servidor, lo que generaba errores.
- La aplicación ahora muestra un mensaje como se espera cuando un comprador crea una cuenta de invitado cuando la configuración Requerir confirmación de correo electrónico está habilitada y
Magento\Customer\Controller\Account\CreatePost
se ha anulado. Anteriormente, la aplicación no permitía este tipo de personalización del proceso de registro de usuarios y, bajo estas condiciones, el estado de confirmación de correo electrónico de un usuario se consideraba completo, el nuevo usuario iniciaba sesión automáticamente y no se mostraba ningún mensaje de error.
- La aplicación ahora asigna un comprador al grupo de clientes correcto cuando el comprador realiza un pedido con un grupo de clientes no predeterminado en una tienda donde la opción Habilitar la asignación automática al grupo de clientes está habilitada. GitHub-26976
- La cuadrícula de clientes administradores ahora está disponible como se espera cuando el sitio web no predeterminado se elimina en una implementación de varios sitios cuando los índices se establecen en Actualizar mediante programación. Anteriormente, la aplicación no mostraba la cuadrícula y arrojó este error:
[2020-12-09 11:31:54] report.CRITICAL: The website with id 2 that was requested wasn't found. Verify the website and try again. \{"exception":"[object] (Magento\\Framework\\Exception\\NoSuchEntityException(code: 0): The website with id 2 that was requested wasn't found. Verify the website and try again. at /var/www/html/magento24ee/vendor/magento/module-store/Model/WebsiteRepository.php:110)"}
dotdigital
-
La gestión de errores se ha mejorado al recuperar listas de programas desde dotdigital Engagement Cloud.
-
El valor que se sincroniza en la columna de nombre de tienda durante la sincronización de invitados es ahora el nombre de la vista de tienda según lo esperado. Anteriormente, el nombre del sitio web se incluía en esta columna.
-
Se ha añadido una comprobación de matriz antes de realizar un bucle en las automatizaciones del estado de los pedidos después de guardar un pedido.
-
Se han resuelto problemas con las actualizaciones del Compositor que eran el resultado de la dependencia del módulo dotdigital de
magento/module-authorization
.
Descargable
- La aplicación ya no incluye un producto descargable en la pestaña Mis productos de descarga después de que el pedido al que pertenece se haya reembolsado parcialmente. GitHub-28388
EAV
- Los atributos personalizados que usan
\Magento\Eav\Model\Entity\Attribute\Backend\ArrayBackend
ahora usan valores predeterminados si no se proporciona ningún valor en la carga útil cuando se crea un producto mediante una llamada de API.
Correo electrónico
\Magento\Config\Model\Config\Source\Email\Template::toOptionArray
ya no genera un error cuando no se llama asetPath()
antes detoOptionArray()
. GitHub-29315
- La aplicación ahora convierte correctamente el texto sin formato en HTML al hacer clic en Devolver la versión HTML al cargar una plantilla de correo electrónico.
- El correo electrónico enviado a los clientes que contienen facturas parciales ahora incluye subtotales de artículos precisos. Anteriormente, el subtotal de este correo electrónico era el total de la cantidad pedida, no la cantidad total de la cantidad facturada.
- La aplicación ahora envía recordatorios por correo electrónico a todos los clientes relevantes con direcciones de correo electrónico válidas. Anteriormente, la aplicación dejaba de enviar correos electrónicos de recordatorio a los clientes después de encontrar una dirección no válida.
- El envío del correo electrónico de ventas en modo asincrónico ahora funciona como se espera después de que se elimine un producto de un catálogo. Anteriormente, el envío asincrónico de correo electrónico se bloqueaba y la aplicación mostraba este error:
main.ERROR: Cron Job sales_send_order_invoice_emails has an error: Call to a member function getData() on null. Statistics: {"sum":0,"count":1,"realmem":0,"emalloc":0,"realmem_start":73400320,"emalloc_start":37177640} [] []main.CRITICAL: Error when running a cron job {"exception":"[object] (RuntimeException(code: 0): Error when running a cron job at /var/www/html/vendor/magento/module-cron/Observer/ProcessCronQueueObserver.php:327, Error(code: 0): Call to a member function getData() on null at /var/www/html/vendor/magento/module-catalog/Helper/Image.php:502)"} []
. GitHub-26878
- La aplicación ya no copia a un cliente en el correo electrónico de confirmación de pedido cuando
sales_email/order_comment/enabled
está deshabilitado ysales_email/order_comment/copy_method
está establecido enbcc
. GitHub-29915
Marcos
- Los grupos de filtros personalizados ahora se aplican correctamente al buscar clientes. Anteriormente, la función
afterSearch
no tenía los filtros OR esperados. GitHub-24576
- Las imágenes de la página principal de una tienda ahora se representan correctamente. Anteriormente, el HTML de origen de página estaba dañado porque las tres barras consecutivas del código base64 de la imagen se interpretaban erróneamente como un comentario.
- DatePicker ahora funciona correctamente al filtrar pedidos en la lista Pedidos de administración en tiendas que usan la configuración regional árabe (
ar_SA - Saudi Arabia
).
- DatePicker ahora muestra la fecha correcta después de que un comerciante guarde una regla de precio de carro de compras en una implementación. GitHub-30382
- La aplicación ahora representa correctamente la agrupación de miles árabes y los símbolos separadores decimales árabes. Anteriormente, los símbolos árabes estaban recortados. GitHub-26676
- La aplicación ahora elimina las sesiones de base de datos caducadas de la tabla de base de datos
session
según lo esperado.
Correcciones generales
- Ahora puede configurar un controlador de sesión nativo distinto del controlador definido en
php.ini
. Anteriormente,SessionManager
no establecía memcache comosave_handler
, sino que usabasession_handler
del archivo. la aplicación arrojó este error:main.CRITICAL: Warning: SessionHandler::read(): open(127.0.0.1:11211/sess_0imeeaqmnvemdg4e3h57tat0ik, O_RDWR) failed: No such file or directory (2) in../vendor/magento/framework/Session/SaveHandler/Native.php on line 22 {"exception":"[object] (Exception(code: 0): Warning: SessionHandler::read(): open(127.0.0.1:11211/sess_0imeeaqmnvemdg4e3h57tat0ik, O_RDWR) failed: No such file or directory (2) in ../vendor/magento/framework/Session/SaveHandler/Native.php on line 22 at ../vendor/magento/framework/App/ErrorHandler.php:61)"}
. GitHub-24717
-
Se han realizado las siguientes mejoras en los módulos
LoginAsCustomer
:-
Reemplazó el complemento
around
conafter
-
Código redundante eliminado
-
Reemplazó a
(bool)->getValue()
conisSetFlag
. GitHub-29689
-
- La recarga de todas las secciones de datos de clientes mediante el comodín (*) ya no hace que las solicitudes a
customer/section/load
generen un error 400. GitHub-28154
- La aplicación ahora pasa a
var/report
las excepciones que se producen cuando se procesa un diseño en el modo de producción. GitHub-29606
- Los comerciantes ahora pueden desasignar productos de las categorías según lo esperado. Anteriormente, la aplicación arrojó un error similar a este error:
Could not save product "4" with position 0 to category 3
.
- La aplicación ahora emite una excepción cuando un cliente que no existe solicita un restablecimiento de contraseña. GitHub-26288
- La aplicación ahora muestra un mensaje de error informativo cuando un administrador intenta guardar una cuenta de cliente que contiene un valor no válido para un atributo de cliente mientras carga un archivo que contiene este valor de atributo. Anteriormente, la aplicación arrojaba un error grave. GitHub-30295
- La aplicación ahora aplica el ajuste de configuración Logotipo para la vista de impresión del HTML a los PDF de facturas de tienda según lo esperado. GitHub-24730
static::
se ha reemplazado conself::
en todo el código base para tener acceso a constantes privadas. GitHub-30781
- La aplicación ahora abre la página Nuevo atributo como se espera cuando un comerciante hace clic dos veces en el botón Crear nuevo atributo durante la creación del producto. Anteriormente, la aplicación mostraba una página vacía y arrojaba un error. GitHub-30361
- La aplicación ya no muestra el mensaje
The coupon code has been accepted
después de quitar un cupón. GitHub-30255
- Los administradores ahora pueden asignar widgets a categorías específicas. GitHub-30009
- El selector de atributos
input[type=datetime]
se ha reemplazado con un selector de tipo de entrada menos específico. GitHub-30064
- La aplicación ahora muestra valores específicos de tienda asociados con atributos de categoría personalizados según lo esperado. GitHub-13440
- La aplicación ahora muestra un mensaje preguntando si el grupo de clientes debe cambiarse al hacer clic en el botón Validar número de IVA en la página de creación de pedidos cuando la dirección de la tienda y el destino de envío pertenecen a diferentes países de la UE. GitHub-29652
- La clase
\Magento\Catalog\Model\ImageUploader
se ha refactorizado para utilizar el nuevo métodomoveFileFromTmp
. GitHub-29598
- La aplicación ahora muestra un mensaje de error más informativo cuando un comerciante intenta crear un atributo de producto con
product_type
ytype_id
códigos para que sea más descriptivo. GitHub-28479
- Se ha corregido la lógica de validación de los campos Duración del token de cliente (horas) y Duración del token de administrador (horas) en la página Administrador Tiendas > Configuraciones > Servicios > OAuth. GitHub-29502
- La aplicación ahora analiza correctamente el texto que contiene
}}
en el campo de contenido del widget. GitHub-12087
- Ahora puede quitar un filtro de la página Categorías de productos. Anteriormente, al intentar eliminar el filtro, la aplicación no le permitía quitar el filtro y mostraba este error:
Something went wrong
. GitHub-8538
- Ahora se puede crear una instancia de
Magento\Framework\MessageQueue\ConfigInterface
cuando el módulo opcionalMagento_MessageQueue
esté deshabilitado. Anteriormente, la aplicación arrojó este error:PHP Fatal error: Uncaught Error: Cannot instantiate interface Magento\Framework\MessageQueue\ConfigInterface in /var/www/magento2/magento2/lib/internal/Magento/Framework/ObjectManager/Factory/AbstractFactory.php:121
. GitHub-26080
- Se ha mejorado la lógica que determina cuándo la aplicación puede recuperar el valor del correo electrónico del almacenamiento persistente. Anteriormente, la aplicación mostraba campos de contraseña rellenados en la página de cierre de compra cuando un usuario no registrado regresaba a la página de cierre de compra después de completar por primera vez el campo de correo electrónico. GitHub-26903
- Se ha agregado un atributo
aclResource
que falta al bloque de barra de herramientas del encabezado de administraciónAdminNotification
. Anteriormente, la entrada de la barra de herramientas de notificación de administración era visible incluso cuando el usuario administrador no tenía permisos de recursos de funciones para verla. GitHub-29067
- Las funciones
framework/database/select
where
ahora administrantype
correctamente. GitHub-29590
- Se ha mejorado el uso ineficiente de
array_merge
en bucles en la base de código, lo que ha mejorado el rendimiento en varios lugares, incluido el proceso de implementación de contenido estático. GitHub-30183
- La duración predeterminada de la sesión de administración se ha trasladado del módulo de cifrado al módulo de seguridad. GitHub-30859
- La aplicación ahora comprueba las constantes privadas de una clase y muestra una advertencia si hay alguna llamada de
static::
a ellas. Anteriormente, la aplicación arrojó este error:Undefined class constant
.
- Se agregó compatibilidad con el enlace simbólico
root
en las páginas de errores y en el modo de mantenimiento. Anteriormente, si losroot
omagento/pub
estaban vinculados simbólicamente a un directorio diferente, el procesador de errores (Magento\Framework\Error\Processor
) no generaba una dirección URL de archivo de vista correcta. GitHub-30296
- Se agregó la matriz
order_data
que falta a las clasesEmailSender
. Esto alinea estas clases con la recomendación de Magento de utilizar variables escalares en lugar de objetos dentro de las plantillas de correo electrónico. GitHub-29604
GraphQL
- El solucionador de URL de GraphQL ahora gestiona correctamente los parámetros de consulta. Anteriormente, devolvía NULL al administrar direcciones URL compatibles con SEO con parámetros.
- El solucionador de URL de GraphQL ahora gestiona correctamente la jerarquía de páginas de CMS. Anteriormente, devolvía NULL. GitHub-30474
- Las consultas para los datos
categories.breadcrumbs
de un producto ya no devuelven datos de ruta de exploración para las categorías cuya categoría principal está deshabilitada. GitHub-30468
- La ruta a una imagen de categoría ahora se devuelve correctamente cuando las reescrituras de URL están desactivadas.
- La aplicación ahora devuelve un mensaje más informativo cuando se produce un error con durante una operación de restablecimiento de contraseña de GraphQL. GitHub-30179
- Las posiciones de los productos ahora se actualizan según lo esperado en los resultados de la consulta de GraphQL cuando los resultados de la consulta se almacenan en caché.
- La consulta
products
ahora devuelve los resultados esperados cuando elcategory_id
el filtro se ha especificado con la palabra clavein
. GitHub-30349
- Se agregaron reglas a
editorconfig
para admitir la sangría de archivos JSON y YAML en dos espacios. GitHub-30066, GitHub-30063
- La clase
FlushCacheByTags
se ha actualizado para utilizar complementos posteriores en lugar de complementos. GitHub-29558
- El código del archivo
checkout_index_index.xml
se ha mejorado con la eliminación desortOrder
de los componentesmessages
,authentication
,progressBar
,estimation
ysidebar checkout
. GitHub-30550
- El contenido de
calc
ahora se escapa, lo que da como resultado valores correctos decalc
en el archivo de salida CSS. Anteriormente, la aplicación devolvía un valorcalc
incorrecto. GitHub-30542
- El generador de reescritura de URL ahora establece los valores predeterminados de los objetos de categoría
url_key
,url_path
ystore_id
al guardar las reescrituras de URL de categoría para el ámbito global. Anteriormente, guardóurl_key
,url_path
ystore_id
con los valores del último ID de almacén procesado. GitHub-29585### productos agrupados
- La consulta de productos ahora devuelve todos los datos esperados para los productos agrupados. Anteriormente,
product_links
era una matriz vacía.
- Un producto agrupado aparece ahora como agotado en la página de edición del producto cuando todos los productos secundarios simples están agotados.
- El estado de un producto agrupado ahora se actualiza correctamente en la página de edición del producto cuando el estado de sus productos secundarios simples cambia a sin existencias. Anteriormente, el artículo de stock de inventario para el principal del producto agrupado no se actualizaba después de que sus secundarios cambiaran el estado de stock.
\Magento\Widget\Controller\Adminhtml\Widget\Instance\Validate
ahora reconoce un valor de resultado de frase como un mensaje de error y lo envía al usuario durante la validación del widget. GitHub-27397
- La lista predefinida de atributos de categoría de
Magento\Catalog\Model\Category\DataProvider::getFieldsMap()
se ha reemplazado por una lista de atributos generados a partir de la caché. GitHub-13440
- Se ha eliminado el hash redundante de
req.http.host/client.ip
y el hash lo gestiona el VCL integrado de Varnish. GitHub-29988
- Se agregó una llamada de retorno de error al cargador de archivos de
Magento_Ui
. GitHub-29557
- Se ha corregido una incoherencia de
acl.xml
que se producía cuandoMagento_LoginAsCustomerAssistance
estaba habilitado, peroMagento_LoginAsCustomerAdminUi
oMagento_LoginAsCustomerLog
estaban deshabilitados. Anteriormente, cuando un administrador con estas credenciales intentaba iniciar sesión en Admin, la aplicación mostraba una página en blanco y arrojaba este error cuando:Exception #0 (LogicException): Could not create an acl object: Invalid Document Element 'resource': The attribute 'title' is required but missing. Line: 13
. GitHub-30680
- La aplicación ya no genera un error
Undefined class constant
cuando se genera unInterceptor
durante la creación del complemento. GitHub-28981, GitHub-29879
- La aplicación ahora gestiona correctamente la mensajería y el registro para operaciones asíncronas masivas. Anteriormente, aunque los productos se actualizaban, las tablas
magento_operation
yqueue_message_status
no se actualizaban correctamente y los mensajes del sistema eran incorrectos. GitHub-29718
- Ahora se redirige a un comprador a la página Establecer una nueva contraseña como se espera cuando haga clic en Establecer una nueva contraseña en el correo electrónico Restablecer contraseña cuando Requerir confirmación de correo electrónico esté habilitado para la tienda. Anteriormente, se redirigía al comprador al botón Olvidé su contraseña de la página de inicio de sesión. GitHub-27954
- Se corrigió el error de conversión de matriz a cadena al guardar la configuración del sistema de filas con valores predeterminados. GitHub-30314
- Ahora puede establecer argumentos para colas de mensajes. GitHub-30216
- El recolector de archivos base ahora respeta
AppState->emulateAreaCode()
. GitHub-39656
- La nueva clase
BlockByIdentifier
admite la recuperación de un bloque de diseño basado en el identificador de bloque de CMS. Como resultado, cuando se elimina un bloque de CMS de la caché, la aplicación también borra la caché de bloques de diseño. GitHub-28309
- Se corrigieron problemas con la conversión de argumentos numéricos en colas. Anteriormente, cuando se declaraba una cola con argumentos numéricos
type
enqueue_topology.xml
, el valor del argumento se convertía en cadena. GitHub-29615
GraphQL
- La consulta
urlResolver
ahora administra correctamente los parámetros de la consulta.
- La consulta
urlResolver
ya no devuelve NULL cuando se especifican un nodo y una página de CMS personalizados como entrada. GitHub-30474
- La consulta
category
ya no devuelve categorías secundarias de una categoría principal que se haya deshabilitado. GitHub-30468
- La consulta
category
ahora devuelve la ruta correcta de una imagen de categoría cuando las reescrituras de URL están deshabilitadas.
- La mutación
resetPassword
devuelve ahora un mensaje más informativo cuando se produce un error. GitHub-30179
- Los resultados en caché de la consulta
products
se invalidan según lo esperado cuando cambian las posiciones de los productos. GitHub-30467
- La consulta
products
devuelve ahora los resultados esperados cuando el filtrocategory_id
se especifica con la palabra clavein
. GitHub-30349
- Las consultas
categories
ycategoryList
ahora consideran la disponibilidad de la categoría en función de la configuración de permisos de categoría y el ID de categoría principal. GitHub-29880, GitHub-30624
- La mutación
updateProductsInWishList
ahora valida correctamente los elementos de la lista de deseos. GitHub-30467
-
Se han desaprobado varios atributos en
ProductInterface
yCategoryInterface
para evitar su uso en la tienda. GitHub-30625 -
Los precios ahora están ocultos en los resultados de las consultas de productos cuando los permisos de categoría están configurados para ocultarlos. GitHub-29926
- Ahora puede usar la mutación
addProductsToWishList
para agregar un producto agrupado con una cantidad definida por el usuario a una lista de deseos.
- Ha mejorado el tiempo de respuesta de GraphQL para operaciones de añadir al carro de compras.
- La consulta
products
ahora devuelve valores de precios de nivel según lo esperado. GitHub-29168
- Se eliminó un(a)
getMappedNums
redundante de un bucle enlib/internal/Magento/Framework/GraphQl/Query/EnumLookup.php
. GitHub-30031
- La consulta
products
ya no devuelve un error cuando el producto consultado tiene un producto relacionado deshabilitado. GitHub-28892
- La consulta
cart
ahora devuelve los precios que se han convertido a la moneda correcta (la moneda de presentación predeterminada). Anteriormente, la consulta devolvía el valor del precio del artículo en la moneda base y el código de moneda se devolvía como moneda de presentación predeterminada.
- GraphQL ahora respeta los permisos del catálogo. La aplicación restringe los elementos que se devuelven para una consulta de
products
en función del grupo de clientes del comprador.
- Se agregó el atributo
customizable_option
a varios tipos de datos que implementanCartItemInterface
.
- Se agregaron atributos para la consulta
storeConfig
con el fin de devolver información del almacén, grupo de almacén y sitio web.
- Se restableció el atributo
SelectedCustomizableOption.type
. Además, el atributocustomizable_options
en varias implementaciones deCartItemInterface
ahora no es nulo.
- La funcionalidad de búsqueda de la consulta
products
ya no devuelve elementos en los que se han habilitado permisos de categoría.
- La consulta
products
devuelve la moneda correcta para las vistas de tienda que tienen varias monedas.
- Las etiquetas de
products
filtros de consulta ahora devuelven valores traducidos, cuando corresponde, para vistas de tienda no predeterminadas.
- Se han corregido importes en moneda de tienda en tarjetas de regalo del carro de compras.
- Se agregó el tipo de datos
ConfigurableProductOptionsSelection
, que contiene metadatos correspondientes a las opciones configurables que se pueden seleccionar para un producto. Utilice este objeto en una consultaproducts
para minimizar el número de elementos de la galería de medios que se muestran cuando el comprador selecciona opciones de productos configurables.
Imágenes
- Las imágenes de la página principal de una tienda ahora se representan correctamente. Anteriormente, el HTML de origen de página estaba dañado porque las tres barras consecutivas del código base64 de la imagen se interpretaban erróneamente como un comentario.
- La dependencia de la extensión
fileinfo
se ha eliminado del módulo de CMS. Anteriormente, la aplicación generaba un error al intentar cargar una imagen con el cargador de imágenes, que se iniciaba al hacer clic en el botón Insertar imagen al agregar contenido. GitHub-24332, GitHub-16531, GitHub-29852
- Se agregó compatibilidad para leer metadatos de
exif_image.png
oexif-image.jpeg
. GitHub-1449
- Los colores de las imágenes CMYK ahora se representan correctamente. Cuando el adaptador de Imagick detecta ahora que una imagen abierta tiene un espacio de color CMYK, el espacio de color se convierte en SRGB. Anteriormente, estas imágenes se representaban con colores invertidos. GitHub-22375
- Los valores booleanos ya no se establecen para
image_with_border.phtml
. Se ha quitado la configuración redundantemax-width
yheight
de.product-image-photo
. (Estos valores ya se han establecido globalmente en la imagen mediante los estilos de restablecimiento). GitHub-30186
Importar/exportar
- A la dirección de cliente
region_id
ya no se le asigna un valorNULL
al importar direcciones de clientes mediante un archivo CSV (entity type = "customer address"
yimport behavior = "add/update"
) del que se han eliminado determinados valores de campo.
- Ahora puede ocultar imágenes de productos en la tienda durante la importación.
- Cuando un producto importado tiene
qty
establecido en 0 perois_in_stock set
en 1 en el archivo CSV, el producto no aparece en la página de categoría y la página de detalles del producto lo identifica como agotado. Anteriormente, los productos con estos valores eran visibles en la tienda después de la importación.
- La importación de CSV ya no ignora los valores
dropdown
ytextarea
para atributos adicionales. Anteriormente, estos valores de atributo no se actualizaban durante la importación.
- El archivo CSV de exportación de productos ahora aparece en la lista de administración de archivos CSV de exportación según lo esperado. Anteriormente, la aplicación arrojó un error al ejecutar este comando:
bin/magento queue:consumers:start exportProcessor --single-thread --max-messages=10000
.
- La aplicación ya no genera un error al importar datos CSV que incluyen caracteres del alfabeto bengalí (bengalí).
- La aplicación ahora muestra un mensaje de error informativo cuando un administrador hace clic en Comprobar datos durante la importación de un archivo que se ha cambiado desde la exportación cuando se trabaja en Chrome. Anteriormente, la aplicación mostraba un error de consola, pero no indicaba al usuario cómo proceder.
- La aplicación ya no duplica imágenes de productos cuando se importan los mismos datos CSV del producto más de una vez. GitHub-21885
- Se ha eliminado el límite de 90 caracteres para los nombres de archivo de imagen en
vendor/magento/framework/File/Uploader.php
. Anteriormente, la longitud del directorio y el nombre de archivo no podía superar los 255 caracteres. La aplicación importó productos con imágenes cuyo nombre de archivo superaba este límite, pero no importó el archivo de imagen. GitHub-29377
- Los códigos de cupones ahora se pueden exportar correctamente a CSV o XML. Anteriormente, la aplicación mostraba un error 404 al hacer clic en Exportar CSV o Exportar XML al intentar exportar cupones. GitHub-29277
- Las imágenes de producto duplicadas ahora se eliminan después de importar un archivo CSV que contiene imágenes. GitHub-14398, GitHub-21885
Índice
- Hemos mejorado el rendimiento del indexador parcial. La aplicación ahora borra los ID de caché que se cambiaron para cada iteración de lote de 1000 ID. El contexto de caché ya no acumula ID. Anteriormente, el contexto de caché acumulaba ID de caché para cada iteración de lote de 1000 ID y borraba el mismo conjunto de ID en cada iteración.
- Se han corregido las incoherencias entre el sistema de reindexación parcial y el sistema de reindexación completo. Ambos sistemas de indexación ahora utilizan el mismo código, que funciona correctamente. Anteriormente, ambos sistemas de indexación utilizaban una lógica diferente con respecto a los indexadores compartidos, lo que podía provocar que los indexadores se invalidaran después de cada ejecución del sistema de reindexación parcial. GitHub-29478, GitHub-29297
-
Hemos resuelto problemas con el indexador manual que habían resultado en páginas de categoría vacías o en una cantidad reducida de productos en las páginas de categoría. Se produjeron problemas con páginas de categoría o recuento de productos incompletos cuando:
-
los indexadores parciales
catalogsearch_fulltext
ycatalog_product_price
se ejecutaron en un catálogo grande hasta que estos indexadores completaron la ejecución. -
el indizador parcial se ejecutó en los índices
catalog_category_product
ocatalog_product_category
y, al mismo tiempo, se ejecutó un reíndice completo en uno de esos índices. Estos dos procesos de indexación podrían entrar en conflicto, lo que provocaba que faltaran productos en las páginas de categoría. -
bin/magento indexer:reindex inventory
se ejecutó en un catálogo grande. Faltaban productos de las páginas de categoría hasta que el indizador parcialcatalogsearch_fulltext
completó la ejecución.
-
- Se ha agregado un indizador a la tabla MySQL
Magento_Bulk
, lo que ha mejorado el rendimiento de las operaciones por lotes.
- Los comentarios de las tablas de base de datos ahora reflejan con precisión el estado de la tabla después de volver a indexar (
bin/magento indexer:reindex
). Anteriormente, los comentarios de tabla después de la reindexación contenían los mismos valores que los comentarios contenidos después de una nueva instalación.
- La instrucción
SELECT entity_id IN
se ha mejorado en implementaciones que implementan MariaDB v.10.3.18, lo que ha mejorado el rendimiento de la indexación de categorías de catálogo. GitHub-25199
- El Magento Open Source ha mejorado el rendimiento de la caché al eliminar el vaciado de etiquetas varias veces por instancia del indexador. GitHub-29890
Infraestructura
- Ahora puede usar
app/etc/env.php
para cambiar el agente de mensajes de MYSQL a AMQP.
- Los problemas con el cálculo de los residuos para los valores decimales de las cantidades de productos se han corregido en la biblioteca de JavaScript correspondiente. La aplicación calculaba incorrectamente fracciones decimales de más de dos dígitos y, posteriormente, mostraba un mensaje incorrecto.
- El método
\Magento\Authorization\Model\Rules::update
ha quedado obsoleto. GitHub-29128
- La aplicación ya no emite un error grave al convertir un objeto de fecha de UTC. Anteriormente, en ciertas condiciones, el método
convertConfigTimeToUtc
arrojaba una excepción. GitHub-29525
DataObject
se ha reemplazado con el modelo de producto en\Magento\MediaGalleryCatalogUi\Ui\Component\Listing\Columns\Thumbnail::prepareDataSource
.GitHub-1711
- La resolución
RequireJS
ya no detecta los recursos bloqueados. Anteriormente, la resolución no detectaba correctamente si todos los recursos de una página se cargaban o gestionaban correctamente, y la página se seguía cargando. GitHub-28116
- La validación de código del repositorio de atributos ahora respeta
Magento\Eav\Model\Entity\Attribute::ATTRIBUTE_CODE_MAX_LENGTH
en lugar de un valor codificado de forma rígida. GitHub-29017
- La minificación de HTML ya no elimina las barras triples (https://experienceleague.adobe.com//?lang=es) de las cadenas del HTML en los archivos PHTML. Anteriormente, las barras triples se interpretaban como comentarios durante la minificación y el resto de la línea se eliminaba completamente en el archivo PHTML generado al implementarse.
- Los comerciantes ahora pueden configurar las suscripciones del indexador en el nivel de columna de tabla en lugar de en el nivel de tabla. Se ha agregado un nuevo argumento a
\Magento\Framework\Mview\View\Subscription
para permitir que se omitan las columnas para una vista o combinación de tabla específica. GitHub-30243
- Al hacer clic en el botón Agregar al carro antes de que la página de producto JavaScript se haya inicializado completamente, ya no se generarán valores
form_key
duplicados. Anteriormente, se podía agregar un producto al carro de compras con un valorform_key
almacenado en caché que activaba una excepción. Cuando se hizo clic en Agregar al carro antes de que JavaScript se inicializara completamente, el valorform_key
enviado en los datos del formulario no coincidía con la sesión de los usuarios y el producto no se agregó al carro de compras. GitHub-13746
- El cliente cURL actual ahora respeta los nombres de encabezado que no distinguen entre mayúsculas y minúsculas. Anteriormente, la comparación
Set-Cookie
distinguía entre mayúsculas y minúsculas, lo que podría causar problemas con algunos servidores HTTP. GitHub-29524
- Se ha actualizado el formato XSD URN en
api-functional
y se han probado los archivos XML. GitHub-30552
- Se agregaron un prefijo de evento y un objeto de evento a la colección de valores de opciones de productos del catálogo para mejorar la personalización de la carga de la colección de
\Magento\Catalog\Model\ResourceModel\Product\Option\Value\Collection
. GitHub-29621
- Todas las ocurrencias de
array_merge
se han refactorizado para utilizar el formato recomendado en el estándar de codificación. GitHub-30005
- Se ha agregado un bloque
head.additional
de tipo\Magento\Framework\View\Element\Text\ListText
al diseñoadminhtml
default
(pormagento2/module-base
). GitHub-29165
- Se ha agregado el método de URL de escape que falta al widget de módulo de plantilla de diseño. GitHub-30036
- El método
\Magento\Framework\Filesystem\Io\File::read()
ahora es compatible con\Magento\Framework\Filesystem\Io\IoInterface::read()
. GitHub-27866
Klarna
- Se ha eliminado la dependencia del módulo PayPal. GitHub-29421
Registro
- El módulo
Magento_Logging
ahora registró correctamente nuevos valores, así como los valores que los precedieron. Anteriormente, los valores de la columna Valor antes del cambio mostraban valores N/D independientemente de si este era el primer cambio o el siguiente, o de cuándo se devolvía el valor predeterminado. GitHub-26943
Galería de medios
- La página del administrador Tiendas > Configuración > Avanzado > Sistema se ha actualizado para mostrar el nombre de producto correcto (Galería multimedia). Se han incluido pequeños rediseños en la interfaz de usuario. GitHub-1738
- Los vínculos de la sección Utilizado en de las descripciones de imágenes de la Galería multimedia ahora muestran una cuadrícula que la imagen seleccionada ha filtrado según lo esperado. Anteriormente, la cuadrícula mostrada no tenía un título correcto y las entradas de la lista no eran precisas. GitHub-1694
- Ahora puede editar correctamente varias imágenes en la Galería multimedia. Anteriormente, no se podían agregar etiquetas a una segunda imagen después de agregar etiquetas a una imagen. GitHub-1755
- El menú desplegable Etiquetas ahora está vacío tal como se espera después de quitar etiquetas de una imagen en la Galería multimedia. GitHub-1703
- Ahora se admite el procesamiento por lotes de los mensajes de cola de sincronización de Media Gallery. GitHub-1724
- La aplicación ahora muestra una página 404 como se espera cuando intenta abrir la Galería multimedia cuando Galería multimedia mejorada está deshabilitada. GitHub-1760
MediaGalleryMetadata
omite ahora el lector de segmentos si se produce una excepción y, en su lugar, analiza y muestra los metadatos de imagen según lo esperado. Anteriormente, los metadatos de la imagen estaban vacíos debido a una excepción del lector de segmentosexif_read_data
. GitHub-1782
- La longitud del nombre de la carpeta ya no impide que se cargue una imagen en la Galería multimedia. Media Gallery ahora establece la columna de ruta como tipo
text
. GitHub-1778
- El cargador de imágenes ahora muestra el tamaño de imagen correcto cuando se inserta una representación desde la Galería multimedia. GitHub-1806
- Se ha agregado la verificación de ruta de acceso al complemento cargador
Mediagallery
. Anteriormente, la validación fallaba y la aplicación no importaba productos cuando se deshabilitaba Habilitar la Galería multimedia antigua. GitHub-30649
-
Se han agregado y aplicado
Magento_Cms::media_gallery
subrecursos ACL para la nueva galería de medios con el fin de admitir permisos configurados para las siguientes operaciones discretas:- Cargar recursos
- Insertar recursos en el contenido
- Eliminar recursos
- Creación de carpetas
- Elimine carpetas. GitHub-1487
- Las cadenas de texto y los nombres de carpeta de la Galería multimedia larga ya no se recortan. Anteriormente, la aplicación mostraba texto e imágenes recortados y este mensaje:
We couldn't find any records
. GitHub-1763, GitHub-1758
- La aplicación ya no muestra el botón Agregar selección cuando no se ha seleccionado ninguna imagen al editar el contenido de una nueva página. GitHub-1769
- Los filtros ahora se aplican según lo esperado en la cuadrícula de categoría Contenido > Galería de medios. GitHub-1763
- La configuración de las opciones de multiplicación de puntos de interrupción de Gallery ahora funciona según lo esperado. Anteriormente, la configuración de opciones de punto de interrupción no funcionaba correctamente porque
mediaCheck
activaba la función de consulta de medios de salida al cargar la página. GitHub-29933
MFTF
- Se reemplazaron las acciones repetitivas por grupos de acciones en
CheckStaticBlocksTest
. GitHub-30561
AdminUpdateCategoryAndMakeInactiveTest
yVerifyChildCategoriesShouldNotIncludeInMenuTest
se han refactorizado para cumplir con las prácticas recomendadas de MFTF. GitHub-30058
- Se eliminó el duplicado
AdminOpenCMSBlocksGridActionGroup
. GitHub-30896
- Se reemplazó
AdminOpentCmsBlockActionGroup
con AdminOpenCmsBlockActionGroup. GitHub-29839
GoToAttributeGridPageActionGroup
obsoleto. GitHub-30103
- Se agregaron grupos de acciones al módulo
Analytics
. GitHub-29500
- Se actualizaron
CheckCheckoutSuccessPageAsRegisterCustomerTest
yCheckCheckoutSuccessPageAsGuestTest
para cancelar los pedidos creados después de ejecutar las pruebas. GitHub-28324
- Se eliminó
AdminNavigateToPageGridActionGroup
debido a la redundancia. GitHub-29838
- Se implementó
ActionGroup
para navegar a la página de cierre de compra. GitHub-29843
- Se implementó
AdminOpenCreateNewCMSPageActionGroup
para navegar y crear una nueva página de CMS. GitHub-29824
- Se han corregido problemas con la omisión en pruebas MFTF para la página de CMS para la Galería de medios. GitHub-30164
Nuevas pruebas
- Se ha añadido una prueba para habilitar el correo electrónico a un amigo en el Administrador. GitHub-29145
- Un administrador ha añadido una prueba para eliminar un bloque de CMS de una cuadrícula. GitHub-30372
- Se ha añadido una prueba para aplicar una regla del carro de compras a un solo elemento de paquete. GitHub-28921
- Se agregaron pruebas para comprobar si la información de Utilizado en para una imagen de la Galería multimedia se muestra después de que se eliminara la entidad. GitHub-1774
Nuevos grupos de acción
-
AssertStorefrontCustomerLogoutSuccessPageActionGroup
. GitHub-29841 -
AdminOpenConfigurationStoresPageActionGroup
. GitHub-29848 -
ReloadPageActionGroup
. GitHub-30683 -
StorefrontClickRefundTabCustomerOrderViewActionGroup
. GitHub-30032 -
AdminOpenAdminThreeDSecurePageActionGroup
. GitHub-29845 -
AdminCustomerClickFirstRowEditLinkActionGroup
. GitHub-29501 -
StorefrontClickAddToCartButtonActionGroup
. GitHub-29823 -
AdminDeleteTaxRateActionGroup
. GitHub-29940 -
AdminOpenWebConfigurationPageActionGroup
. GitHub-29846 -
AdminOpenGeneralConfigurationPageActionGroup
. GitHub-29847 -
AdminOrderClickSubmitOrderActionGroup
. GitHub-29649 -
AdminOpenCatalogProductPageActionGroup
. GitHub-29941 -
AdminClickInvoiceButtonIntoOrderActionGroup
. GitHub-25399 -
AdminGridBulkActionGroup
. GitHub-28324 -
AdminGridColumnShowActionGroup
. GitHub-28324 -
AdminOpenIndexManagementPageActionGroup
. GitHub-29825 -
AdminOpenCatalogSearchTermIndexPageActionGroup
. GitHub-29844 -
AdminClickAddProductToggleAndSelectProductTypeActionGroup
. GitHub-30917 -
StorefrontCheckoutClickSaveAddressButtonActionGroup
. GitHub-30916 -
AdminOpenCurrencyRatesPageActionGroup
. GitHub-30783 -
AdminClickGetShippingMethodsAndRatesActionGroup
. GitHub-30782 -
AdminSelectFixedShippingMethodActionGroup
. GitHub-30782 -
StorefrontClickProceedToCheckoutActionGroup
. GitHub-30926 -
StorefrontOpenMyAccountPageActionGroup
. GitHub-29842
Newsletter
- Los usuarios administradores ahora pueden editar una cuenta de cliente como se espera cuando el cliente se suscribe a un boletín informativo en cola. GitHub-30645
- La aplicación ahora vuelve a enviar la confirmación de suscripción al boletín informativo si el comprador no confirma su suscripción. GitHub-28422
- Ahora puede editar una cuenta de cliente como se espera cuando el cliente está suscrito a un boletín informativo en cola. GitHub-30645
Métodos de pago
- Los métodos de pago ahora se cargan en el Administrador para todos los sitios web, tal como se espera en una implementación de varias tiendas.
- La aplicación ahora completa pagos de Payflow Pro correctamente cuando el nombre del comprador contiene letras acentuadas. Anteriormente, el pago no se completaba y la aplicación registró este error:
report.CRITICAL: String to be escaped was not valid UTF-8 or could not be converted
.
PayPal
- Los comerciantes ahora pueden realizar correctamente un pedido del administrador después de cambiar de un método de pago que utiliza una tarjeta de crédito a un método de pago que no sea de tarjeta de crédito. Anteriormente, cuando un comerciante hacía clic en el botón Enviar pedido, se iniciaba el proceso de carga, pero nunca se completaba, y no se realizaba el pedido.
- La aplicación ya no crea pedidos duplicados cuando se realiza un pedido con PayPal Express. Anteriormente, cuando un comprador intentaba pagar un pedido con PayPal Express pero PayPal devolvía un error, la aplicación seguía creando el pedido. Esto resultó en pedidos duplicados en el sitio del comerciante. GitHub-13952
- Los informes de Liquidación de PayPal ya están disponibles en Informes > Ventas > Liquidación de PayPal, según lo esperado. Anteriormente, la aplicación no enumeraba estos informes en la cuadrícula del informe de liquidación de PayPal y mostraba este mensaje:
We couldn't find any records
.
- Hacer clic en el botón PayPal durante el cierre de compra ya no déclencheur una llamada
web-api
redundante. Anteriormente se activaban dos solicitudes, lo que duplicaba el cargo del producto.
- Los compradores invitados ahora pueden hacer pedidos mediante PayPal cuando la opción Asignación automática al grupo de clientes esté habilitada. El pago se procesa en la puerta de enlace de PayPal, el pedido se crea en el Magento y el comprador ve la página de agradecimiento del pedido. Anteriormente, el pedido se procesaba correctamente en la puerta de enlace de PayPal, pero no se creó en Magento Open Source. En su lugar, se redirigió al comprador a la página de revisión de pedidos, donde la aplicación mostró este error:
Failed address validation: %1" error
. GitHub-25399
Rendimiento
- Se han solucionado los problemas de rendimiento de
module-catalog-import-export/Model/Import/Product/Option.php
. Se ha reducido el tiempo necesario para exportar o importar más de 100 000 registros. Consulte el artículo de la base de conocimiento Importar/exportar tarda más de lo esperado con un gran número de opciones de productos.
Magento_Csp/Model/BlockCache
se ha refactorizado para reducir tanto el consumo de memoria como la generación de cadenas en caché innecesariamente grandes. Anteriormente, las páginas que incluían scripts y estilos en la lista blanca dinámica solían experimentar problemas de rendimiento. GitHub-29964
- Hemos mejorado el rendimiento de las exportaciones programadas de catálogos que incluyen más de 100.000 productos que utilizan consumidores.
- La aplicación ya no vacía la caché de categorías cuando se agrega o guarda un producto deshabilitado en una categoría. Anteriormente, la aplicación vaciaba la caché para categorías relacionadas a pesar del estado del producto, que afectaba al rendimiento del servidor.
- Se ha mejorado el tiempo de carga de la página para actualizar la cantidad de productos en el carro de compras. Anteriormente, la aplicación ejecutaba varias consultas independientes para cada producto en el carro de compras, lo que aumentaba el tiempo de carga de la página.
- Se ha agregado un indizador a la tabla MySQL
Magento_Bulk
, lo que ha mejorado el rendimiento de las operaciones por lotes.
- La aplicación ahora almacena en caché los ID secundarios de los productos configurables. Esto ha mejorado el rendimiento de carga de página al reducir el número de solicitudes de base de datos. GitHub-30585
- Se ha mejorado la carga del tablero de administración. Anteriormente, la aplicación mostraba los nombres de las pestañas como una lista antes de que la página terminara de cargarse.
- Se ha mejorado la administración de la caché de Redis mediante la adición de límites de caducidad para las cachés de diseño. Anteriormente, las cachés de Redis alcanzaban rápidamente la memoria máxima asignada en implementaciones grandes y la aplicación arrojaba errores en las operaciones de escritura.
- Se mejoró el rendimiento de la desprotección eliminando una consulta de base de datos redundante en
app/code/Magento/Catalog/Model/CategoryLink.php
. GitHub-29453
Magento\Framework\DB\Adapter\Pdo\Mysql->isTableExists
se ha refactorizado para mejorar el rendimiento. Se han reducido las llamadas redundantes aSHOW TABLE STATUS
para comprobar la existencia de una tabla. GitHub-29662
getPageLayoutsConfig
se ha guardado en la caché, lo que ha mejorado el rendimiento del generador de configuración. GitHub-29546
Persistente
- Los compradores ya no pueden realizar un pedido después de que la cookie de sesión haya caducado cuando el carro de compras persistente esté habilitado. En su lugar, la aplicación muestra la página de inicio de sesión para que el comprador pueda iniciar sesión. Anteriormente, la aplicación realizaba el pedido. La aplicación no validó correctamente al cliente persistente cuando
PHPSESSID
había caducado y se volvió a crearcustomerSession
a partir de la información persistente.
- La aplicación ahora muestra el mensaje de bienvenida como se espera después de que un comprador inicie sesión en una tienda en la que esté habilitado el carro de compras persistente. Anteriormente, la aplicación mostraba ¿No es usted? mensaje después de iniciar sesión.
- La aplicación ya no muestra ¿No es usted? texto cuando un cliente selecciona la opción Recordarme al iniciar sesión en una implementación donde el carro de compras persistente esté habilitado.
- La aplicación ya no muestra el contenido del carro de compras de un cliente una vez caducada la sesión del cliente. Anteriormente, la aplicación mostraba este error cuando un cliente invitado intentaba desproteger cuando se habilitaba el carro de compras persistente:
No such entity with cartid = 0
.
Precio
- Las actualizaciones de precios asíncronas consecutivas ya no interfieren entre sí y se asigna el estado correcto a cada operación. Anteriormente, si fallaba una actualización de precios asincrónica, todas las siguientes actualizaciones de precios asincrónicas fallaban hasta que se reiniciara el consumidor de cola correspondiente. GitHub-27865
Informes
- Informes > Marketing > Productos en los carros de compras ahora solo muestra el registro en el ámbito permitido del usuario que está generando el informe. Anteriormente, todos los datos estaban disponibles para todos los ámbitos.
- La aplicación ahora utiliza la moneda especificada en el ámbito de función del comerciante que genera el informe al mostrar la moneda del producto en el informe Productos en el carro de compras.
- Las funciones de producto Vistos recientemente y Comparados recientemente ahora muestran estadísticas para diferentes tiendas y sitios web en el administrador, tal como se espera en una implementación de varias tiendas. Anteriormente, estas funciones no tenían en cuenta todas las tiendas o sitios web.
- Los informes Precios en pedido ahora utilizan el símbolo de divisa correcto.
- La aplicación ahora comprueba la existencia de un token cuando un usuario hace clic en el botón Ir al informe avanzado del panel de administración. Si el token existe, la aplicación muestra la página Informes avanzados. Si el token no está configurado, la aplicación muestra una página informativa en la Guía del usuario. GitHub-25411
Críticas
- La página Nueva revisión ahora se carga según lo esperado al hacer clic en el botón Nueva revisión en Administración Marketing > Todas las revisiones. Al hacer clic en un producto de esta página, se abre el nuevo formulario de revisión esperado para ese producto.
- La aplicación ya no genera este error cuando intenta editar un pedido del administrador Marketing > Todas las revisiones:
Uncaught TypeError: Event.observe is not a function
. GitHub-30388
Ventas
- La columna
order_created_at
desales_shipment_grid
ahora se actualiza como se espera después de cada actualización.
- Ahora puede reordenar correctamente un producto con una fecha de opciones personalizadas de un almacén para el cual Usar JavaScript Calendar está habilitado. Anteriormente, al intentar reordenar, la aplicación no agregaba el elemento al carro de compras y mostraba este error:
Could not add the product with SKU "simp1" to the shopping cart: Please specify date required option(s).
- La aplicación ya no cierra inmediatamente un pedido cuando un comprador extrae un pedido que consta de un producto virtual con un coste total de 0 $ en implementaciones en las que el método de extracción de subtotales cero está habilitado.
- La aplicación ya no archiva una solicitud antes de procesarla. Anteriormente, la acción de selección múltiple en la cuadrícula de orden de administración afectaba a los pedidos no seleccionados.
- La cuadrícula de notas de crédito ahora muestra el símbolo de moneda correcto cuando el Rial saudí (SAR) está establecido como moneda base.
- La aplicación ahora muestra de forma consistente la información de la dirección de envío según lo esperado en la página de pedidos durante el cierre de compra.
- El valor de
total_qty
coincide ahora con el valor detotal_qty_ordered
en las facturas de ventas.
- El envío asincrónico de correos electrónicos de ventas ahora envía correos electrónicos solo para los pedidos creados después de la fecha de la última actualización. Anteriormente, la aplicación no filtraba los correos electrónicos por fecha cuando el envío asincrónico estaba habilitado.
- La aplicación ahora envía el correo electrónico de factura según lo esperado cuando se realiza un pedido desde el administrador.
- La aplicación ahora borra los datos de pedidos existentes durante una sesión en la que un comerciante crea un nuevo pedido para un cliente desde el administrador.
- Ahora puede cambiar el grupo de clientes para los clientes nuevos que se crean mediante una orden de administrador cuando la opción Habilitar la asignación automática al grupo de clientes está habilitada. También puede asignar un grupo de clientes en función de la validación de IVA. Anteriormente, al validar el número de IVA, el objeto de solicitud no comprobaba la solicitud asignada
group_id
. De manera predeterminada, utilizó el valor predeterminadogroup_id
.
- La aplicación ya no cambia el estado de un estado de pedido personalizado con el estado
Suspected Fraud
aProcessing
después de que un comerciante cree un envío parcial mediante la API de REST.
Regla de ventas
- Los códigos de cupones que se han aplicado en función del método de envío ya no se aplican cuando un comprador cambia el método de envío. Anteriormente, la aplicación no borraba los códigos de cupones cuando los compradores cambiaban de método de envío.
- Los compradores no pueden aplicar un código de cupón con más frecuencia de la que permite la configuración Usos por cliente. Anteriormente, si un comprador tenía varias ventanas de explorador abiertas y realizaba varios pedidos simultáneamente, cada pedido recibía el descuento, aunque la configuración Usos por cliente tuviera un valor de 1.
Buscar search-heading
- Elasticsearch ya no genera un error de modificador desconocido cuando un comprador busca un sinónimo de búsqueda. Anteriormente, el escape carecía de un símbolo de barra diagonal de escape en las expresiones regulares, lo que resultaba en un error grave.
- La búsqueda avanzada ya no devuelve los elementos secundarios de los productos configurables como resultados de búsqueda individuales cuando los productos secundarios se configuraron con la visibilidad establecida en No visible individualmente.
- El tipo de nombres de productos del Elasticsearch en los resultados de búsqueda ya no distingue entre mayúsculas y minúsculas.
- La página de resultados de búsqueda ahora se almacena en caché como se espera cuando el ajuste establecer el número de resultados de búsqueda principales en caché en 0 está habilitado en Administración Tiendas > Configuración > Catálogo > Catálogo > Búsqueda en el catálogo.
- El indexador de búsqueda en el catálogo ahora se ejecuta sin arrojar un error debido al límite del campo del Elasticsearch. Anteriormente, la aplicación arrojó este error:
Limit of total fields [xxx] in index [m24dev_product_1_v10] has been exceeded
.
- El rendimiento de la búsqueda en el catálogo ha mejorado. Deshabilitar Activar sugerencias de búsqueda (Tiendas > Configuración > Catálogo > Búsqueda en el catálogo ) funciona según lo esperado. Anteriormente, la aplicación consultaba la tabla MySQL
search_query
en lugar del Elasticsearch para sugerencias de búsqueda de autocompletar. GitHub-25534
- El Elasticsearch ahora filtra los precios del producto igual que MySQL. El tipo de campo
price_*
se cambió defloat
adouble
en el índice del Elasticsearch para mejorar la precisión y corregir un error de punto flotante.
- Se ha agregado un detector de eventos de keydown al administrador para activar el formulario de búsqueda global cuando se introduce una barra diagonal. GitHub-29551
- El Elasticsearch ya no genera un error, sino que no muestra ningún producto como se espera cuando se usa un valor
string
para filtrar productos por atributo con un tipo de servidorinteger
odecimal
. Anteriormente, la aplicación mostraba este error enexception.log
:number format exception
.
-
El Elasticsearch ya no genera una excepción cuando un término de búsqueda contiene un
/
. GitHub-25886, GitHub-25110 -
La búsqueda ahora está deshabilitada como se espera para un grupo de clientes seleccionado de la consulta de productos cuando la opción de configuración No permitir la búsqueda en el catálogo por en los permisos generales de categoría está habilitada. GitHub-29927
- Los resultados de la búsqueda ya no incluyen varias comillas de la misma palabra. GitHub-30104
Envío
- El proceso de cierre de compra ya no falla cuando una interrupción de la red interrumpe la conexión con el método de envío DHL. La aplicación muestra otros métodos de envío disponibles. Anteriormente, el proceso de cierre de compra se detuvo cuando se interrumpió la conexión con el envío de DHL y la aplicación mostró este error:
Sorry, no quotes are available for this order at this time
. GitHub-29902
- Los campos que describen el método de entrega de UPS en Administración Tiendas > Configuración > Ventas > Métodos de entrega ahora están habilitados según lo esperado.
- Los envíos creados a través del extremo de POST
/rest/V1/shipment
ahora actualizan correctamente los pedidos. Anteriormente, la aplicación creaba un envío, pero el estado del envío permanecía en el estado de procesamiento.
- La aplicación ya no elimina los productos simples del carro de compras cuando se elimina otro producto del carro de compras antes de cerrar la compra con Enviar a varias direcciones. GitHub-30259
- La página Revisión de Pedidos ahora muestra el importe de impuestos antes del importe de envío como se espera para los pedidos que se envían a varias direcciones.
- El seguimiento del envío de UPS ahora indica un estado de
Delivered On
solo cuando se ha entregado un paquete. GitHub-30032
- La aplicación ahora muestra el subtotal correcto del carro de compras para los pedidos que contienen un producto virtual cuando el comprador vuelve al carro de compras desde la comprobación con varias direcciones.
- Los comerciantes ahora pueden crear una etiqueta de envío desde la página de envío para un pedido existente que utilice el envío de FedEx cuando el agrupamiento de JavaScript esté habilitado. Anteriormente, la aplicación arrojaba un error cuando el comerciante hacía clic en el botón Crear etiqueta de envío.
- El vínculo de seguimiento de envío del correo electrónico de confirmación de envío enviado a los clientes ahora funciona según lo esperado. Anteriormente, este vínculo devolvía un error 404.
- La aplicación ahora muestra un mensaje de error informativo cuando un comprador cierra la compra con varias direcciones y, a continuación, elimina todos los productos que no sean un producto virtual. GitHub-25595
- Ahora puede crear una etiqueta de envío como se espera para un pedido parcial. Anteriormente, cuando se intentaba crear una etiqueta de envío para un solo artículo de un pedido, la aplicación añadía todos los productos al paquete y la validación fallaba. GitHub-29552
- Ya no se omite la validación del método de envío al llamar a
/V1/guest-carts/:cartId/totals-information
. GitHub-25147
Sitemap
- Los mapas del sitio generados por
cron
ahora incluyen direcciones URL de imagen correctas. Anteriormente, la ruta de la imagen en caché generada era incorrecta en implementaciones de varias tiendas.
Almacenar
- El Administrador y el conmutador de tienda principal ahora reflejan los cambios realizados en el orden de clasificación de tiendas en el Administrador. GitHub-13401
- La aplicación ahora crea direcciones URL correctas para categorías y productos después de cambiar la clave URL de nivel superior de una vista de tienda. Anteriormente, cuando el árbol de categorías de una vista de tienda contenía
url_keys
modificado, si una clave de categoría no cambiaba pero sí la clave principal de la categoría, el código original utilizaba la vista de tienda predeterminada de la categoría al crear direcciones URL. GitHub-28633
Reglas de destino
- Se ha optimizado la carga de páginas de detalles del producto. Hemos añadido índices para tablas de base de datos que optimizan las consultas de condiciones de regla de destinatario para muchos casos.
Impuestos
- La validación del IVA en un pedido de invitado ya no hace que la aplicación guarde la oferta con una clase de impuestos de cliente incorrecta. GitHub-30018
- Los pedidos que se envían a varias direcciones ahora se pueden guardar durante el cierre de compra cuando se configura FTP. Anteriormente, después de completar un pedido para varias direcciones, la aplicación mostraba una página en blanco en lugar de la página de éxito del pedido.
- Las páginas de detalles de productos de la tienda ahora muestran los precios nuevos y antiguos con y sin impuestos según lo esperado. GitHub-27500, GitHub-11998
Prueba
bin/magento dev:tests:run
ahora inicia las siguientes pruebas según lo esperado: todos, unidad, integración, integration-all, static, static-all, integridad, heredado y predeterminado.
AdminMediaGalleryInsertLargeImageFileSizeTest
se ha refactorizado.
- Las pruebas unitarias ahora son compatibles con PHPUnit 8. GitHub-29779
\Magento\TestFramework\TestCase\WebapiAbstract
ahora contiene una función que admite la comparación de matrices anidadas grandes de resultados esperados y reales en pruebas. Ahora se pueden ignorar las claves irrelevantes del resultado. GitHub-29498
AdminMediaGalleryCatalogUiEditCategoryGridPageTest
ya no falla aleatoriamente. GitHub-1764
dev/tests/integration/testsuite/Magento/Customer/Controller/AccountTest
se ha mejorado. (assert
se basa ahora en el selectorXPath
en lugar de enassertStringContainsString
). GitHub-29700
- Se agregó cobertura de prueba para el módulo
AdminAnalytics
. GitHub-29500
- Las pruebas funcionales de integración y API ahora son compatibles con PHPUnit 9.3. GitHub-30146
- Se corrigieron problemas con la prueba de GraphQL
testRequestCacheTagsForCategoryListOnMultipleIds
. GitHub-29372
- Los valores de encabezado que incluyen direcciones URL ahora se analizan correctamente en
ApiFunctional TestFramework
. GitHub-26425
- Se corrigieron problemas con la prueba de GraphQL
testRequestCacheTagsForCategoryListOnMultipleIds
. GitHub-29372
—no-tablespaces
se ha agregado a todas las ocurrencias demysqldump
, lo que permite que las pruebas de integración se ejecuten sin el privilegioPROCESS
(requerido desde MySQL 5.7.31 / 8.0.21 para ejecutarmysqldump
de forma predeterminada). GitHub-30566
Tema
- Se agregó una nueva marca
--no-parent
al comandobin/magento setup:static-content:deploy
que impide que se compilen los elementos primarios de un tema. Este nuevo indicador le permite mejorar significativamente el rendimiento del proceso de implementación de contenido estático al evitar una compilación innecesaria. Tenga en cuenta que este nuevo indicador no funciona al utilizar la estrategiacompact
. GitHub-30184
- La configuración de diseño ya no genera operaciones DDL. Anteriormente, cuando se actualizaba la configuración de diseño, la aplicación generaba instrucciones DDL que podían almacenar en déclencheur errores de MySQL.
- Se ha eliminado el código redundante en el módulo
Magento_ConfigurableProduct
del tema de administración. GitHub-29857
- Se han eliminado la navegación de estilos menos redundantes y las propiedades no utilizadas en la temática en blanco. GitHub-29914
- Se ha agregado la funcionalidad de navegación contraíble a la temática En blanco en la vista móvil. GitHub-30237
- Se ha optimizado la carga de fuentes web para temáticas. GitHub-29526
- Los desarrolladores ahora pueden especificar el tipo de fuente al declarar una fuente personalizada en un tema. GitHub-29719
Traducción y configuraciones regionales
- El Selector de fecha de cuadrícula de pedidos del administrador ahora funciona como se espera cuando la configuración regional del administrador es árabe (
ar_SA - Saudi Arabia
).
- La aplicación ya no muestra un mensaje de error cuando un comprador introduce una dirección argentina con un código postal válido al registrar o añadir una nueva dirección. Anteriormente, la aplicación mostraba este error:
Provided Zip/Postal Code seems to be invalid. Example: 1234. If you believe it is the right one you can ignore this notice.
- La aplicación ya no genera un error cuando un comprador introduce un código postal de cinco dígitos para una dirección coreana.
- Se agregó compatibilidad con las regiones de Uruguay definidas en ISO 3166-2:UY. GitHub-29729
zip_codes.xml
se ha actualizado para aplicar ocho dígitos a los códigos postales brasileños. GitHub-29984
- Se ha mejorado la localización de las frases no localizadas restantes. GitHub-11175
- Ahora se puede traducir el marcador de posición de entrada de búsqueda de cuadrícula. GitHub-30510
- La aplicación ahora descarga traducciones en línea de los módulos JavaScript solo cuando están activados. GitHub-29553
IU
- El botón Crear una cuenta de la página Crear nueva cuenta permanece activo cuando un comprador introduce datos no válidos. Anteriormente, este botón estaba desactivado, lo que impedía a los compradores volver a intentar crear una cuenta después de cometer un error. Este era un problema conocido en 2.4.1. GitHub-30513
- Se ha mejorado la carga de la cuadrícula de envío en la página Editar pedido de administrador.
- La aplicación ahora muestra la casilla de verificación Igual que la dirección de facturación según lo esperado en la página de pedidos cuando el SKU ha agregado los productos al carro de compras.
- La clase CSS que definió la anchura limitada ahora se aplica según lo esperado a los campos de Hora de inicio del administrador Almacén > Configuración > Catálogo > Mapa del sitio XML > Configuración de generación. GitHub-29496
- Se han corregido los problemas de visualización con la etiqueta de casilla de verificación Términos y condiciones. GitHub-24060
- La aplicación ya no muestra el código CSS de un bloque de precios de nivel en la página del producto cuando los precios de nivel no están disponibles. GitHub-29194
- La posición de los botones en la página de detalles de la vista de imagen se ha reorganizado para ajustarse a las directrices de la interfaz de usuario. GitHub-1783
- El campo de texto del código de cupón ahora se muestra con la anchura adecuada en los navegadores Internet Explorer/EDGE.
- La variable
@button__border-radius
ahora está definida en la bibliotecalib/web/css/source/lib/variables/_buttons.less
.border-radius
tiene un valor predeterminado de3px
. Anteriormente,border-radius
estaba codificado. GitHub-28674
- El botón de envío de búsqueda (lupa) del campo de búsqueda mini ahora está desactivado hasta que se alcance la longitud mínima de la cadena de búsqueda. GitHub-29704
- El botón Previsualizar plantilla ahora funciona como se espera en la página Editar cola.
- La aplicación ahora conserva el valor de un atributo cuando se mueve el atributo de un grupo a otro.
- Se agregó una variable de peso de fuente a
lib/web/css/source/lib/variables/_typography.less
. GitHub-29778
- La visibilidad del filtro ahora funciona con la visibilidad de la columna como se espera en las cuadrículas de administración. GitHub-30345
- Las opciones de componentes seleccionados de la interfaz de usuario ya no están visibles cuando se establece
this.disabled(true)
. GitHub-29098
- La variable
@font-family-name__base
ya no se usa al cargar la fuente Open Sans. GitHub-29515
- El atributo WAI-ARIA
aria-atomic="true"
se ha agregado a la etiqueta contenedora de error. GitHub-29560
- Las cuadrículas de componentes de la IU ahora muestran un recuento preciso de los elementos seleccionados. Anteriormente, las cuadrículas indicaban un número incorrecto de selecciones cuando una búsqueda por palabra clave seleccionaba todos los elementos de cuadrícula y el comprador posteriormente anulaba la selección de algunos elementos antes de seleccionar la casilla de verificación del encabezado. GitHub-29968
- La aplicación ya no muestra el HTML no procesado en las páginas de resumen de facturas y envíos. GitHub-29958
- Al hacer clic en Opciones en el Administrador Tiendas > Tarifas de moneda, ahora se dirigirá a los usuarios a la sección de opciones de moneda expandidas de la página de configuración del sistema. GitHub-29336
- Se ha mejorado la compatibilidad para mostrar un widget en función de otra condición para
adminhtml
widgets al utilizar un tipo de widget de selector. GitHub-13316, GitHub-7252, GitHub-6868
- Se ha mejorado el relleno de texto en los cuadros de diálogo emergentes de confirmación de la temática de Luma. GitHub-30452
Bóveda
- El módulo
Vault
ahora reconoce los códigos de método de pago de la solicitud del servicio de administración de información de pago. Anteriormente, cuando un comprador realizaba un pedido con una tarjeta de crédito de Braintree guardada, la aplicación arrojaba este error incluso cuando se utilizaba un método de pago válido:The requested Payment Method is not available
.
- El banner que la aplicación muestra en la página Admin Login as Customer ahora permanece en la parte superior de la página cuando el usuario se desplaza. GitHub-29354
Vértice
-
Las sugerencias de direcciones ahora se eliminan según lo esperado cuando se modifica una dirección.
-
Se ha resuelto una condición de carrera que impedía que algunos clientes guardaran su dirección en el panel de cuenta.
-
La validación de direcciones de vértice ya no agrega la página Editar dirección a la caché de página completa en determinadas condiciones.
-
El impuesto calculado por vértice ahora se considera cuando el envío gratuito está configurado para un importe que incluye impuestos.
Marco de API web
- Ahora puede usar el POST
V1/invoice/:invoiceId/refund
para reembolsar una factura que no contenga productos ni gastos de envío (por ejemplo,{"items": [{"qty": 0, "orderItemId": 6, "extensionAttributes": {}}], "appendComment": false, "notify": true, "isOnline": true, "arguments": {"adjustment_negative": 0.0, "adjustment_positive": 0.99, "shipping_amount": 0}}.
). Anteriormente, la aplicación arrojaba este error:You can't create a creditmemo without products
. GitHub-23069
- Ahora puede usar el POST
V1/categories
para crear o actualizar una categoría. Anteriormente, la aplicación no guardaba el valor si el valordefault_sort_by
se establecía como una matriz. Cuando el valordefault_sort_by
se estableció como una cadena, la aplicación arrojó este error:Error occurred during \"custom_attributes\" processing. Attribute \"default_sort_by\" has invalid value. The \"string\" value's type is invalid. The \"string[]\" type was expected. Verify and try again.
- El uso del POST
V1/invoices/:id/capture
para capturar información de pago ahora funciona según lo esperado. Anteriormente, la aplicación autorizaba el pedido, pero lo capturaba únicamente en el sitio de la pasarela de pago.
- Cuando se usa el POST
V1/order/:orderId/ship
para crear un envío parcial, el extremo devuelve el número correcto de productos enviados.
- Las facturas creadas con el POST
V1/order/:orderID/invoice
ahora reflejan con precisión el pago parcial por crédito de tienda. Anteriormente, cuando se pagaba parcialmente un pedido con crédito de tienda, la factura se creaba sin tener en cuenta el crédito de tienda.
- Las llamadas de GET
rest/all/V1/categories
y GETrest/all/V1/categories?rootCategoryId=2
ahora devuelven los campos rellenadosname
yproduct_count
según lo esperado para todas las categorías del árbol. Anteriormente, los valores de los campos de categoría estaban vacíos. El complemento solucionador de nombres de tabla devolvió un nombre de tabla incorrecto para recuperar el recuento de productos por categoría.
- El extremo del PUT
V1/categories/:id
ahora almacena los datos necesarios para crear redirecciones 301 para claves de URL de categoría cuando se proporciona el atributo personalizadosave_rewrites_history
. GitHub-29174, GitHub-30240
Lista de deseos
- Los compradores ahora pueden agregar un producto a una lista de deseos cuando el producto se asigna a un origen de inventario personalizado. GitHub-3018
- Los administradores ahora pueden acceder a la página Administrar carro de compras desde la página Administrador del cliente después de que un cliente haya agregado un producto a su lista de deseos desde la tienda. Anteriormente, la aplicación mostraba el siguiente error cuando el administrador hacía clic en el botón Administrar carro de compras:
An error has occurred. See error log for details
.
- El botón Agregar al carro de la página de lista de deseos compartida ahora funciona como se espera para usuarios anónimos, invitados y usuarios que no han iniciado sesión.
- La aplicación ahora muestra las opciones de atributos de producto configurables seleccionadas en la página de la lista de deseos según lo esperado. GitHub-24091, GitHub-22503
- Se implementó
ActionInterface
para\Magento\Wishlist\Controller\Shared\Allcart
. GitHub-29537
Problemas conocidos
Problema: El archivo [magento_root]/index.php
se ha eliminado y la aplicación ahora se ejecuta desde /pub
de forma predeterminada para las configuraciones de Apache. Las tiendas que se proporcionan desde subcarpetas no funcionarán según lo esperado y pueden mostrar errores 404. Solución alternativa: utilice enlaces simbólicos para emular la instalación en una subcarpeta. El ejemplo siguiente utiliza https://shop01.com/shop/
para ilustrar cómo utilizar un enlace simbólico para emular una instalación en una subcarpeta.
-
Crear un subdirectorio para
https://shop01.com/shop/
:code language-bash mkdir magento_root/pub/shop01
code language-bash cd magento_root/pub/shop01
-
Cree enlaces simbólicos para los directorios principales del almacén en el directorio recién creado:
code language-bash ln -s ../media media
code language-bash ln -s ../static static
code language-bash ln -s ../../../pub pub
code language-bash ln -s ../.htaccess .htaccess
code language-bash ln -s ../health_check.php health_check.php
-
Cree un archivo de
index.php
dentro del nuevo directorio (magento_root/pub/shop01/index.php
) y agregue este contenido:
<?php
require realpath(__DIR__) . '/../../../app/bootstrap.php';
switch ($_SERVER['HTTP_HOST']) {
case 'shop01.com':
case 'www.shop01.com':
$params = $_SERVER;
$params[\Magento\Store\Model\StoreManager::PARAM_RUN_CODE] = 'shop01';
$params[\Magento\Store\Model\StoreManager::PARAM_RUN_TYPE] = 'website';
$bootstrap = \Magento\Framework\App\Bootstrap::create(BP, $params);
$app = $bootstrap->createApplication(\Magento\Framework\App\Http::class);
$bootstrap->run($app);
break;
default:
$bootstrap = \Magento\Framework\App\Bootstrap::create(BP, $_SERVER);
/** @var \Magento\Framework\App\Http $app */
$app = $bootstrap->createApplication(\Magento\Framework\App\Http::class);
$bootstrap->run($app);
break;
}
- Configure el servidor Apache para que apunte al nuevo subdirectorio. Las configuraciones de implementación pueden variar considerablemente. Este es un ejemplo de configuración del servidor:
<VirtualHost *:80>
DocumentRoot "magento_root/pub/shop1"
ServerName shop01.com
</VirtualHost>
Problema: La aplicación no envía la información de pago como se esperaba cuando un comprador introduce por primera vez un código correcto en el campo CAPTCHA de la página Pago pero muestra el siguiente error: There has been an error processing your request
. Esto solo ocurre cuando el comprador intenta realizar el pedido sin introducir el código CAPTCHA o introduciéndolo de forma incorrecta. Solución alternativa: Actualice la página.
Problema: la aplicación crea un pedido en el Braintree como se espera cuando un comprador hace clic en Pagar con Venmo, pero no crea el pedido en el administrador. Ver el problema conocido 2.4.2: El pago Venmo de Braintree no funciona Artículo de la Base de conocimiento.
Problema: No puede usar la mutación de GraphQL addConfigurableProductToCart
para agregar un producto configurable a un carro de compras en una vista de tienda no predeterminada en una implementación de varias tiendas que ejecuta Inventory. (Las tiendas de Luma no se ven afectadas). la aplicación muestra este error: Could not add item to cart. Please check required options and try again
. Solución alternativa: en su lugar, use la mutación addProductsToCart
. GitHub-31660
Contribuciones comunitarias
Agradecemos a la comunidad Magento Open Source en general y quisiéramos agradecer sus aportaciones a esta versión.
El equipo de ingeniería de la comunidad Colaboradores Magento mantiene una lista de las principales personas y socios que aportan contribuciones por mes, trimestre y año. Desde esa página de colaboradores, puede seguir los vínculos a sus PR fusionadas en GitHub.
Contribuciones de socios
En el cuadro siguiente se destacan las contribuciones de los asociados. Esta tabla enumera el socio que contribuyó con la solicitud de extracción, la solicitud de extracción externa y el número de problema de GitHub asociado a ella (si está disponible).
Contribuciones de colaborador individual
La siguiente tabla identifica las contribuciones de los miembros de nuestra comunidad. En esta tabla se enumeran las solicitudes de extracción externas, el número de problema de GitHub asociado a ellas (si está disponible) y el miembro de la comunidad que contribuyó con la solicitud de extracción.
Requisitos del sistema
Nuestra pila de tecnología está construida sobre PHP y MySQL. Para obtener más información, consulte Requisitos del sistema.
Instrucciones de instalación y actualización
Puede instalar el Magento Open Source 2.4.2 con Composer.
Kits de herramientas de migración
La herramienta de migración de datos ayuda a transferir los datos del almacén de Magento 1.x existente al Magento 2.x. Esta interfaz de línea de comandos incluye funciones de verificación, seguimiento de progreso, registro y prueba. Para obtener instrucciones de instalación, consulte Instalar la herramienta de migración de datos. Considere la posibilidad de explorar o contribuir al repositorio de migración de datos.
El Kit de herramientas de migración de código ayuda a transferir las personalizaciones y extensiones de almacén de Magento 1.x existentes a Magento 2.x. La interfaz de línea de comandos incluye secuencias de comandos para convertir módulos y diseños de Magento 1.x.