CREATE OR ALTER TRIGGER TTBCAIXABANCO_LANC_REG_AD01 FOR TBCAIXABANCO_LANCAMENTO_REG
ACTIVE AFTER DELETE POSITION 0
AS
DECLARE VARIABLE NFS_FORMA_PAGAMENTO_ID     INTEGER;
DECLARE VARIABLE PDV_CFE_FORMA_PAGAMENTO_ID INTEGER;
BEGIN
     IF(OLD.NFE_PARCELAMENTO_CONTROLE > 0) THEN
     BEGIN
        EXECUTE PROCEDURE SPU_CONTA_PAGAR_SALDO2(OLD.NFE_CONTROLE,OLD.NFE_PARCELAMENTO_CONTROLE);

        UPDATE TBNFE_PARCELAMENTO A SET
            A.VALOR_SALDO = COALESCE((SELECT SUM(CASE WHEN B.TIPO = 'D' THEN
            B.VALOR_TOTAL*-1  ELSE B.VALOR_TOTAL END)
            SALDO FROM TBCAIXABANCO_LANCAMENTO_REG B
            WHERE B.NFE_CONTROLE = A.NFE_CONTROLE
            AND B.TIPO IN ('D','C')
            AND B.NFE_PARCELAMENTO_CONTROLE = A.CONTROLE),0)
            WHERE A.NFE_CONTROLE = OLD.NFE_CONTROLE
              AND A.CONTROLE     = OLD.NFE_PARCELAMENTO_CONTROLE;
     END

     IF(OLD.NFS_PARCELAMENTO_CONTROLE > 0) THEN
     BEGIN
        EXECUTE PROCEDURE SPU_CONTA_RECEBER_SALDO2(OLD.NFS_CONTROLE,OLD.NFS_PARCELAMENTO_CONTROLE);

        UPDATE TBNFS_PARCELAMENTO A SET A.VALOR_SALDO = COALESCE((SELECT SUM(CASE WHEN B.TIPO = 'C'
            THEN B.VALOR_TOTAL*-1  ELSE B.VALOR_TOTAL END) SALDO FROM TBCAIXABANCO_LANCAMENTO_REG B
            WHERE B.NFS_CONTROLE = A.NFS_CONTROLE
            AND B.TIPO IN ('D','C')
            AND B.NFS_PARCELAMENTO_CONTROLE = A.CONTROLE),0)
            WHERE A.NFS_CONTROLE = OLD.NFS_CONTROLE
              AND A.CONTROLE     = OLD.NFS_PARCELAMENTO_CONTROLE;
     END

     IF(OLD.CAIXABANCO_CONTROLE > 0) THEN
     BEGIN
          UPDATE TBCAIXABANCO_LANCAMENTO A
            SET A.VALOR_TOTAL = COALESCE((SELECT SUM(B.VALOR_TOTAL) FROM TBCAIXABANCO_LANCAMENTO_REG B WHERE B.CAIXABANCO_CONTROLE = OLD.CAIXABANCO_CONTROLE),0)
            WHERE A.CONTROLE  = OLD.CAIXABANCO_CONTROLE;

          DELETE FROM TBCAIXABANCO_LANCAMENTO_CLASS WHERE CAIXABANCO_CONTROLE = OLD.CAIXABANCO_CONTROLE AND (CONTA_PAGAR_CONTROLE = OLD.CONTROLE or CONTA_RECEBER_CONTROLE = OLD.CONTROLE);
     END

     IF(OLD.TARIFA_ADQUIRENTE = 1)THEN
     BEGIN
         UPDATE TBNFS_PARCELAMENTO A 
            SET A.VALOR_TAXA       = 0, 
                A.PERCENTUAL_TAXA  = 0
            WHERE A.NFS_CONTROLE   = OLD.NFS_CONTROLE
              AND A.CONTROLE       = OLD.NFS_PARCELAMENTO_CONTROLE;

         FOR SELECT FIRST 1
            A.NFS_FORMA_PAGAMENTO_ID, 
            A.PDV_CFE_FORMA_PAGAMENTO_ID
            FROM TBNFS_PARCELAMENTO A 
            WHERE A.NFS_CONTROLE = OLD.NFS_CONTROLE
              AND A.CONTROLE     = OLD.NFS_PARCELAMENTO_CONTROLE
              INTO :NFS_FORMA_PAGAMENTO_ID, :PDV_CFE_FORMA_PAGAMENTO_ID DO
              BEGIN
                   IF(:NFS_FORMA_PAGAMENTO_ID > 0)THEN
                   BEGIN
                       UPDATE TBNFS_FORMA_PAGAMENTO C SET C.VALOR_TAXA = COALESCE((
                            SELECT SUM(B.VALOR) AS SUM_TAXA
                            FROM TBNFS_PARCELAMENTO A, TBCAIXABANCO_LANCAMENTO_REG B
                            WHERE B.NFS_PARCELAMENTO_CONTROLE = A.CONTROLE
                            AND B.NFS_CONTROLE = A.NFS_CONTROLE
                            AND B.TARIFA_ADQUIRENTE = '1'
                            AND B.TARIFA_ADQUIRENTE IS NOT NULL
                            AND A.NFS_FORMA_PAGAMENTO_ID = C.ID),0),
                            C.PERCENTUAL_TAXA = ((COALESCE((
                                SELECT SUM(B.VALOR) AS SUM_TAXA
                                FROM TBNFS_PARCELAMENTO A, TBCAIXABANCO_LANCAMENTO_REG B
                                WHERE B.NFS_PARCELAMENTO_CONTROLE = A.CONTROLE
                                AND B.NFS_CONTROLE = A.NFS_CONTROLE
                                AND B.TARIFA_ADQUIRENTE = '1'
                                AND B.TARIFA_ADQUIRENTE IS NOT NULL
                                AND A.NFS_FORMA_PAGAMENTO_ID = C.ID),0)*100)/C.VALOR),
                            C.VALOR_LIQUIDO = C.VALOR - COALESCE((
                            SELECT SUM(B.VALOR) AS SUM_TAXA
                            FROM TBNFS_PARCELAMENTO A, TBCAIXABANCO_LANCAMENTO_REG B
                            WHERE B.NFS_PARCELAMENTO_CONTROLE = A.CONTROLE
                            AND B.NFS_CONTROLE = A.NFS_CONTROLE
                            AND B.TARIFA_ADQUIRENTE = '1'
                            AND B.TARIFA_ADQUIRENTE IS NOT NULL
                            AND A.NFS_FORMA_PAGAMENTO_ID = C.ID),0)
                                        
                        WHERE C.ID = :NFS_FORMA_PAGAMENTO_ID;
                   END
        
                   IF(:PDV_CFE_FORMA_PAGAMENTO_ID > 0)THEN
                   BEGIN
                        UPDATE TBNFS_FORMA_PAGAMENTO C SET C.VALOR_TAXA = COALESCE((
                            SELECT SUM(B.VALOR) AS SUM_TAXA
                            FROM TBNFS_PARCELAMENTO A, TBCAIXABANCO_LANCAMENTO_REG B
                            WHERE B.NFS_PARCELAMENTO_CONTROLE = A.CONTROLE
                            AND B.NFS_CONTROLE = A.NFS_CONTROLE
                            AND B.TARIFA_ADQUIRENTE = '1'
                            AND B.TARIFA_ADQUIRENTE IS NOT NULL
                            AND A.PDV_CFE_FORMA_PAGAMENTO_ID = C.PDV_CFE_FORMA_PAGAMENTO_ID),0),
                            C.PERCENTUAL_TAXA = ((COALESCE((
                                SELECT SUM(B.VALOR) AS SUM_TAXA
                                FROM TBNFS_PARCELAMENTO A, TBCAIXABANCO_LANCAMENTO_REG B
                                WHERE B.NFS_PARCELAMENTO_CONTROLE = A.CONTROLE
                                AND B.NFS_CONTROLE = A.NFS_CONTROLE
                                AND B.TARIFA_ADQUIRENTE = '1'
                                AND B.TARIFA_ADQUIRENTE IS NOT NULL
                                AND A.PDV_CFE_FORMA_PAGAMENTO_ID = C.PDV_CFE_FORMA_PAGAMENTO_ID),0)*100)/C.VALOR),
                            C.VALOR_LIQUIDO = C.VALOR - COALESCE((
                            SELECT SUM(B.VALOR) AS SUM_TAXA
                            FROM TBNFS_PARCELAMENTO A, TBCAIXABANCO_LANCAMENTO_REG B
                            WHERE B.NFS_PARCELAMENTO_CONTROLE = A.CONTROLE
                            AND B.NFS_CONTROLE = A.NFS_CONTROLE
                            AND B.TARIFA_ADQUIRENTE = '1'
                            AND B.TARIFA_ADQUIRENTE IS NOT NULL
                            AND A.PDV_CFE_FORMA_PAGAMENTO_ID = C.PDV_CFE_FORMA_PAGAMENTO_ID),0)
                        
                            WHERE C.PDV_CFE_FORMA_PAGAMENTO_ID = :PDV_CFE_FORMA_PAGAMENTO_ID;
                   END
              END 
     END
END;