Commerce Stock
Proporciona un framework completo de gestión de inventario para Drupal Commerce, permitiendo el seguimiento de inventario, transacciones de stock y verificación de disponibilidad para entidades comprables.
commerce_stock
Instalar
composer require 'drupal/commerce_stock:^3.0'
composer require 'drupal/commerce_stock:8.x-1.3'
composer require 'drupal/commerce_stock:8.x-1.2'
Overview
Commerce Stock es una solución completa de gestión de inventario para tiendas Drupal Commerce. Proporciona un sistema de gestión de stock basado en transacciones que rastrea los niveles de stock a través de transacciones discretas (recepciones, ventas, devoluciones, movimientos) en lugar de simples valores absolutos.
El módulo utiliza una arquitectura extensible que permite diferentes backends de almacenamiento de stock, con una implementación de almacenamiento en base de datos local incorporada. Se integra con los flujos de trabajo de pedidos de Commerce para crear automáticamente transacciones de stock cuando los pedidos se realizan, completan, cancelan o modifican.
El sistema soporta múltiples ubicaciones de stock, lo que lo hace adecuado para negocios con múltiples almacenes o centros de distribución. El control de stock puede prevenir que los clientes pidan más artículos de los disponibles, con mensajes de error configurables y validación en las etapas de carrito y checkout.
Features
- Gestión de inventario basada en transacciones con registro de auditoría completo de todos los movimientos de stock
- Deducción automática de stock cuando se realizan o completan pedidos, con disparadores de eventos configurables
- Soporte para múltiples ubicaciones de stock y almacenes por tienda
- Control de stock para prevenir sobreventa, con validación al agregar al carrito, en la página del carrito y en checkout
- Tipo de campo Stock Level para variaciones de producto con múltiples opciones de widget (absoluto, basado en transacciones, enlace a formulario)
- Arquitectura de servicio de stock extensible que permite backends de almacenamiento personalizados
- Eventos de stock configurables incluyendo realización de pedido, cancelación, actualización y eventos a nivel de artículo
- API de transacciones de stock para gestión programática de stock (recibir, vender, devolver, mover)
- Opciones de agregación de niveles de stock en tiempo real o basadas en cron
- Soporte multi-tienda con ubicación principal por tienda y ubicaciones de distribución disponibles
Use Cases
Tienda de comercio electrónico básica con seguimiento de stock
Para una tienda simple que vende productos físicos, habilite todos los submódulos de Commerce Stock. Agregue un campo Stock Level a sus tipos de variación de producto, establezca el servicio predeterminado a Local Stock y cree una única ubicación de stock que represente su almacén. El stock disminuirá automáticamente cuando se realicen pedidos y puede aumentarse manualmente a través del formulario de transacción al recibir nuevo inventario.
Distribución multi-almacén
Para negocios con múltiples almacenes, cree una entidad Stock Location para cada almacén. Agregue campos de referencia de entidad 'Available stock locations' y 'Stock allocation location' a su tipo de entidad Store, permitiendo que cada tienda defina qué almacenes pueden cumplir pedidos y cuál es la ubicación principal para transacciones. Las verificaciones de stock agregarán a través de todas las ubicaciones disponibles.
Prevención de sobreventa
Habilite el submódulo Commerce Stock Enforcement para prevenir que los clientes compren más artículos de los disponibles. El módulo valida stock al agregar al carrito, actualizaciones del carrito y checkout. Personalice los mensajes de error en las configuraciones de control para que coincidan con la voz de su marca.
Productos dropshipping o hechos a pedido
Para productos que no necesitan seguimiento de stock (artículos dropshipped, productos digitales, artículos hechos a pedido), deje el servicio de stock como 'Always in stock' para esos tipos de variación. Esto permite mezclar productos rastreados y no rastreados en la misma tienda.
Gestión programática de stock
Use el servicio StockServiceManager para crear transacciones programáticamente. Llame a $stockServiceManager->receiveStock() para inventario entrante, sellStock() para ventas manuales, returnStock() para devoluciones y moveStock() para transferencias entre almacenes. Cada método crea registros de transacción apropiados manteniendo el registro de auditoría.
Tips
- Use el widget 'Simple stock transaction' en lugar de 'Absolute stock level' para sitios de producción para mantener un historial de transacciones apropiado y evitar condiciones de carrera
- Habilite el modo de agregación por cron para tiendas de alto volumen para mejorar el rendimiento procesando cálculos de nivel de stock por lotes
- Siempre cree transacciones de stock a través de la API o formularios en lugar de modificar directamente las tablas de base de datos para mantener la integridad de los datos
- Considere usar el modo de agregación 'Real-time' para tiendas de bajo volumen donde la precisión inmediata del stock es crítica
- Agregue el campo booleano commerce_stock_always_in_stock a las variaciones de producto para marcar artículos específicos que nunca deben verificarse en stock
Technical Details
Admin Pages 7
/admin/commerce/config/stock
Página principal de configuración de stock que proporciona acceso a todas las configuraciones y páginas de gestión relacionadas con stock.
/admin/commerce/config/stock/settings
Configura el servicio de stock predeterminado y las asignaciones de servicio de stock por tipo de entidad. Selecciona qué plugin de eventos de stock maneja los eventos del ciclo de vida del pedido.
/admin/commerce/config/stock/local_stock_config
Configura cómo el servicio de stock local maneja las transacciones y las actualizaciones de nivel de stock basadas en cron.
/admin/commerce/config/stock/enforcement/settings
Configura los mensajes de error mostrados cuando los clientes intentan comprar más artículos de los disponibles en stock.
/admin/commerce/commerce_stock_location
Gestiona las ubicaciones de stock que representan almacenes, tiendas o centros de distribución donde se almacena el inventario.
/admin/commerce/config/stock/transactions1
Crea transacciones de stock para variaciones de producto. El primer paso permite seleccionar la variación de producto para la transacción.
/admin/commerce/config/stock/transactions2
Segundo paso de la creación de transacción con detalles completos incluyendo tipo, ubicación, cantidad y notas.
Permisos 4
Hooks 2
hook_commerce_stock_service_alter
Permite a los módulos alterar el servicio de stock seleccionado para una entidad comprable.
hook_form_alter
Stock Enforcement usa hook_form_alter para agregar validación a los formularios de agregar al carrito, carrito y checkout.
Troubleshooting 5
Verifique Stock configuration para asegurarse de que el servicio predeterminado esté establecido en 'Local stock' para su tipo de variación de producto. Verifique que la configuración 'Order complete transaction' coincida con su flujo de trabajo de pedidos. Para pedidos que usan flujos de trabajo personalizados, asegúrese de que los nombres de transición coincidan con los valores esperados.
Cree al menos una entidad Stock Location activa. Si usa multi-tienda, asegúrese de que la tienda tenga el campo de ubicación de asignación de stock configurado con una ubicación válida.
Después de agregar el campo Stock Level, necesita crear transacciones de stock iniciales usando el formulario de Stock transactions o programáticamente. El campo no tiene valores de stock predeterminados.
Habilite el módulo Commerce Stock Enforcement. Por defecto, el módulo base rastrea stock pero no previene la sobreventa.
Esto ocurre cuando el sistema no puede determinar el contexto de la tienda. Asegúrese de que el producto esté asignado a al menos una tienda y que se pueda resolver una tienda actual.
Security Notes 3
- El permiso 'Administer Commerce Stock' otorga acceso para cambiar servicios de stock y manejo de eventos - restrinja a administradores de confianza
- El acceso al formulario de transacción de stock está controlado por el permiso 'Use Commerce Stock transaction form' - asigne cuidadosamente ya que permite ajustes manuales de stock
- La administración de tipos de ubicación de stock es un permiso restringido ya que afecta el modelo de datos