IMPLEMENTACIÓN DEL MÓDULO COMPRAS

FUNCIONALIDADES
- Listado y búsqueda por proveedor, RUC, comprobante, almacén y usuario.
- Filtros por proveedor, almacén, estado y rango de fechas.
- Resumen de compras registradas, anuladas y monto vigente.
- Registro de compra con proveedor, almacén, serie y fecha.
- Numeración automática y transaccional del comprobante.
- Detalle dinámico con múltiples productos.
- Prevención de productos duplicados en cliente, controlador y base de datos.
- Cálculo de subtotal, IGV y total en el servidor.
- Actualización automática de stock, movimientos y kardex mediante triggers.
- Actualización del último precio de compra del producto.
- Vista detallada del comprobante.
- Anulación controlada mediante sp_anular_compra.
- Reversión de inventario y kardex al anular.
- Registro de auditoría.
- Protección CSRF, consultas preparadas, validaciones y transacciones.

ARCHIVOS PRINCIPALES
app/modules/compras/controllers/ComprasController.php
app/modules/compras/models/Compra.php
app/modules/compras/views/index.php
app/modules/compras/views/registrar.php
app/modules/compras/views/detalle.php

INTEGRACIÓN
- Se agregó Compras al menú principal.
- Se reutiliza el middleware de permisos existente.
- La estructura es compatible con database/db_ventas_v2_completa.sql.

PRUEBA RECOMENDADA
1. Ingresar con admin@sistema.com / password.
2. Abrir Compras > Registrar compra.
3. Seleccionar proveedor, almacén y serie.
4. Agregar uno o más productos sin repetirlos.
5. Guardar y comprobar Inventario y Kardex.
6. Probar la anulación desde el detalle de la compra.

VALIDACIÓN TÉCNICA
Todos los archivos PHP del proyecto fueron analizados con php -l sin errores de sintaxis.
