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
6,650 sites
68
drupal.org

Instalar

Drupal 11, 10 v3.0.0
composer require 'drupal/commerce_stock:^3.0'
Drupal 9 v8.x-1.3
composer require 'drupal/commerce_stock:8.x-1.3'
Drupal 8 v8.x-1.2
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
Stock /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.

Configuración de 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.

Configuración de Stock Local /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.

Configuración de Control de Stock /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.

Ubicaciones de 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.

Transacciones de stock /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.

Crear transacción de stock /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
Acceder a páginas de administración de Commerce Stock

Usar las páginas administrativas y funcionalidad de Commerce Stock.

Administrar Commerce Stock

Administrar las configuraciones de Commerce Stock. Permiso de acceso restringido.

Administrar tipos de ubicación de stock

Mantener los tipos de ubicación de stock disponibles y los campos asociados con esos tipos. Permiso de acceso restringido.

Usar formulario de transacción de Commerce Stock

Crear una transacción de Commerce Stock a través del formulario de transacción de Commerce Stock UI.

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
Los niveles de stock no se actualizan después de realizar el pedido

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.

Error 'The StockServiceManager didn't return a location'

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.

El stock muestra 0 para todos los productos

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.

El carrito permite agregar más artículos de los que hay en stock

Habilite el módulo Commerce Stock Enforcement. Por defecto, el módulo base rastrea stock pero no previene la sobreventa.

El widget del campo de stock muestra mensaje 'no valid context'

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