# Diagramas BPMN Horizontales

VelMox — Sistema de Control de Ventas • Procesos del Negocio

Evento de Inicio Evento de Fin Tarea / Actividad Compuerta (Decisión) → Flujo de Secuencia - - - → Flujo Alternativo
Autenticación de Usuario (Inicio de Sesión)
flowchart LR subgraph Usuario["👤 Usuario"] A((Inicio)) --> B[Ingresar Email
y Contraseña] end subgraph Sistema["⚙️ Sistema"] B --> C[Validar Campos
Obligatorios] C --> D{¿Campos
Completos?} D -->|No| E[Mostrar Error
en Formulario] E --> B D -->|Sí| F[Buscar Usuario
en Base de Datos] end subgraph BD["🗄️ Base de Datos"] F --> G{¿Credenciales
Válidas?} G -->|No| H[Denegar
Acceso] H --> I[Mostrar Error
de Autenticación] I --> B end subgraph Sistema2["⚙️ Sistema"] G -->|Sí| J[Crear Sesión
y Registrar Ingreso] J --> K[Redirigir al
Dashboard] K --> L((Fin)) end
Gestión de Productos CRUD — Crear, Editar, Eliminar
flowchart LR subgraph Admin["👤 Administrador"] A((Inicio)) --> B[Iniciar Gestión
de Productos] B --> C{Seleccionar
Acción} C --> D[Crear
Producto] C --> E[Editar
Producto] C --> F[Eliminar
Producto] D --> G[Ingresar Datos
del Producto] E --> G F --> H[Confirmar
Eliminación] end subgraph Sistema["⚙️ Sistema"] G --> I[Validar Datos
Ingresados] I --> J{¿Datos
Válidos?} J -->|No| K[Mostrar Error
Datos Inválidos] K --> G J -->|Sí| L[Verificar Existencia
del Producto] H --> L end subgraph BD["🗄️ Base de Datos"] L --> M{¿Producto
Existe?} M -->|No| N[Registrar
Nuevo Producto] M -->|Sí| O[Actualizar
Producto Existente] O --> P[Guardar Cambios
en Base de Datos] N --> P end subgraph Admin2["👤 Administrador"] P --> Q[Revisar
Información] Q --> R[Confirmar
Acción] R --> S((Fin)) end style H fill:#fff5f5,stroke:#e74c3c
Proceso de Venta Venta al Contado con Productos
flowchart LR subgraph Vendedor["👤 Vendedor"] A((Inicio)) --> B[Verificar Estado
de Caja] B --> C{¿Caja
Abierta?} C -->|No| D[Abrir Caja
con Monto Inicial] D --> E[Buscar y Seleccionar
Productos] C -->|Sí| E E --> F[Agregar Productos
al Carrito] F --> G[Ingresar Monto
Recibido] G --> H[Confirmar
Venta] end subgraph Sistema["⚙️ Sistema"] H --> I[Validar Stock
de cada Producto] I --> J{¿Stock
Suficiente?} J -->|No| K[Mostrar Error
Stock Insuficiente] K --> E J -->|Sí| L[Calcular Total
+ IGV 18%] L --> M[Aplicar Descuento
de Stock] end subgraph BD["🗄️ Base de Datos"] M --> N[Registrar Venta
+ Detalles + Pago] N --> O[Registrar Movimiento
en Stock] end subgraph Caja["💵 Caja / Efectivo"] O --> P[Registrar Ingreso
en Caja Chica] P --> Q[Generar
Comprobante/Ticket] end subgraph Vendedor2["👤 Vendedor"] Q --> R[Entregar Ticket
al Cliente] R --> S((Fin)) end
Gestión de Caja Ciclo de Apertura, Operación y Cierre
flowchart LR subgraph Usuario["👤 Usuario"] A((Inicio
Jornada)) --> B[Abrir Caja
con Monto Inicial] end subgraph Sistema["⚙️ Sistema"] B --> C[Registrar Apertura
y Fondo Chica S/200] end subgraph Operaciones["📋 Operaciones del Día"] C --> D[Vender Productos
(Ingreso Automático)] D --> E[Registrar Movimiento
General (Ingreso/Egreso)] E --> F[Gestionar Caja Chica
Gasto / Reposición] F --> G{¿Cerrar
Caja?} G -->|No| D end subgraph Sistema2["⚙️ Sistema"] G -->|Sí| H[Calcular Monto
Esperado vs Real] H --> I[Registrar Cierre
con Diferencias] I --> J[Resetear Fondo Chica
a S/200.00] end subgraph Usuario2["👤 Usuario"] J --> K[Verificar
Resumen de Cierre] K --> L((Fin
Jornada)) end style G fill:#fff8e1,stroke:#f39c12
Eliminación y Restauración de Ventas Con Backup y Auditoría
flowchart LR subgraph Usuario["👤 Usuario"] A((Inicio)) --> B[Seleccionar Venta
a Eliminar] B --> C[Confirmar
Eliminación] end subgraph Sistema["⚙️ Sistema"] C --> D{¿Venta es
de Hoy?} D -->|No| E[Mostrar Error
No se puede eliminar] E --> F((Fin
Error)) D -->|Sí| G[Crear Backup JSON
de la Venta Completa] G --> H[Restaurar Stock
+ Registrar Auditoría] H --> I[Eliminar Venta
Detalles y Pagos] I --> J[Registrar Gasto
en Caja Chica] end subgraph Usuario2["👤 Usuario"] J --> K[Verificar
Venta Eliminada] K --> L((Fin
Eliminación)) end subgraph Usuario3["👤 Usuario"] M((Inicio
Restaurar)) --> N[Solicitar
Restauración] end subgraph Sistema3["⚙️ Sistema"] N --> O[Buscar Backup
en Stock Movimientos] O --> P{¿Backup
Disponible?} P -->|No| Q[Mostrar Error
Backup no encontrado] Q --> R((Fin
Error)) P -->|Sí| S[Recrear Venta
con Nuevo ID] S --> T[Restaurar Detalles
y Pagos] T --> U[Descontar Stock
Nuevamente] U --> V[Eliminar Backup
y Registrar Auditoría] end subgraph Usuario4["👤 Usuario"] V --> W[Verificar
Venta Restaurada] W --> X((Fin
Restauración)) end L -.-> M