Gestión de Workflows
El sistema cuenta con un motor de workflows flexible que permite definir estados y transiciones personalizadas para diferentes entidades (por ejemplo, Ventas, Alquileres, Presupuestos).
¿Qué es un Workflow?
Un workflow es una secuencia de estados por los que pasa un documento o proceso. Define "caminos" permitidos, asegurando que los procesos sigan las reglas de negocio de la organización.
Componentes
- Workflow: Define el proceso general (Ej: "Venta Mayorista", "Alquiler de Maquinaria").
- Estados (Statuses): Las etapas del proceso (Ej: "Borrador", "Aprobado", "En Preparación", "Entregado").
- Inicial: Estado por defecto al crear el documento.
- Final: Estado donde el proceso termina (no suele haber transiciones de salida).
- Color: Identificación visual en el sistema.
- Transiciones: Las reglas que permiten pasar de un estado A a un estado B.
- Acción: Nombre del botón que ve el usuario (Ej: "Aprobar", "Rechazar").
- Permisos: Roles o grupos autorizados para ejecutar esta transición.
- Acciones de Sistema: Lógica automática que se dispara al cambiar de estado.
Automatización y Acciones de Sistema
El motor de workflows permite disparar acciones automáticas. Actualmente soportamos:
- DEDUCT_STOCK (Descontar Stock):
- Utilizado principalmente en Alquileres y Ventas.
- Descuenta stock de los lotes disponibles siguiendo lógica FIFO (First In, First Out).
- Genera movimientos de stock automáticamente.
- RESTORE_STOCK (Restaurar Stock):
- Devuelve el stock al inventario (ej: al cancelar un pedido o finalizar un alquiler).
Configuración
Para configurar los workflows, navegue a Configuración > Workflows.
- Crear/Editar Workflow: Defina el nombre y el tipo de entidad (Venta, Alquiler).
- Definir Estados: Agregue los estados necesarios usando el generador visual.
- Conectar Estados: Cree transiciones arrastrando flechas entre los estados.
- Permisos: Haga clic en una transición para restringir quién puede ejecutarla (Ej: Solo "Gerentes" pueden "Aprobar Presupuesto").
Diagrama de Ejemplo (Alquiler Simple)
```mermaid graph LR Draft[Borrador] -->|Solicitar Aprobación| Pending[Pendiente]; Pending -->|Aprobar| Approved[Aprobado]; Pending -->|Rechazar| Rejected[Rechazado]; Approved -->|"Entregar (DEDUCT_STOCK)"| Active["Activo/En Curso"]; Active -->|"Devolución (RESTORE_STOCK)"| Returned["Devuelto/Finalizado"]; ```