# INSTRUCCIONES PARA INSTALAR LOS TRIGGERS DEL SISTEMA ERP ## 📋 Archivos de Triggers Disponibles ### 1. **triggers_cxp.sql** - Cuentas por Pagar (Proveedores) - Tabla afectada: `cxp_pagos` - Saldo actualizado: `cxp_cargos.saldo` - Triggers: - `trg_cxp_pago_insert` - `trg_cxp_pago_update` - `trg_cxp_pago_delete` ### 2. **triggers_cxc.sql** - Cuentas por Cobrar (Clientes) - Tabla afectada: `cxc_pagos` - Saldo actualizado: `cxc_cargos.saldo` - Triggers: - `trg_cxc_pago_insert` - `trg_cxc_pago_update` - `trg_cxc_pago_delete` --- ## 🚀 INSTALACIÓN AUTOMÁTICA (Recomendado) ### Opción A: Instalar Todos los Triggers (CxP + CxC) **Abre en tu navegador:** ``` http://localhost/erp-simple/instalar_todos_triggers.php ``` ✅ Instala automáticamente triggers de proveedores Y clientes ### Opción B: Instalar Solo CxP (Proveedores) ``` http://localhost/erp-simple/instalar_triggers.php ``` ### Opción C: Instalar Solo CxC (Clientes) ``` http://localhost/erp-simple/instalar_triggers_cxc.php ``` --- ## 🛠️ INSTALACIÓN MANUAL (Desde phpMyAdmin) ### Instalación Completa: 1. Abre **phpMyAdmin** → http://localhost/phpmyadmin 2. Selecciona la base de datos **`erp`** 3. Ve a la pestaña **SQL** 4. **Ejecuta primero** el contenido de `triggers_cxp.sql` 5. **Luego ejecuta** el contenido de `triggers_cxc.sql` 6. Haz clic en **Continuar** ### Desde línea de comandos MySQL: ```bash mysql -u root -p erp < triggers_cxp.sql mysql -u root -p erp < triggers_cxc.sql ``` --- ## ✅ Verificar Instalación ### Verificar triggers de CxP (Proveedores): ```sql SHOW TRIGGERS WHERE `Table` = 'cxp_pagos'; ``` Deberías ver 3 triggers. ### Verificar triggers de CxC (Clientes): ```sql SHOW TRIGGERS WHERE `Table` = 'cxc_pagos'; ``` Deberías ver 3 triggers. ### Verificar todos los triggers: ```sql SHOW TRIGGERS; ``` --- ## 🎯 ¿Qué hacen estos triggers? ### Triggers de CxP (Proveedores) Cuando trabajas con **pagos a proveedores** en la tabla `cxp_pagos`: | Acción | Trigger | Efecto | |--------|---------|--------| | **INSERT** | `trg_cxp_pago_insert` | Disminuye `cxp_cargos.saldo` | | **UPDATE** | `trg_cxp_pago_update` | Ajusta el saldo (revierte anterior, aplica nuevo) | | **DELETE** | `trg_cxp_pago_delete` | Aumenta el saldo (revierte el pago) | ### Triggers de CxC (Clientes) Cuando trabajas con **cobros a clientes** en la tabla `cxc_pagos`: | Acción | Trigger | Efecto | |--------|---------|--------| | **INSERT** | `trg_cxc_pago_insert` | Disminuye `cxc_cargos.saldo` | | **UPDATE** | `trg_cxc_pago_update` | Ajusta el saldo (revierte anterior, aplica nuevo) | | **DELETE** | `trg_cxc_pago_delete` | Aumenta el saldo (revierte el cobro) | --- ## 💡 Ventajas de usar Triggers ✅ **Integridad automática**: El saldo siempre está correcto ✅ **Código más limpio**: No necesitas UPDATE manual en PHP ✅ **Centralizado**: La lógica está en la base de datos ✅ **Consistencia**: Funciona aunque modifiques la BD desde otro lugar ✅ **Seguridad**: Imposible olvidar actualizar el saldo --- ## 🔧 Ejemplo de Funcionamiento ### Antes (sin triggers): ```php // Código PHP antiguo $stmt->execute([$idPago, $idCargo, $montoAplicar]); $stmtActualizarCargo->execute([$montoAplicar, $idCargo]); // ← Manual ``` ### Ahora (con triggers): ```php // Código PHP nuevo $stmt->execute([$idPago, $idCargo, $montoAplicar]); // ✅ El trigger actualiza el saldo automáticamente! ``` --- ## 🆘 Solución de Problemas ### Error: "Trigger already exists" Los instaladores PHP automáticamente eliminan triggers existentes antes de crearlos (`DROP TRIGGER IF EXISTS`). ### No se actualizan los saldos Verifica que: 1. Los triggers estén instalados (usa `SHOW TRIGGERS`) 2. El campo `id_cargo` en `cxp_pagos`/`cxc_pagos` no sea NULL 3. El campo `id_cargo` corresponda a un cargo existente ### Reinstalar triggers Simplemente vuelve a ejecutar el instalador: ``` http://localhost/erp-simple/instalar_todos_triggers.php ``` --- ## 📞 Archivos Relacionados - `triggers_cxp.sql` - Definición de triggers para proveedores - `triggers_cxc.sql` - Definición de triggers para clientes - `instalar_todos_triggers.php` - Instalador maestro (CxP + CxC) - `instalar_triggers.php` - Instalador solo CxP - `instalar_triggers_cxc.php` - Instalador solo CxC - `pagos_proveedores.php` - Módulo de pagos (ya compatible con triggers)