# MÓDULO DE CONCILIACIÓN BANCARIA - DOCUMENTACIÓN COMPLETA ## Descripción General El módulo de Conciliación Bancaria es un sistema integral para reconciliar los extractos bancarios con los movimientos registrados en el sistema ERP. Permite identificar diferencias, validar transacciones y mantener la precisión de los saldos bancarios. ## Archivos Creados ### 1. **funciones_conciliacion.php** Clase PHP que contiene toda la lógica de negocio para conciliaciones bancarias. **Métodos principales:** - `crearConciliacion()` - Crear nueva conciliación - `obtenerConciliacionesPorCuenta()` - Obtener historial de conciliaciones - `obtenerDetalleConciliacion()` - Ver detalles completos - `obtenerMovimientosNoConciliados()` - Obtener movimientos disponibles - `agregarAlPDA()` - Agregar movimiento a la conciliación - `eliminarDelPDA()` - Remover movimiento - `calcularSaldoSistema()` - Calcular balance de período - `marcarConciliado()` - Marcar movimiento como conciliado - `finalizarConciliacion()` - Finalizar conciliación - `obtenerResumenConciliacion()` - Obtener resumen - `obtenerDiferenciasNoConciliadas()` - Obtener diferencias pendientes ### 2. **conciliacion_bancaria.php** Interfaz principal del módulo con: - Listado de cuentas bancarias - Creación de nuevas conciliaciones - Edición y gestión de conciliaciones - Interfaz visual de movimientos - Identificación de diferencias - Finalización de conciliaciones **Características:** - Interfaz responsive con Bootstrap 5 - Diseño intuitivo y moderno - Validaciones de cliente y servidor - Feedback visual en tiempo real ### 3. **api_conciliacion.php** API AJAX para operaciones dinámicas: - `obtener_movimientos_disponibles` - Cargar movimientos sin conciliar - `obtener_saldo_sistema` - Calcular saldo para período - `agregar_movimiento` - Agregar movimiento sin recargar - `eliminar_movimiento` - Remover movimiento dinámicamente - `obtener_resumen` - Obtener datos resumidos - `obtener_detalles` - Detalles completos - `obtener_diferencias` - Listado de diferencias - `finalizar_conciliacion` - Finalizar proceso - `obtener_conciliaciones_cuenta` - Historial de cuenta - `exportar_csv` - Exportar a CSV - `exportar_pdf` - Preparar datos para PDF - `cargar_extracto` - Importar extracto bancario ### 4. **reportes_conciliacion.php** Módulo de reportes con 4 tipos: - **Resumen General** - Visión general de todas las conciliaciones - **Diferencias** - Listado de diferencias no conciliadas - **Movimientos Conciliados** - Detalle de movimientos por período - **Análisis de Varianza** - Análisis estadístico de diferencias **Características:** - Filtros por fecha y cuenta - Estadísticas en tiempo real - Exportación a CSV - Opción de impresión ### 5. **crear_tablas_conciliacion.sql** Script SQL que crea: - `conciliacion_bancaria` - Tabla principal - `pda_maestro` - Maestro de partidas - `pda_detalle` - Detalle de partidas - `extractos_bancarios` - Almacenamiento de extractos - Vistas de reportes para análisis - Índices para optimización ## Estructura de Tablas ### conciliacion_bancaria ``` id_conciliacion (PK) id_empresa id_cuenta_bancaria (FK) fecha_inicio fecha_fin saldo_extracto (DECIMAL) saldo_sistema_calculado (DECIMAL) diferencia (DECIMAL) estado (ENUM: PENDIENTE, FINALIZADA) usuario_creacion usuario_finalizacion fecha_creacion fecha_finalizacion observaciones ``` ### pda_maestro ``` id_pda (PK) id_conciliacion (FK) id_movimiento (FK) fecha_creacion ``` ### pda_detalle ``` id_detalle (PK) id_pda (FK) id_conciliacion (FK) id_movimiento (FK) monto_extracto (DECIMAL) monto_sistema (DECIMAL) diferencia (DECIMAL) estado_item (ENUM: CONCILIADO, PENDIENTE, RECHAZADO) fecha_creacion ``` ### extractos_bancarios ``` id_extracto (PK) id_conciliacion (FK) id_cuenta (FK) fecha_movimiento tipo_movimiento (DEPOSITO, RETIRO, COMISION, etc) referencia descripcion monto (DECIMAL) saldo_disponible (DECIMAL) numero_secuencia fecha_carga usuario_carga ``` ## Flujo de Uso ### Paso 1: Crear Conciliación 1. Acceder a `conciliacion_bancaria.php` 2. Seleccionar cuenta bancaria del lado izquierdo 3. Llenar formulario "Crear Conciliación": - Seleccionar cuenta - Ingresar fecha inicio y fin - Ingresar saldo del extracto 4. Hacer clic en "Crear Conciliación" ### Paso 2: Agregar Movimientos 1. La conciliación abre en modo edición 2. En sección "Movimientos Disponibles para Conciliar": - Revisar movimientos sin conciliar - Hacer clic en botón "+" para cada movimiento - En modal, confirmar monto del extracto - Sistema compara automáticamente montos ### Paso 3: Resolver Diferencias 1. Sección "Diferencias No Conciliadas" muestra inconsistencias 2. Analizar: - Fecha del movimiento - Concepto y referencia - Montos extracto vs sistema 3. Opciones: - Ajustar movimiento en sistema - Contactar banco si hay error en extracto - Esperar aclaración ### Paso 4: Finalizar Conciliación 1. Una vez resueltas diferencias 2. Hacer clic en "Finalizar Conciliación" 3. Sistema calcula diferencias finales 4. Marca movimientos como conciliados 5. Muestra reporte final ## Vistas SQL Disponibles ### vw_resumen_conciliaciones Resumen general de todas las conciliaciones con estadísticas. ### vw_diferencias_no_conciliadas Listado de todas las diferencias pendientes por resolver. ### vw_movimientos_conciliados_periodo Detalle de movimientos conciliados por período. ## Consultas SQL Útiles ### Ver todas las conciliaciones de una cuenta ```sql SELECT * FROM conciliacion_bancaria WHERE id_cuenta_bancaria = ? ORDER BY fecha_creacion DESC; ``` ### Ver diferencias sin resolver ```sql SELECT * FROM vw_diferencias_no_conciliadas WHERE id_empresa = ? ORDER BY fecha_movimiento DESC; ``` ### Ver resumen de conciliación ```sql SELECT COUNT(*) as total_movimientos, SUM(CASE WHEN estado_item = 'CONCILIADO' THEN 1 ELSE 0 END) as conciliados, SUM(diferencia) as total_diferencias FROM pda_detalle WHERE id_conciliacion = ?; ``` ## Validaciones del Sistema ### Validaciones de Cliente - Fecha fin debe ser mayor que fecha inicio - Saldo extracto debe ser numérico - Campos requeridos no deben estar vacíos - Confirmaciones antes de operaciones críticas ### Validaciones de Servidor - Verificar autenticación de usuario - Validar existencia de registros - Evitar duplicados en PDA - Mantener integridad referencial - Registrar auditoría de cambios ## Operaciones Administrativas ### Crear Tablas en Base de Datos ```bash mysql -u root -p erp < crear_tablas_conciliacion.sql ``` ### Respaldar Datos de Conciliación ```sql -- Exportar conciliaciones SELECT * FROM conciliacion_bancaria INTO OUTFILE '/tmp/conciliaciones.csv' FIELDS TERMINATED BY ',' ENCLOSED BY '"' LINES TERMINATED BY '\n'; ``` ### Eliminar Conciliación (con cuidado) ```sql DELETE FROM conciliacion_bancaria WHERE id_conciliacion = ?; -- Cascada eliminará automáticamente PDA ``` ## Mejoras Futuras Recomendadas 1. **Importación Automática de Extractos** - Parser de formatos bancarios (OFX, MT940) - Carga masiva de movimientos - Validación automática 2. **Inteligencia Artificial** - Coincidencia automática de movimientos - Detección de patrones de diferencias - Alertas inteligentes 3. **Integración Bancaria** - APIs de bancos locales - Descarga automática de extractos - Sincronización en tiempo real 4. **Análisis Avanzados** - Gráficos de tendencias - Análisis de varianzas - Pronósticos de conciliación 5. **Auditoría Mejorada** - Historial completo de cambios - Seguimiento de usuario - Trazabilidad total ## Seguridad El módulo implementa: - Validación de sesión - Validación de entrada (prepared statements) - Control de acceso por rol - Encriptación de datos sensibles - Logs de auditoría - Protección contra inyección SQL ## Soporte y Mantenimiento ### Registros de Error Los errores se registran en el servidor con: - Timestamp - Usuario - Acción - Mensaje de error - Stack trace ### Optimización de Base de Datos Se han creado índices en: - `id_empresa` - `id_cuenta_bancaria` - `estado` - `id_movimiento` - `fecha_movimiento` ### Performance - Vistas SQL pre-compiladas - Índices estratégicos - Paginación de resultados grandes - Caché de consultas frecuentes ## Preguntas Frecuentes **P: ¿Cómo se calcula el saldo del sistema?** R: Se suman todos los depósitos y restan los retiros del período especificado. **P: ¿Qué pasa si la diferencia no es cero?** R: Se marca como "PENDIENTE" y aparece en reportes de diferencias para investigar. **P: ¿Se puede modificar una conciliación finalizada?** R: No, las conciliaciones finalizadas son de solo lectura para mantener auditoría. **P: ¿Cómo se importan extractos bancarios?** R: Por CSV con formato: fecha,tipo,referencia,descripción,monto,saldo **P: ¿Qué usuario puede hacer conciliaciones?** R: Usuarios con permiso en el rol de finanzas/contabilidad --- **Versión:** 1.0 **Última Actualización:** Diciembre 2025 **Autor:** Sistema ERP