Módulo Outlet para Magento 2 - Automatización de rebajas
Kowal Outlet Products es un módulo para Magento 2 que automatiza la gestión de productos outlet, productos en rebajas y finales de serie. La solución ayuda a mantener el catálogo ordenado, asignar productos a la categoría OUTLET, marcarlos con un atributo específico y eliminarlos del outlet cuando ya no deban mostrarse como oferta de rebajas.
El módulo se ha preparado pensando en tiendas en las que los productos outlet cambian de forma dinámica: algunos son productos simples individuales, otros son variantes de productos configurables y otros requieren la gestión de varias tiendas, varios websites y distintas configuraciones de precios.
Principal valor de negocio
En Magento estándar, la gestión del outlet suele requerir controlar manualmente varios elementos a la vez: categorías, estado del producto, precio especial, stock, variantes configurables y caché. En catálogos grandes, es fácil que se produzcan situaciones en las que un producto siga apareciendo en OUTLET aunque esté agotado, el producto padre configurable permanezca en la categoría sin variantes activas o el precio especial se restaure de forma no conforme con la configuración de la tienda.
Kowal Outlet Products ordena este proceso. El administrador puede añadir una lista de SKU al outlet y el módulo se encarga de asignarlos a las categorías adecuadas, establecer el atributo OUTLET, gestionar los parent configurables y desvincular posteriormente los productos de forma automática al finalizar la venta.
Funciones principales
- importación masiva de productos a OUTLET mediante una lista de SKU,
- asignación de productos a una o varias categorías outlet,
- compatibilidad con productos simples y variantes de productos configurables,
- marcado automático de productos con el atributo
sale, - asignación de parent configurables a OUTLET cuando sus variantes son outlet,
- desvinculación automática de productos de la categoría OUTLET tras agotarse o desactivarse el estado outlet,
- desvinculación del parent configurable cuando ninguna variante sigue siendo producto OUTLET,
- comprobación periódica de productos mediante cron,
- ejecución manual del recálculo desde la consola de Magento,
- actualización de índices y caché de productos y categorías,
- gestión de stock y backorders al finalizar las rebajas,
- backup y restauración de precios especiales,
- compatibilidad con configuraciones multistore y website scope para precios,
- marcas OUTLET junto a los swatches de variantes en la ficha de producto.
Cómo funciona el proceso OUTLET
El administrador selecciona las categorías outlet en la configuración del módulo. A continuación, desde el panel de administración puede pegar una lista de SKU y añadir productos a las rebajas. El módulo asigna los productos a la categoría OUTLET y establece el atributo sale.
Para productos configurables, el módulo actúa en dos niveles. Si la variante es outlet, el parent configurable también puede añadirse a la categoría OUTLET para que el cliente vea el producto en el listado. Cuando la variante se agota o deja de tener estado OUTLET, el módulo verifica si el parent todavía tiene alguna variante outlet activa. Si no es así, el parent se desvincula de OUTLET.
El cron del módulo comprueba periódicamente el estado de los productos. Cuando un producto ya no puede venderse, el módulo lo elimina de las categorías outlet, cambia el estado outlet y actualiza los datos en los índices y la caché. De este modo, el listado de la categoría OUTLET se mantiene actualizado sin trabajo manual del administrador.
Gestión de precios especiales
El módulo puede proteger los precios especiales frente a pérdidas durante el ciclo OUTLET. Al añadir un producto al outlet, el precio especial actual se copia a atributos técnicos. Al finalizar el outlet, el precio puede restaurarse o limpiarse, según la configuración.
El backup incluye:
special_price,special_from_date,special_to_date.
El módulo respeta el scope de precios de Magento. Si los precios son globales, actúa a nivel global. Si los precios están configurados por website, el módulo guarda y restaura los valores conforme a las store view predeterminadas de los websites. No realiza conversiones de moneda, porque Magento almacena los precios como valores base para el scope correspondiente y las monedas de la tienda se convierten mediante los mecanismos de Magento.
Multistore y multimoneda
Kowal Outlet Products puede trabajar en instalaciones Magento con varias store view y websites. Durante la importación, el administrador puede indicar los websites a los que debe asignarse el producto. La configuración del módulo está disponible a nivel default, website y store, lo que permite adaptar su funcionamiento a la estructura de la tienda.
En cuanto a los precios especiales, el módulo no multiplica ni convierte valores entre monedas. Conserva los importes guardados en Magento para el scope de precio adecuado. Esto permite evitar errores derivados de la conversión manual de tipos de cambio y deja la presentación de monedas en manos de los mecanismos estándar de Magento.
Ejemplo de uso
La tienda vende ropa y tiene una categoría OUTLET en la que muestra las últimas unidades de productos de colecciones anteriores. El administrador recibe una lista de SKU de variantes que deben pasar a rebajas, por ejemplo:
TSHIRT-BLACK-MTSHIRT-BLACK-LJACKET-NAVY-XLSHOES-WHITE-42Después de pegar la lista en el panel de importación, el módulo:
- marca los productos como OUTLET,
- los asigna a la categoría
OUTLET, - asigna los parent de productos configurables si sus variantes son outlet,
- guarda una copia de los precios especiales actuales,
- actualiza opcionalmente la configuración de stock,
- actualiza índices y caché.
El cliente ve los productos en la categoría OUTLET y las marcas junto a las variantes. Cuando se vende la última unidad de una variante, el cron del módulo detecta que el producto ya no es salable, lo elimina de OUTLET y actualiza el listado. Si se trataba de la última variante outlet de un producto configurable determinado, el parent también se elimina de la categoría OUTLET.
Para quién es este módulo
El módulo está destinado a tiendas Magento 2 que:
- mantienen una sección fija OUTLET o SALE,
- trabajan con frecuencia con finales de serie,
- tienen productos configurables con variantes en distintos estados de rebajas,
- quieren reducir el trabajo manual al actualizar categorías,
- necesitan controlar los precios especiales en un entorno multistore,
- quieren evitar productos desactualizados en los listados de categorías.
Elementos técnicos
- Nombre del paquete Composer:
kowal/module-outletproducts - Nombre del módulo Magento:
Kowal_OutletProducts - Comando CLI:
bin/magento kowal_outletproducts:generate - Panel de configuración:
Stores > Configuration > kowal > OUTLET Products - Panel de importación:
kowal > Upload Outlet Products - Atributos principales de producto:
sale,special_price_copy,special_from_date_copy,special_to_date_copy,special_price_copy_active
Resultado de la implementación
Tras implementar el módulo, la tienda obtiene un proceso coherente de gestión del outlet: los productos se asignan a las categorías adecuadas, las variantes y los parent se mantienen de forma lógica, los precios especiales quedan protegidos y los datos del catálogo se actualizan tras los cambios. Gracias a ello, los administradores pueden centrarse en seleccionar los productos para las rebajas, en lugar de limpiar manualmente categorías y caché.
Instalación y configuración del módulo Kowal Outlet Products
Información básica
- Paquete Composer:
kowal/module-outletproducts - Módulo Magento:
Kowal_OutletProducts - Tipo de aplicación requerido: Magento 2
- Dependencia del paquete:
kowal/base - Comando CLI del módulo:
bin/magento kowal_outletproducts:generate
Instalación mediante Composer
Añada el repositorio del módulo:
composer config repositories.module.outlet.products vcs https://github.com/kowalco/magento-2-outlet-productsSi el repositorio es privado, configure el token de acceso:
composer config --auth github-oauth.github.com Instale el módulo:
composer require kowal/module-outletproductsActive el módulo:
php bin/magento module:enable Kowal_OutletProductsEjecute la actualización de la base de datos:
php bin/magento setup:upgradeEn un entorno de producción, ejecute la compilación DI y el deploy de recursos estáticos conforme al proceso de despliegue de la tienda:
php bin/magento setup:di:compilephp bin/magento setup:static-content:deployLimpie la caché:
php bin/magento cache:flushActualización de una instalación existente
Después de actualizar el módulo, ejecute:
composer update kowal/module-outletproductsphp bin/magento setup:upgradephp bin/magento cache:flushSi la tienda funciona en production mode, ejecute también los pasos estándar de despliegue:
php bin/magento setup:di:compilephp bin/magento setup:static-content:deploysetup:upgrade es necesario porque el módulo añade y actualiza atributos de producto utilizados para la gestión de OUTLET y de las copias de precios especiales.
Atributos de producto
El módulo añade o utiliza los siguientes atributos:
| Atributo | Significado |
|---|---|
sale | Marca el producto como OUTLET. |
special_price_copy | Copia del valor special_price anterior a la entrada del producto en OUTLET. |
special_from_date_copy | Copia de la fecha special_from_date. |
special_to_date_copy | Copia de la fecha special_to_date. |
special_price_copy_active | Marcador que informa de que se ha realizado la copia del precio especial. |
Configuración en el panel de administración
Vaya a:
Stores > Configuration > kowal > OUTLET ProductsOpciones disponibles:
| Opción | Descripción |
|---|---|
Włącz moduł Outlet | Activa o desactiva el funcionamiento del módulo. |
Usuń ceny specjalne dla produktów po wyprzedaży | Define si, tras finalizar OUTLET, el precio especial debe limpiarse. Si la opción está desactivada, el módulo restaurará el precio desde la copia. |
Kategorie outletowe | Lista de categorías a las que se asignan los productos OUTLET y de las que posteriormente se eliminan de forma automática. |
Wyłącz zarządzanie stanem magazynowym po wyprzedaży | Permite desactivar manage_stock al finalizar las rebajas. |
Włącz backorder po zakończeniu wyprzedaży outletowej | Permite activar el backorder y marcar el producto como disponible al finalizar la venta outlet. |
La configuración está disponible a nivel default, website y store. Las categorías OUTLET utilizadas por cron se toman de la configuración predeterminada.
Configuración de la categoría OUTLET
- Cree en Magento una o varias categorías destinadas al outlet.
- Asegúrese de que las categorías estén activas y visibles en el menú o en el listado si deben estar disponibles para los clientes.
- En la configuración del módulo, seleccione todas las categorías outlet en el campo
Kategorie outletowe. - Guarde la configuración.
- Limpie la caché de Magento.
php bin/magento cache:flushImportación de productos a OUTLET
Vaya al panel:
kowal > Upload Outlet ProductsEn el formulario:
- Pegue la lista de SKU, un SKU por línea.
- Seleccione las categorías OUTLET.
- Opcionalmente, seleccione los websites a los que debe asignarse el producto.
- Seleccione si el módulo debe activar la gestión de stock para los productos importados.
- Haga clic en
Importuj.
Lista de SKU de ejemplo:
TSHIRT-BLACK-MTSHIRT-BLACK-LJACKET-NAVY-XLSHOES-WHITE-42Durante la importación, el módulo:
- asigna los productos a la categoría OUTLET,
- establece el atributo
sale, - actualiza los parent configurables,
- crea una copia del precio especial y de las fechas de promoción,
- actualiza el stock según la opción seleccionada,
- actualiza los índices y la caché de productos y categorías.
Gestión de productos configurables
Si el producto importado es una variante de un producto configurable, el módulo busca el parent y lo asigna a la categoría OUTLET. Gracias a ello, el producto configurable aparece en el listado de la categoría y el cliente puede elegir la variante outlet.
Durante el recálculo periódico, el módulo comprueba si el parent todavía tiene variantes OUTLET activas. Si no es así, el parent se desvincula de la categoría OUTLET.
Gestión de precios especiales
Al importar a OUTLET, el módulo guarda una copia de:
special_price,special_from_date,special_to_date.
La copia se guarda conforme al scope del atributo de precio especial en Magento:
- para precios globales: a nivel global,
- para precios por website: a nivel de la store view predeterminada de cada website,
- para precios por store: a nivel de store view.
El módulo no convierte monedas. Magento almacena los precios como valores base para el scope correspondiente y la presentación de monedas en el frontend queda en manos de los mecanismos estándar de Magento.
El comportamiento al finalizar OUTLET depende de la opción Usuń ceny specjalne dla produktów po wyprzedaży:
Tak: el módulo limpia el precio especial y elimina la copia técnica,Nie: el módulo restaura el precio especial y las fechas desde la copia y, a continuación, elimina la copia técnica.
Cron
El módulo dispone de una tarea cron:
kowal_outletproducts_outletLa tarea ejecuta el helper OUTLET y comprueba periódicamente los productos outlet. Cron elimina productos de la categoría OUTLET cuando ya no deberían estar visibles allí y actualiza índices y caché.
Después de la instalación, asegúrese de que el cron de Magento funcione correctamente:
php bin/magento cron:runEn un entorno de producción, cron debe ejecutarse desde el crontab del sistema del usuario de la aplicación Magento.
Ejecución manual del recálculo
El recálculo puede ejecutarse manualmente desde CLI:
php bin/magento kowal_outletproducts:generateEl comando ejecuta el mismo proceso que se lanza mediante cron.
Índices y caché
Tras los cambios, el módulo actualiza los índices de producto y catálogo más importantes:
catalog_product_price,catalog_product_category,catalogsearch_fulltext,inventory,cataloginventory_stock.
El módulo también limpia la caché de las etiquetas de productos y categorías OUTLET, por lo que el listado de la categoría debería actualizarse tras cambiar el estado o desvincular el producto.
Si es necesario, puede forzar una reindexación completa:
php bin/magento indexer:reindexphp bin/magento cache:flushPrueba tras la implementación
Prueba funcional recomendada:
- Seleccione un producto simple con stock.
- Establézcale un precio especial y fechas de promoción.
- Añada el producto a OUTLET mediante el panel de importación.
- Compruebe que el producto haya aparecido en la categoría OUTLET.
- Compruebe que el atributo
saletenga el valorTak. - Para un producto configurable, compruebe que el parent haya aparecido en OUTLET.
- Cambie el estado del producto para que no sea salable.
- Ejecute cron o el comando CLI.
- Compruebe que el producto se haya eliminado de la categoría OUTLET.
- Compruebe que el precio especial se haya restaurado o eliminado según la configuración.
Problemas frecuentes
El producto sigue visible en OUTLET
Compruebe:
- si el cron de Magento funciona,
- si el producto todavía no tiene
sale = 1, - si el producto está asignado a una de las categorías configuradas como OUTLET,
- si los índices y la caché se han actualizado.
Comandos de ayuda:
php bin/magento cron:runphp bin/magento indexer:reindexphp bin/magento cache:flushEl parent configurable sigue en OUTLET
Compruebe si alguna variante del producto todavía tiene sale = 1. El parent se mantiene en OUTLET mientras tenga una variante outlet activa.
El precio especial no se ha restaurado
Compruebe:
- si el producto se añadió previamente a OUTLET después de instalar los atributos de copia,
- si el atributo
special_price_copy_activeestaba establecido, - si la configuración
Usuń ceny specjalne dla produktów po wyprzedażyestá establecida enNie, - qué scope de precios está configurado en Magento.
Los precios difieren entre store view
Compruebe la configuración del scope de precios en Magento. El módulo no convierte monedas ni sincroniza precios entre store view. Restaura los valores guardados para el scope de precios correspondiente.
Desinstalación
Si el módulo debe desactivarse:
php bin/magento module:disable Kowal_OutletProductsphp bin/magento setup:upgradephp bin/magento cache:flushEliminación del paquete Composer:
composer remove kowal/module-outletproductsphp bin/magento setup:upgradephp bin/magento cache:flushAntes de eliminar el módulo, se recomienda comprobar si los productos requieren una limpieza manual del atributo sale o su desvinculación de la categoría OUTLET.















