MÓDULO VENTAS IMPLEMENTADO

FUNCIONALIDADES
- Listado y búsqueda por cliente, documento, comprobante, almacén y usuario.
- Filtros por cliente, almacén, estado, estado de pago y rango de fechas.
- Registro de ventas con múltiples productos.
- Numeración automática por serie de comprobante.
- Consulta de stock por almacén en el formulario.
- Prevención de productos duplicados en el detalle.
- Validación de stock tanto en interfaz como en servidor y base de datos.
- Cálculo de subtotal, IGV y total.
- Conservación del costo histórico mediante el trigger de detalle_ventas.
- Descuento automático de inventario y registro de kardex.
- Vista de detalle con total pagado y saldo.
- Anulación controlada mediante sp_anular_venta.
- Devolución automática de stock al anular.
- Bloqueo de anulación cuando existen pagos registrados.
- Registro de auditoría y protección CSRF.

REUTILIZACIÓN Y LIMPIEZA
- Las validaciones comunes de fecha-hora y decimales se centralizaron en Controller.php.
- El módulo Compras fue adaptado para usar dichas validaciones compartidas.
- Las búsquedas usan parámetros independientes para evitar SQLSTATE HY093.
- Toda la operación de venta se ejecuta dentro de una transacción.

BASE DE DATOS
No es necesario importar un script adicional si ya se está utilizando
la base db_ventas_v2_completa.sql incluida en el proyecto.

PRUEBA RECOMENDADA
1. Ingresar como admin@sistema.com / password.
2. Seleccionar Ventas > Registrar venta.
3. Elegir un almacén y comprobar el stock mostrado.
4. Registrar una venta.
5. Revisar Inventario y Kardex.
6. Anular una venta sin pagos y comprobar la devolución del stock.

VALIDACIÓN
Todos los archivos PHP fueron revisados con php -l sin errores de sintaxis.
