SET TERM ^ ;

CREATE OR ALTER trigger ttbcheque_item_b02i for tbcheque_item
active before insert position 1
AS
DECLARE VARIABLE HISTORICO VARCHAR(500);
DECLARE VARIABLE TIPO_CHEQUE CHAR(1);

DECLARE VARIABLE NEW_DOCUMENTO VARCHAR(500);
BEGIN
    
    HISTORICO = '';
    TIPO_CHEQUE = COALESCE((SELECT FIRST 1 D.TIPO FROM TBCHEQUE D WHERE D.ID = NEW.CHEQUE_ID), '');

    NEW_DOCUMENTO = COALESCE(IIF(TIPO_CHEQUE = 'D', (SELECT FIRST 1 FN_LPAD(A.NUMERO_NOTAFISCAL, 6, '0')||'/'||FN_LPAD(A.SERIE, 3, '0')||'-'||FN_LPAD(A.PARCELA, 3, '0') FROM TBNFS_PARCELAMENTO A WHERE A.CONTROLE = NEW.DOCUMENTO_ID), (SELECT FIRST 1 FN_LPAD(B.NUMERO_NOTAFISCAL, 6, '0')||'/'||FN_LPAD(B.SERIE, 3, '0')||'-'||FN_LPAD(B.PARCELA, 3, '0') FROM TBNFE_PARCELAMENTO B WHERE B.CONTROLE = NEW.DOCUMENTO_ID)), '');

    IF(NEW.ID > 0)THEN
    BEGIN
        HISTORICO = HISTORICO||'DOCUMENTO: '||NEW_DOCUMENTO||' INCLUIDO';
    END

    IF(HISTORICO <> '')THEN
    BEGIN
        EXECUTE PROCEDURE SPI_HISTORICO('TBCHEQUE', NEW.CHEQUE_ID, HISTORICO);
    END
END
^

SET TERM ; ^

SET TERM ^ ;

CREATE OR ALTER trigger ttbcheque_item_b01u for tbcheque_item
active before update position 0
AS
DECLARE VARIABLE HISTORICO VARCHAR(5000);
DECLARE VARIABLE TIPO_CHEQUE CHAR(1);

DECLARE VARIABLE OLD_EMPRESA VARCHAR(500);
DECLARE VARIABLE NEW_EMPRESA VARCHAR(500);
DECLARE VARIABLE OLD_DOCUMENTO VARCHAR(500);
DECLARE VARIABLE NEW_DOCUMENTO VARCHAR(500);
BEGIN
    
    HISTORICO = '';
    TIPO_CHEQUE = COALESCE((SELECT FIRST 1 D.TIPO FROM TBCHEQUE D WHERE D.ID = OLD.CHEQUE_ID), '');

    OLD_DOCUMENTO = COALESCE(IIF(TIPO_CHEQUE = 'D', (SELECT FIRST 1 FN_LPAD(A.NUMERO_NOTAFISCAL, 6, '0')||'/'||FN_LPAD(A.SERIE, 3, '0')||'-'||FN_LPAD(A.PARCELA, 3, '0') FROM TBNFS_PARCELAMENTO A WHERE A.CONTROLE = OLD.DOCUMENTO_ID), (SELECT FIRST 1 FN_LPAD(B.NUMERO_NOTAFISCAL, 6, '0')||'/'||FN_LPAD(B.SERIE, 3, '0')||'-'||FN_LPAD(B.PARCELA, 3, '0') FROM TBNFE_PARCELAMENTO B WHERE B.CONTROLE = OLD.DOCUMENTO_ID)), '');
    NEW_DOCUMENTO = COALESCE(IIF(TIPO_CHEQUE = 'D', (SELECT FIRST 1 FN_LPAD(A.NUMERO_NOTAFISCAL, 6, '0')||'/'||FN_LPAD(A.SERIE, 3, '0')||'-'||FN_LPAD(A.PARCELA, 3, '0') FROM TBNFS_PARCELAMENTO A WHERE A.CONTROLE = NEW.DOCUMENTO_ID), (SELECT FIRST 1 FN_LPAD(B.NUMERO_NOTAFISCAL, 6, '0')||'/'||FN_LPAD(B.SERIE, 3, '0')||'-'||FN_LPAD(B.PARCELA, 3, '0') FROM TBNFE_PARCELAMENTO B WHERE B.CONTROLE = NEW.DOCUMENTO_ID)), '');
    OLD_EMPRESA = COALESCE((SELECT FIRST 1 FN_LPAD(C.CODIGO, 6, '0')||' - '||C.RAZAOSOCIAL FROM TBEMPRESA C WHERE C.CODIGO = OLD.EMPRESA_ID), '');
    NEW_EMPRESA = COALESCE((SELECT FIRST 1 FN_LPAD(C.CODIGO, 6, '0')||' - '||C.RAZAOSOCIAL FROM TBEMPRESA C WHERE C.CODIGO = NEW.EMPRESA_ID), '');

    IF(OLD.EMPRESA_ID <> NEW.EMPRESA_ID)THEN
    BEGIN
        HISTORICO = HISTORICO||' EMPRESA:'||OLD_EMPRESA||'->'||NEW_EMPRESA;
    END

    IF(OLD.TIPO_DOCUMENTO <> NEW.TIPO_DOCUMENTO)THEN
    BEGIN
        HISTORICO = HISTORICO||' TIPO DOCUMENTO:'||OLD.TIPO_DOCUMENTO||'->'||NEW.TIPO_DOCUMENTO;
    END

    IF(OLD.DOCUMENTO_ID <> NEW.DOCUMENTO_ID)THEN
    BEGIN
        HISTORICO = HISTORICO||' DOCUMENTO:'||OLD_DOCUMENTO||'->'||NEW_DOCUMENTO;
    END

    IF(OLD.VALOR <> NEW.VALOR)THEN
    BEGIN
        HISTORICO = HISTORICO||' VALOR:R$'||CAST(OLD.VALOR AS NUMERIC(15,2))||'->R$'||CAST(NEW.VALOR AS NUMERIC(15,2));
    END

    IF(HISTORICO <> '')THEN
    BEGIN
        HISTORICO = 'DOCUMENTO: '||NEW_DOCUMENTO||' ALTERADO:'||HISTORICO;
        EXECUTE PROCEDURE SPI_HISTORICO('TBCHEQUE', OLD.CHEQUE_ID, FN_ELIPSES(HISTORICO, 500));
    END
END
^

SET TERM ; ^

SET TERM ^ ;

CREATE OR ALTER trigger ttbcheque_item_b01d for tbcheque_item
active before delete position 0
AS
DECLARE VARIABLE HISTORICO VARCHAR(500);
DECLARE VARIABLE TIPO_CHEQUE CHAR(1);
DECLARE VARIABLE SITUACAO INTEGER;

DECLARE VARIABLE OLD_DOCUMENTO VARCHAR(500);
BEGIN

    SITUACAO = COALESCE((SELECT FIRST 1 B.SITUACAO FROM TBCHEQUE B WHERE B.ID = OLD.CHEQUE_ID), -1);

    IF((SITUACAO = 1) OR (SITUACAO = 2) OR (SITUACAO = 3) OR (SITUACAO = 4) OR (SITUACAO = 5) )THEN
    BEGIN
        IF((SITUACAO = 1) OR (SITUACAO = 4))THEN
        BEGIN
            EXCEPTION "..." 'REGISTRO: '||FN_LPAD(OLD.CHEQUE_ID, 4, '0')||' COM SITUAÇÃO: '||SITUACAO||' - BAIXADO, EXCLUSÃO DE ITENS NÃO AUTORIZADA!';
        END
        IF((SITUACAO = 2) OR (SITUACAO = 5))THEN
        BEGIN
            EXCEPTION "..." 'REGISTRO: '||FN_LPAD(OLD.CHEQUE_ID, 4, '0')||' COM SITUAÇÃO: '||SITUACAO||' - DEVOLVIDO, EXCLUSÃO DE ITENS NÃO AUTORIZADA!';
        END
        IF(SITUACAO = 3)THEN
        BEGIN
            EXCEPTION "..." 'REGISTRO: '||FN_LPAD(OLD.CHEQUE_ID, 4, '0')||' COM SITUAÇÃO: '||SITUACAO||' - QUITADO, EXCLUSÃO DE ITENS NÃO AUTORIZADA!';
        END
    END

    HISTORICO = '';
    TIPO_CHEQUE = COALESCE((SELECT FIRST 1 D.TIPO FROM TBCHEQUE D WHERE D.ID = OLD.CHEQUE_ID), '');

    OLD_DOCUMENTO = COALESCE(IIF(TIPO_CHEQUE = 'D', (SELECT FIRST 1 FN_LPAD(A.NUMERO_NOTAFISCAL, 6, '0')||'/'||FN_LPAD(A.SERIE, 3, '0')||'-'||FN_LPAD(A.PARCELA, 3, '0') FROM TBNFS_PARCELAMENTO A WHERE A.CONTROLE = OLD.DOCUMENTO_ID), (SELECT FIRST 1 FN_LPAD(B.NUMERO_NOTAFISCAL, 6, '0')||'/'||FN_LPAD(B.SERIE, 3, '0')||'-'||FN_LPAD(B.PARCELA, 3, '0') FROM TBNFE_PARCELAMENTO B WHERE B.CONTROLE = OLD.DOCUMENTO_ID)), '');

    IF(OLD.ID > 0)THEN
    BEGIN
        HISTORICO = HISTORICO||'DOCUMENTO: '||OLD_DOCUMENTO||' EXCLUIDO';
    END

    IF(HISTORICO <> '')THEN
    BEGIN
        EXECUTE PROCEDURE SPI_HISTORICO('TBCHEQUE', OLD.CHEQUE_ID, HISTORICO);
    END
END
^

SET TERM ; ^

