Diagrama de Edicion de Ingresos

Resumen del Sistema
🎯 Operaciones Principales
- CONSULTAR: Lista de ingresos con opción de edición
- VALIDAR: Verificación completa de permisos y datos
- EDITAR: Formulario modal con datos pre-cargados
- ACTUALIZAR: Procesamiento completo con transacciones
- RESULTADO: Confirmación de actualización exitosa
🔧 Componentes Técnicos
- Controlador:
UpdateIngresos para manejo de rutas y vistas
- Servicio Principal:
UpdateIngresosService que coordina todo el proceso
- Servicios Especializados: 6 servicios específicos para diferentes aspectos
- Vistas: Modal de edición con formulario completo
- Rutas: RESTful con método PUT para actualización
🛡️ Características de Seguridad
- Validación de permisos por usuario (solo sus ingresos)
- Transacciones de base de datos para consistencia
- Validación robusta de datos antes de procesamiento
- Rollback automático en caso de errores
- Logging completo para auditoría y debugging
📊 Flujo de Edición
1. Inicio del Proceso
- Usuario accede a lista de ingresos
- Selecciona ingreso para editar
- Sistema valida permisos del usuario
- Datos Generales: Fecha, tercero, medio de pago, tipo de venta
- Ingresos Existentes: Productos/servicios ya registrados
- Nuevos Ingresos: Opción de agregar más productos
- Ingresos a Eliminar: Opción de quitar productos
3. Validación Completa
- Validar Ingresos Existentes: Verificar que pertenezcan al usuario
- Validar Datos Básicos: Fecha, tercero, medio de pago obligatorios
- Validar Stock de Inventario: Verificar disponibilidad de productos
- Validar Nuevos Ingresos: Código, cantidad, precio válidos
- Validar Abono para Crédito: No exceder total de venta
4. Procesamiento de Actualización
- Analizar Cambios: Detectar modificaciones en tipo de venta, medio de pago, cantidades, precios
- Eliminar Ingresos: Procesar eliminaciones solicitadas
- Actualizar Existentes: Modificar ingresos existentes
- Procesar Nuevos: Crear nuevos ingresos
- Actualizar Disponibilidad: Ajustar disponibilidad de dinero
- Manejar Cuentas por Pagar: Gestionar cuentas de crédito
5. Finalización
- Confirmar Transacción: Commit de todos los cambios
- Mostrar Resultado: Confirmación de actualización exitosa
🔌 Servicios Especializados
✅ ValidacionIngresosService
- Validación de coherencia de datos
- Verificación de permisos y existencia
- Validación de stock de inventario
- Validación de abonos para crédito
📦 InventarioService
- Actualización de inventario cuando cambian cantidades
- Manejo de lotes con lógica FIFO
- Registro en historial de inventario
- Restauración de stock al eliminar ingresos
💵 DisponibilidadService
- Actualización de disponibilidad de dinero
- Manejo de cambios entre contado y crédito
- Ajuste de montos según tipo de venta
- Cálculo de diferencias por cambios
💳 CuentasPorPagarService
- Creación de cuentas por pagar para ventas a crédito
- Actualización de montos y fechas de vencimiento
- Manejo de abonos iniciales
- Eliminación de cuentas al cambiar a contado
➕ NuevosIngresosService
- Creación de nuevos ingresos dentro de una actualización
- Asignación de consecutivos secuenciales
- Cálculo de totales e impuestos
- Integración con inventario y disponibilidad
🗑️ EliminarIngresosService
- Eliminación segura de ingresos existentes
- Restauración de stock de inventario
- Ajuste de disponibilidad de dinero
- Limpieza de cuentas por pagar relacionadas
📄 Tipos de Cambios Detectados
🔄 Cambio de Tipo de Venta
- Contado → Crédito: Crear cuenta por pagar, ajustar disponibilidad
- Crédito → Contado: Eliminar cuenta por pagar, ajustar disponibilidad
- Otros Ingresos: Manejo especial sin inventario
💳 Cambio de Medio de Pago
- Efectivo → Transferencia: Ajustar disponibilidad por tipo
- Transferencia → Efectivo: Cambiar categoría de disponibilidad
- Otros Medios: Manejo específico por tipo
📦 Cambio de Cantidad
- Aumento: Verificar stock disponible, actualizar inventario
- Disminución: Restaurar stock, ajustar lotes
- Eliminación: Restaurar completamente el stock
💰 Cambio de Precio
- Aumento: Ajustar totales y disponibilidad
- Disminución: Recalcular montos y cuentas por pagar
- IVA/Descuentos: Recalcular totales netos
⚙️ Arquitectura Escalable
- Servicios Especializados: Separación clara de responsabilidades
- Transacciones de BD: Consistencia garantizada
- Validación Robusta: Múltiples capas de validación
- Manejo de Errores: Rollback automático y logging completo
- Flexibilidad: Soporte para múltiples tipos de cambios
📋 Rutas Disponibles
GET /ingresos/{consecutivo}/edit: Mostrar formulario de edición
PUT /ingresos/{consecutivo}: Procesar actualización de ingresos
🔍 Validaciones Específicas
- Permisos: Solo el usuario propietario puede editar
- Existencia: Verificar que los ingresos existan
- Stock: Validar disponibilidad de productos
- Coherencia: Datos básicos obligatorios
- Abonos: No exceder total de venta en crédito
- Nuevos Ingresos: Código, cantidad y precio válidos
📊 Procesamiento de Datos
- Cálculo de Totales: Montos, descuentos, IVA, total neto
- Actualización de Inventario: Stock, lotes, historial
- Manejo de Disponibilidad: Dinero disponible por tipo
- Gestión de Cuentas: Por pagar, abonos, vencimientos
- Transacciones: Commit/Rollback automático