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.

NOTE
Las versiones de Adobe Commerce pueden contener cambios incompatibles con versiones anteriores (BIC). Para revisar los cambios incompatibles con versiones anteriores, consulte Referencia de BIC. Los principales problemas incompatibles con versiones anteriores se describen en resaltados de BIC. No todas las versiones introducen BIC importantes.

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).

NOTE
A partir de la versión 2.3.2 de, asignaremos y publicaremos números de Vulnerabilidades comunes y exposiciones (CVE) indexados con cada error de seguridad que nos comuniquen partes externas. Esto permite a los usuarios identificar con mayor facilidad las vulnerabilidades sin solucionar en su implementación. Puede obtener más información sobre los identificadores CVE en CVE.

Mejoras de infraestructura

Esta versión contiene mejoras en la calidad principal, que mejoran la calidad del marco de trabajo y estas áreas funcionales: Cuenta de cliente, Catálogo, CMS, OMS, Importación/Exportación, 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 objeto Customer 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 a ProductInterface y CategoryInterface 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:

Problemas solucionados

Hemos corregido cientos de problemas en el código principal 2.4.2.

Instalación, actualización e implementación

  • 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 y layout ahora están deshabilitadas como se espera después de la ejecución de bin/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 ejecutar bin/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 en queue_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 contenedor ssh 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 o exif-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 WYSIWYG OnInsert (Magento\Cms\Controller\Adminhtml\Wysiwyg\Images\OnInsert::execute()) y se ha agregado al modelo Model\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 en env.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 para checkout/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étodo collectAddressTotals 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 en customer_is_guest field. Anteriormente, a cada nuevo invitado que agregaba un producto al carro de compras se le asignaba un 0 al campo quote.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.
  • 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 y max_price de un producto configurable en 0 en la tabla catalog_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 atributo product_type estaba reservado en el código, la aplicación mostraba este mensaje cuando intentaba actualizar un atributo Product 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 o Disabled 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 atributo src, 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 POST rest/all/V1/products si las imágenes se eliminaban en pub/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
  • 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 tarea catalogrule_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 a url 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.
  • 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 en EntityAbstract.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 y status a la tabla cron_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 y Validation 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 en Text y Input Validation se establece en Numeric 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 a setPath() antes de toOptionArray(). 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 y sales_email/order_comment/copy_method está establecido en bcc. 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 como save_handler, sino que usaba session_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 con after

    • Código redundante eliminado

    • Reemplazó a (bool)->getValue() con isSetFlag. 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 con self:: 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étodo moveFileFromTmp. 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 y type_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 opcional Magento_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ón AdminNotification. 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 administran type 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 los root o magento/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 clases EmailSender. 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 el category_id el filtro se ha especificado con la palabra clave in. 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 de sortOrder de los componentes messages, authentication, progressBar, estimation y sidebar checkout. GitHub-30550
  • El contenido de calc ahora se escapa, lo que da como resultado valores correctos de calc en el archivo de salida CSS. Anteriormente, la aplicación devolvía un valor calc incorrecto. GitHub-30542
  • El generador de reescritura de URL ahora establece los valores predeterminados de los objetos de categoría url_key, url_path y store_id al guardar las reescrituras de URL de categoría para el ámbito global. Anteriormente, guardó url_key, url_path y store_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 cuando Magento_LoginAsCustomerAssistance estaba habilitado, pero Magento_LoginAsCustomerAdminUi o Magento_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 un Interceptor 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 y queue_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 CMS. Como resultado, cuando se elimina un bloque 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 en queue_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 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 filtro category_id se especifica con la palabra clave in. GitHub-30349
  • Las consultas categories y categoryList 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 y CategoryInterface 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 en lib/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 implementan CartItemInterface.
  • 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 atributo customizable_options en varias implementaciones de CartItemInterface 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 consulta products 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 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 o exif-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 redundante max-width y height 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 valor NULL al importar direcciones de clientes mediante un archivo CSV (entity type = "customer address" y import 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 pero is_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 y textarea 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 y catalog_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 o catalog_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 parcial catalogsearch_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 valor form_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 valor form_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ño adminhtml default (por magento2/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 segmentos exif_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 y VerifyChildCategoriesShouldNotIncludeInMenuTest 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
  • Se agregaron grupos de acciones al módulo Analytics. GitHub-29500
  • Se actualizaron CheckCheckoutSuccessPageAsRegisterCustomerTest y CheckCheckoutSuccessPageAsGuestTest 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 las pruebas MFTF para la página de CMS para Media Gallery. 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 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

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

  • 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 a SHOW 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 crear customerSession 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 de sales_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 de total_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 predeterminado group_id.
  • La aplicación ya no cambia el estado de un estado de pedido personalizado con el estado Suspected Fraud a Processing 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ó de float a double 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 servidor integer o decimal. Anteriormente, la aplicación mostraba este error en exception.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 selector XPath en lugar de en assertStringContainsString). 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 de mysqldump, lo que permite que las pruebas de integración se ejecuten sin el privilegio PROCESS (requerido desde MySQL 5.7.31 / 8.0.21 para ejecutar mysqldump de forma predeterminada). GitHub-30566

Tema

  • Se agregó una nueva marca --no-parent al comando bin/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 estrategia compact. 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.
  • 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 biblioteca lib/web/css/source/lib/variables/_buttons.less. border-radius tiene un valor predeterminado de 3px. 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 valor default_sort_by se establecía como una matriz. Cuando el valor default_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 GET rest/all/V1/categories?rootCategoryId=2 ahora devuelven los campos rellenados name y product_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 personalizado save_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.

  1. Crear un subdirectorio para https://shop01.com/shop/:

    code language-bash
    mkdir magento_root/pub/shop01
    
    code language-bash
    cd magento_root/pub/shop01
    
  2. 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
    
  3. 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;
   }
  1. 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).

Socio
Solicitudes de extracción
Problemas relacionados con GitHub
Atwix
magento/magento2#29630, magento/magento2#29459, magento/magento2#29703, magento/magento2#29460, magento/magento2#29042, magento/magento2#29482, magento/magento2#28821, magento/partners-magento2ee#260, 16}magento/magento2#29148🔗, magento/magento2#29634, magento/magento2#29832, magento/magento2#29830, magento/magento2#29829, magento/magento2#29828, magento/magento2#29821, magento magento2#29820, magento/magento2#29836, magento/magento2#29831, magento/magento2#29822, magento/magento2#28653, magento/magento2#27391, 🔗magento/magento2#43}, 🔗magento/magento2#29833🔗 magento/partners-magento2ee#264, magento/partners-magento2ee#248, magento/partners-magento2ee#168, magento/magento#2, magento/magento#162},magento/partners#168, magento/magento-magento#392, magento/magento2#, magento/partners-magento2ee#316, 🔗magento/magento2#63}, 🔗magento/magento2#65}, 🔗magento/magento2#67}, 🔗magento/magento#69}, magento/magento#2 {67229904, magento/magento2#, magento/magento2#, 🔗magento/magento2#77}, magento/partners-magento2ee#279, 🔗magento/magento2#81}, magento/partners-magento#349, magento ento/magento2#, magento/partners-magento2ee#346, 🔗magento/magento2#89}, 🔗magento/magento2#91}, 🔗magento/magento2#93}, magento/magento#2, 🔗magento/magento2#97}, magento29929 ento/magento2#, magento/magento2#, 🔗magento/magento2#103}, 🔗magento/magento2#105}, 🔗magento/magento2#107}, 🔗magento/magento2#109}, magento/magento2996229931 29835 29834 30081 30030 29827 30049 30217 27939 30222 29868 30079 30317 30633 30619 30359 30223 30630 29675 30777 30528 30525 30779 30529 30694 22#, magento/magento2#, magento/magento2#, magento/partners-magento2ee#400, magento/partners-magento2ee#401
magento/magento2#29649, magento/magento2#29712, magento/magento2#29501, magento/magento2#29145, magento/magento2#29500, magento/magento2#28520, magento/magento2#28558, magento/magento2#29648, magento magento2#29843, magento/magento2#29845, magento/magento2#29846, magento/magento2#29847, magento/magento2#29824, magento/magento2#29823, magento/magento2#29841, magento/magento2#29844 magento/magento2#29825, magento/magento2#29531, magento/magento2#28551, 🔗magento/magento2#39}, 🔗magento/partners-magento2ee#41}, magento/magento#229601, magento/magento2#29839, magento/magento2#, magento/magento2#, 🔗magento/magento2#51}, 🔗magento/magento2#53}, 🔗magento/magento2#55}, magento/magento#2,magento/magento#2🔗9 /magento2#, magento/magento2#29940, magento/magento2#65},magento/magento2#67}, 🔗magento/magento2#69}, 🔗magento/magento2#71}, 🔗magento/magento2#67}, 🔗magento/magento2998229941 29842 29838 30103 30032 29848 30058 30031 30061 30561 30469 30468 30372 30683 30624 29168 30783 30916 30917 30782 30926 30625 30474 2 75}, magento/magento2#, magento/magento2#, 🔗magento/magento2#81}, 🔗magento/magento2#83}, 🔗magento/magento2#85}, 🔗magento/magento2#87}, magento/magento2#89},magento/magento2#88982220000000000000000000000000000000000000000000000000000000000000000000000000magento/partners-magento2ee#, magento/partners-magento2ee#410 🔗
Blue Acorn iCi
magento/magento2#29670, magento/magento2#29669, magento/magento2#29564, magento/magento2#27494, magento/magento2#29269, magento/magento2#27609, magento/magento2#29688, magento/magento2#29081, magento magento2#28379, magento/magento2#29722, magento/magento2#27077, magento/magento2#30318, magento/magento2#30010
magento/magento2#29672, magento/magento2#29673, magento/magento2#29679, magento/magento2#29537, magento/magento2#25595, magento/magento2#29689, magento/magento2#28154, magento/magento2#28428, magento magento2#27397, magento/magento2#29729, magento/magento2#29558, magento/magento2#25110, magento/magento2#25886, magento/magento2#28286, magento/magento2#30009
Comwrap
magento/magento2#29814, magento/magento2#29751, magento/partners-magento2ee#337, magento/partners-magento2ee#328, magento/partners-magento2ee#319, magento/magento2#30118, magento/magento2#30019, magento ento/magento2#29998, magento/magento2#29883
magento/magento2#29718, magento/magento2#29372, magento/magento2#29927, magento/magento2#29930, magento/magento2#29926, magento/magento2#29880
Gato blanco rápido
magento/magento2#29413, magento/magento2#28163, magento/magento2#30320, magento/magento2#30355, magento/magento2#28157, magento/magento2#30114
magento/magento2#24060, magento/magento2#13401, magento/magento2#11175, magento/magento2#30296, magento/magento2#22503, magento/magento2#24091, magento/magento2#30073
Vaimo
magento/magento2#29339, magento/magento2#28676, magento/magento2#29885
magento/magento2#28633, magento/magento2#29890
Cedcommerce
magento/magento2#27602, magento/magento2#30400, magento/magento2#30391
magento/magento2#27350, magento/magento2#30361, magento/magento2#30362, magento/magento2#30255
MRM COMMERCE
magento/magento2#30120, magento/partners-magento2ee#175
magento/magento2#30133, magento/partners-magento2ee#26943
EY
magento/magento2#30130
Puntito
magento/magento2#28687, magento/magento2#28663, magento/magento2#28491
magento/magento2#8538, magento/magento2#28479, magento/magento2#28186
creativestyle
magento/magento2#27696, magento/magento2#25405
magento/magento2#29553, magento/magento2#25399
Ojo De Peces
magento/magento2#27940, magento/partners-magento2ee#267, magento/magento2#28216
magento/magento2#29555, magento/magento2#13440
SNOW.DOG
magento/magento2#29934
magento/magento2#29933
integer_net GmbH
magento/magento2#28164
magento/magento2#29585
Ziffity
magento/magento2#29353, magento/magento2#27896, magento/magento2#28349
magento/magento2#29194, magento/magento2#29098
Día del Bluebird
magento/magento2#27832
magento/magento2#11998, magento/magento2#27500
Krish TechnoLabs
magento/magento2#29923
magento/magento2#29920
Grupo nacido
magento/magento2#30109, magento/magento2#30421
magento/magento2#30125
Soluciones de orientación
magento/magento2#28818
magento/magento2#29546
Le Site
magento/magento2#25412
magento/magento2#25411
Kensium Solutions LLC
magento/magento2#30230
magento/magento2#30179
Webjumping
magento/magento2#27869
magento/magento2#27866
Asesoría inteligente
magento/magento2#29692
magento/magento2#30243
Wagento
magento/magento2#30411
magento/magento2#30408
MediaCT
magento/magento2#29210
magento/magento2#29515
eComero
magento/magento2#28917
magento/magento2#29656

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.

Miembro de la comunidad colaborador
Solicitudes de extracción
Problemas relacionados con GitHub
Nazar Klovanych
#29576
1449
Shankar Konar
#29511
29496
Hazel Joie Caquicla
#29494
Hazel Joie Caquicla
#29491
Kos Rafał
#29483
29525
Hazel Joie Caquicla
#29461
Jekabs
#29458
29498
Nazar Klovanych
#29452
jmonteros422
#29435
1711
Shankar Konar
#29433
1738
Nazar Klovanych
#29429
1755, 1694
Bartłomiej Szubert
#29413
24060
Angelo Romano
#29410
29416
Honeymay Louiese Ignacio
#29400
1703
Franciszek Wawrzak
#27478
29606
Lukasz Bajsarowicz
#29670
29672
Lukasz Bajsarowicz
#29669
29673
Nazar Klovanych
#29636
1764
Oleh Usik
#29630
29649
Lukasz Bajsarowicz
#29564
29679
Ihor Sviziev
#29518
29653
Oleh Usik
#29459
Oleksandr Kravchuk
#29339
Will Wright
#29316
29315
Vadim Malesh
#29693
29700
Vadim Malesh
#29682
Andrii Beziazychnyi
#29703
29712
Shankar Konar
#29510
28422
Vadim Malesh
#29474
29267
Oleh Usik
#29460
29501
Dmitry Tsymbol
#29042
29145
Savvas Radevic
#28816
28802
Sascha
#28548
28674
Yan Nasonov
#28512
29661
Rudolf Vince
#27494
29537
Nazar Klovanych
#29684
1769
Nazar Klovanych
#29633
1763
Hazel Joie Caquicla
#29639
jmonteros422
#29632
1760
Oleh Usik
#29482
29500
Sathish Subramanian
#29353
29194
Russell Albin
#29269
25595
Bartłomiej Szubert
#28163
13401
Mateusz Krzeszowiak
#27696
29553
Vitaliy Prokopov
#27691
26903
korostii
#26081
26080
Nazar Klovanych
#29711
1774
Hazel Joie Caquicla
#29411
Wout Kramer
#29210
29515
Eduard Chitoraga
#29148
Oleh Usik
#28821
28558, 28520
Nazar Klovanych
#29783
1780
jmonteros422
#29774
1783
Hazel Joie Caquicla
#29772
Sergii Ivashchenko
#29761
jmonteros422
#29753
1784
Nazar Klovanych
#29743
1782
Nazar Klovanych
#29742
1778
Hazel Joie Caquicla
#29705
jmonteros422
#29677
1504
Ihor Sviziev
#29799
Oleh Usik
#29634
29648
Alexandr Skrashuk
#29348
28921
Vitaliy Prokopov
#28413
28388
Lukasz Bajsarowicz
#27609
korostii
#27579
27523
Cristian Partica
#29426
29425
Michał Derlatka
#28915
26425
Oleh Usik
#29832
29843
Oleh Usik
#29830
29845
Oleh Usik
#29829
29846
Oleh Usik
#29828
29847
Oleh Usik
#29821
29824
Oleh Usik
#29820
29823
Denys Babenko
#28343
29067
Balón
#27269
26288
Andrii Kasian
#27129
25199
Hazel Joie Caquicla
#29875
Hazel Joie Caquicla
#29869
Oleh Usik
#29836
29841
Oleh Usik
#29831
29844
Oleh Usik
#29822
29825
Tu Nguyen
#29044
29526
Vinoth
#28349
bradleybrecher
#27386
29560
Sergii Ivashchenko
#29921
Hazel Joie Caquicla
#29896
Shankar Konar
#29724
29704
Oleh Usik
#28653
29531
Tu Nguyen
#29913
29914
Nazar Klovanych
#29861
1789
Tu Nguyen
#29856
29857
Tu Nguyen
#29771
29779
Eden Duong
#29278
29277
Eden Duong
#29276
29336
Mohamed-Asar
#27896
29098
Honeymay Louiese Ignacio
#29947
toxix
#29925
28981, 29879
Viktor Kopin
#29906
Olga Zakharchuk
#29863
29958
Nikolaj Malevanec
#29006
12087
Abdul Rahman Abouzaid
#28687
8538
KrielkipNL
#27832
11998, 27500
Gaurav Agarwal
#27602
27350
Alexander Taranovsky
#27391
29601
Stanislav Ilnytskyi
#26877
26876
Sergii Ivashchenko
#29889
Nazar Klovanych
#29715
1487
Honeymay Louiese Ignacio
#29543
1724
Oleh Usik
#29833
29839
Porrafito Chuasuk
#28896
28892
Vitaliy Prokopov
#27857
26976
Eduard Chitoraga
#29904
Hazel Joie Caquicla
#30006
Ihor Sviziev
#29993
30004
Viktor Kopin
#29959
1813
Hazel Joie Caquicla
#29909
Lukasz Bajsarowicz
#29688
29689
Shankar Konar
#29415
29354
Hazel Joie Caquicla
#29967
Oleh Usik
#29929
29940
Hazel Joie Caquicla
#29895
ashokadewit
#27446
29603
Pascal Brouwers
#26527
26526
Sergii Ivashchenko
#30076
Hazel Joie Caquicla
#30044
Viktor Kopin
#29979
1806
Janusz Janczy
#29934
29933
Marvin Hinz
#29542
29185
Pieter Zandbergen
#29274
29524
Joe Hobbs
#25510
25147
Benoît Xylo
#25405
25399
Viktor Kopin
#30074
Hazel Joie Caquicla
#30042
Oleh Usik
#29962
29982
Oleh Usik
#29931
29941
Oleh Usik
#29835
29842
Oleh Usik
#29834
29838
Evgeny Levinsky
#27698
28324
Vadim Malesh
#26470
7720
Oleh Usik
#30081
30103
Leandro F. L.
#30014
30013
Taras Gamanov
#29968
24348, 24400
Shankar Konar
#29671
16531, 24332, 29852
Ejaz Alam
#29486
29487, 29502
Oleh Usik
#30030
30032
Eugene Shakhsuvarov
#28117
28116
Serhii Dzhepa
#30095
Hazel Joie Caquicla
#30057
Hazel Joie Caquicla
#30034
Marcos Trama
#29972
29984
Lyzun Oleksandr
#29814
29718
Tu Nguyen
#29794
29075
Greg Harvell
#29081
28154, 28428
Daniel Beitler
#29080
29659
Svyatoslav
#28818
29546
Fabian Schmengler
#28164
29585
Tymoteusz Motylewski
#27980
29590
Alex Gusev
#30077
26762, 29612
Abdul Rahman Abouzaid
#28663
28479
Abdul Rahman Abouzaid
#28491
28186
jiten-patel
#27953
12225
Ihor Sviziev
#30153
30183
Shankar Konar
#30069
30164
Leandro F. L.
#30011
29377
Oleh Usik
#29827
29848
Davide Riccardo Caliendo
#29015
29017
Zach Nanninga
#28379
27397
Bünyamin
#27869
27866
Eden Duong
#27585
29599
David Haecker
#30096
322
Yaroslav Garmash
#30075
312
John Carlo Octabio
#30028
Frédéric MARTINEZ
#30182
30191
Ihor Sviziev
#30170
30146
Rafael Kassner
#30160
Sean van Zuidam
#30139
30186
Bartosz Górski
#30120
30133
Milind Singh
#30109
30125
Kate Kyzyma
#30049
30058
Damián Culotta
#29722
29729
Anton Evers
#28995
29522
Kate Kyzyma
#30217
Nikita Sarychev
#30172
30173
Tu Nguyen
#30108
Alexander Menk
#29205
29174, 30240
Barny Shergold
#28676
28633
Jonas Hünig
#28516
29662
Tu Nguyen
#28177
30237
Alexander Taranovsky
#27939
30031
David Manners
#27581
29598
Navarra Barnier
#27077
29558
kolaente
#30180
30190
Peep van Puijenbroek
#29466
29652
Frédéric MARTINEZ
#28588
Petkovski Marjan
#29751
29372
Oleh Usik
#30222
Timon de Groot
#28809
22375
Nirav Patel
#28385
30345
Dan Wallis
#27940
29555
Sean van Zuidam
#30065
30064
Tu Nguyen
#30008
30036
Tu Nguyen
#29726
29719
Gabriel Somoza
#28389
29165
Dan Wallis
#28216
13440
Rafael Corrêa Gomes
#25412
25411
Siim
#29885
29890
Bartosz Kubicki
#27092
29557
Sudheer Singamsetti
#30230
30179
Namrata
#30358
30450
Tu Nguyen
#30333
30448
Wojtek Naruniec
#30318
25110, 25886, 28286
Sean van Zuidam
#30062
30063, 30066
Tu Nguyen
#29773
29778
Pieter Cappelle
#26713
14398, 21885
Bartłomiej Szubert
#30320
11175
Bas van Poppel
#30167
30169
Ihor Sviziev
#30023
30025
Ihor Sviziev
#30002
30005
Eden Duong
#27574
29597
Rafael Kassner
#27454
29604
Nirav Patel
#30458
30452
Tu Nguyen
#30454
30496
solwininfotech
#30405
26133
Bartłomiej Szubert
#30355
30296
Serhii Dzhepa
#30554
Alin Alexandru
#30340
30508
Oleh Usik
#29868
30061
guillaume quintard
#28928
29988
Por
#28172
27925
Bartłomiej Szubert
#28157
22503, 24091
Nikolay Sumrak
#27672
29552
Jonas Hünig
#30502
30566
Yaroslav Bogutsky
#30493
30510
Tu Nguyen
#30453
30542
Sunil Patel
#30402
30388
Oleh Usik
#30079
Jeroen
#29911
29915
Pieter Hoste
#29196
29297, 29478
Johan Lindahl
#28917
29656
Bartosz Kubicki
#26967
29615
Ejaz Alam
#30579
30545
Pieter Hoste
#30570
6868, 7252, 13316
Namrata
#30538
30550
Pratik Oza
#30530
30552
Andrii Kasian
#30521
30563
naitsirch
#30322
30314
Kate Kyzyma
#30317
30561
Stanislav Ilnytskyi
#30198
30601
Cyildirim
#28352
28124
Andrii Beziazychnyi
#30633
30469
Eduard Chitoraga
#30619
30468
Sudheer Singamsetti
#30375
30349
Sagar Dahiwala
#30368
325
Nikolaj Malevanec
#30763
30747
Dmitry Tsymbol
#30359
30372
Oleh Usik
#30223
30683
Lukasz Bajsarowicz
#28147
28309
Matei Purcaru
#27972
27954
Vova Yatsyuk
#27674
29551
Bartosz Kubicki
#26966
30216
Simon Sprankel
#26401
29621
Gabriel da Gama
#30895
30896
Samuel Caçador
#30793
30833
Vova Yatsyuk
#30774
30781, 197
Diego Sanabria
#30681
30680
Evgen Mozok
#30632
24730
Sanjay Patel
#30411
30408
Shikha Mishra
#30400
30361, 30362
Shikha Mishra
#30391
30255
Bartłomiej Szubert
#30114
30073
Michael Bottens
#30010
30009
Tu Nguyen
#29986
29987
Saphal Jha
#29923
29920
Andrii Kasian
#27379
29600
Yaroslav Rogoza
#30630
30624
Oleh Usik
#29675
29168
Andrii Kalinich
#30749
23069
Viktor Kopin
#30727
30645
Thomas Klein
#30825
30859
Oleh Usik
#30777
30783
Oleh Usik
#30528
30916
Oleh Usik
#30525
30917
Ihor Sviziev
#30090
30184
Andrii Kalinich
#30866
24717
Viktor Kopin
#30928
30685
Nitish Singh
#30421
Oleh Usik
#30779
30782
Nazar Klovanych
#30662
30649
Oleh Usik
#30529
30926
Marush Denchev
#30614
30104
Lachlan
#29692
30243
Viktor Kopin
#30947
29128
Andrii Kalinich
#30807
26432
Viktor Kopin
#30961
13746
Nikolaj Malevanec
#30963
30295
Andrii Beziazychnyi
#30694
30625
Alexander Turiak
#30636
30467

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.

recommendation-more-help
1d4eef6c-fef1-4e61-85eb-b58d7b9ac29f