-- =====================================================
-- TRIGGERS PARA ACTUALIZACIÓN AUTOMÁTICA DE SALDO CxC
-- VERSIÓN ALTERNATIVA - Compatible con MySQL < 5.7.2
-- Los triggers están en cxc_aplicacion_pagos y actualizan cxc_cargos.saldo
-- =====================================================

DELIMITER $$

-- Trigger: Actualizar saldo cuando se INSERTA una aplicación de pago
DROP TRIGGER IF EXISTS trg_cxc_aplicacion_insert$$
CREATE TRIGGER trg_cxc_aplicacion_insert
AFTER INSERT ON cxc_aplicacion_pagos
FOR EACH ROW
BEGIN
    -- Disminuir el saldo del cargo
    UPDATE cxc_cargos 
    SET saldo = saldo - NEW.monto_aplicado
    WHERE id_cargo = NEW.id_cargo;
END$$

-- Trigger: Actualizar saldo cuando se ACTUALIZA una aplicación de pago
DROP TRIGGER IF EXISTS trg_cxc_aplicacion_update$$
CREATE TRIGGER trg_cxc_aplicacion_update
AFTER UPDATE ON cxc_aplicacion_pagos
FOR EACH ROW
BEGIN
    -- Revertir el monto anterior
    UPDATE cxc_cargos 
    SET saldo = saldo + OLD.monto_aplicado
    WHERE id_cargo = OLD.id_cargo;
    
    -- Aplicar el nuevo monto
    UPDATE cxc_cargos 
    SET saldo = saldo - NEW.monto_aplicado
    WHERE id_cargo = NEW.id_cargo;
END$$

-- Trigger: Actualizar saldo cuando se ELIMINA una aplicación de pago
DROP TRIGGER IF EXISTS trg_cxc_aplicacion_delete$$
CREATE TRIGGER trg_cxc_aplicacion_delete
AFTER DELETE ON cxc_aplicacion_pagos
FOR EACH ROW
BEGIN
    -- Revertir el monto (aumentar el saldo)
    UPDATE cxc_cargos 
    SET saldo = saldo + OLD.monto_aplicado
    WHERE id_cargo = OLD.id_cargo;
END$$

DELIMITER ;

-- =====================================================
-- Verificar que los triggers fueron creados
-- =====================================================
SHOW TRIGGERS WHERE `Table` = 'cxc_aplicacion_pagos';
