--ALTER TABLE TBCAIXABANCO_LANCAMENTO_REG ADD MOVCONTABIL_ID INTEGER;

CREATE TRIGGER TTBCAIXABANCO_LANC_REG_B04I FOR TBCAIXABANCO_LANCAMENTO_REG
ACTIVE BEFORE INSERT POSITION 9
AS
DECLARE VARIABLE HISTORICO VARCHAR(500);
BEGIN

    HISTORICO = '';
    IF(NEW.CONTROLE > 0)THEN
    BEGIN
        HISTORICO = 'LANC.CLASS. ID:'||NEW.CONTROLE||', CCUSTO:'||NEW.CCUSTO||', OP:'||NEW.OPERACAO_CODIGO||' INCLUIDA.';
    END

    IF(HISTORICO <> '') THEN
    BEGIN
        EXECUTE PROCEDURE SPI_HISTORICO('TBCAIXABANCO_LANCAMENTO', NEW.CAIXABANCO_CONTROLE, HISTORICO);
    END
END;

CREATE TRIGGER TTBCAIXABANCO_LANC_REG_B04D FOR TBCAIXABANCO_LANCAMENTO_REG
ACTIVE BEFORE DELETE POSITION 9
AS
DECLARE VARIABLE HISTORICO VARCHAR(500);
BEGIN

    HISTORICO = '';
    IF(OLD.CONTROLE > 0)THEN
    BEGIN
        HISTORICO = 'LANC.CLASS. ID:'||OLD.CONTROLE||', CCUSTO:'||OLD.CCUSTO||', OP:'||OLD.OPERACAO_CODIGO||' EXCLUIDA.';
    END

    IF(HISTORICO <> '') THEN
    BEGIN
        EXECUTE PROCEDURE SPI_HISTORICO('TBCAIXABANCO_LANCAMENTO', OLD.CAIXABANCO_CONTROLE, HISTORICO);
    END
END;

CREATE TRIGGER TTBCAIXABANCO_LANC_REG_B04I FOR TBCAIXABANCO_LANCAMENTO_REG
ACTIVE BEFORE INSERT POSITION 9
AS
DECLARE VARIABLE HISTORICO VARCHAR(500);
BEGIN

    HISTORICO = '';

    IF(NEW.CONTROLE > 0) THEN
    BEGIN
        HISTORICO = HISTORICO||'LANC.REG. ID:'||NEW.CONTROLE||', OP:'||NEW.OPERACAO_CODIGO||', DOC:'||NEW.DOCUMENTO_NUMERO||'/SERIE:'||NEW.SERIE||'-PARC:'||NEW.PARCELA||' INCLUÍDA.';
    END

    IF (HISTORICO <> '') THEN
    BEGIN
        EXECUTE PROCEDURE SPI_HISTORICO('TBCAIXABANCO_LANCAMENTO', NEW.CAIXABANCO_CONTROLE, HISTORICO);
    END
END;

CREATE TRIGGER TTBCAIXABANCO_LANC_REG_B04D FOR TBCAIXABANCO_LANCAMENTO_REG
ACTIVE BEFORE DELETE POSITION 9
AS
DECLARE VARIABLE HISTORICO VARCHAR(500);
BEGIN

    HISTORICO = '';

    IF(OLD.CONTROLE > 0) THEN
    BEGIN
        HISTORICO = HISTORICO||'LANC.REG. ID:'||OLD.CONTROLE||', OP:'||OLD.OPERACAO_CODIGO||', DOC:'||OLD.DOCUMENTO_NUMERO||'/SERIE:'||OLD.SERIE||'-PARC:'||OLD.PARCELA||' EXCLUIDA.';
    END

    IF (HISTORICO <> '') THEN
    BEGIN
        EXECUTE PROCEDURE SPI_HISTORICO('TBCAIXABANCO_LANCAMENTO', OLD.CAIXABANCO_CONTROLE, HISTORICO);
    END
END;

CREATE TRIGGER TTBCAIXABANCO_LANC_REG_B03U FOR TBCAIXABANCO_LANCAMENTO_REG
ACTIVE BEFORE UPDATE POSITION 9
AS
DECLARE VARIABLE HISTORICO VARCHAR(5000);
BEGIN

    HISTORICO = '';

    IF(OLD.ESTABELECIMENTO_CODIGO <> NEW.ESTABELECIMENTO_CODIGO) THEN
    BEGIN
        HISTORICO = HISTORICO||' ESTAB:'||OLD.ESTABELECIMENTO_CODIGO||'->'||NEW.ESTABELECIMENTO_CODIGO;
    END

    IF(OLD.CAIXABANCO_CONTROLE <> NEW.CAIXABANCO_CONTROLE) THEN
    BEGIN
        HISTORICO = HISTORICO||' LANC.ID:'||OLD.CAIXABANCO_CONTROLE||'->'||NEW.CAIXABANCO_CONTROLE;
    END

    IF(OLD.DATA <> NEW.DATA) THEN
    BEGIN
        HISTORICO = HISTORICO||' DT.VENC:'||OLD.DATA||'->'||NEW.DATA;
    END

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

    IF(OLD.OPERACAO_CODIGO <> NEW.OPERACAO_CODIGO) THEN
    BEGIN
        HISTORICO = HISTORICO||' OP:'||OLD.OPERACAO_CODIGO||'->'||NEW.OPERACAO_CODIGO;
    END

    IF(OLD.NFE_PARCELAMENTO_CONTROLE <> NEW.NFE_PARCELAMENTO_CONTROLE) THEN
    BEGIN
        HISTORICO = HISTORICO||' NFE.PARC.CTRL:'||OLD.NFE_PARCELAMENTO_CONTROLE||'->'||NEW.NFE_PARCELAMENTO_CONTROLE;
    END 

    IF(OLD.NFS_PARCELAMENTO_CONTROLE <> NEW.NFS_PARCELAMENTO_CONTROLE) THEN
    BEGIN
        HISTORICO = HISTORICO||' NFS.PARC.CTRL:'||OLD.NFS_PARCELAMENTO_CONTROLE||'->'||NEW.NFS_PARCELAMENTO_CONTROLE;
    END 

    IF(OLD.CAIXABANCO_CODIGO <> NEW.CAIXABANCO_CODIGO) THEN
    BEGIN
        HISTORICO = HISTORICO||' BCO:'||OLD.CAIXABANCO_CODIGO||'->'||NEW.CAIXABANCO_CODIGO;
    END 

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

    IF(OLD.CODORIGEM <> NEW.CODORIGEM) THEN
    BEGIN
        HISTORICO = HISTORICO||' COD.ORIGEM:'||OLD.CODORIGEM||'->'||NEW.CODORIGEM;
    END 

    IF(OLD.VALOR_TOTAL <> NEW.VALOR_TOTAL) THEN
    BEGIN
        HISTORICO = HISTORICO||' VLR:'||OLD.VALOR_TOTAL||'->'||NEW.VALOR_TOTAL;
    END 

    IF(OLD.DOCUMENTO_NUMERO <> NEW.DOCUMENTO_NUMERO) THEN
    BEGIN
        HISTORICO = HISTORICO||' DOC:'||OLD.DOCUMENTO_NUMERO||'->'||NEW.DOCUMENTO_NUMERO;
    END 

    IF(OLD.PARCELA <> NEW.PARCELA) THEN
    BEGIN
        HISTORICO = HISTORICO||' PARC:'||OLD.PARCELA||'->'||NEW.PARCELA;
    END 

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

    IF(OLD.CONTA_DEBITO <> NEW.CONTA_DEBITO) THEN
    BEGIN
        HISTORICO = HISTORICO||' C.DEBITO:'||OLD.CONTA_DEBITO||'->'||NEW.CONTA_DEBITO;
    END 

    IF(OLD.CONTA_CREDITO <> NEW.CONTA_CREDITO) THEN
    BEGIN
        HISTORICO = HISTORICO||' C.CREDITO:'||OLD.CONTA_CREDITO||'->'||NEW.CONTA_CREDITO;
    END 

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

    IF(OLD.NFE_CONTROLE <> NEW.NFE_CONTROLE) THEN
    BEGIN
        HISTORICO = HISTORICO||' NFE.CTRL:'||OLD.NFE_CONTROLE||'->'||NEW.NFE_CONTROLE;
    END

    IF(OLD.NFS_CONTROLE <> NEW.NFS_CONTROLE) THEN
    BEGIN
        HISTORICO = HISTORICO||' NFS.CTRL:'||OLD.NFS_CONTROLE||'->'||NEW.NFS_CONTROLE;
    END

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

    IF(OLD.MOVCONTABIL_ID <> NEW.MOVCONTABIL_ID) THEN
    BEGIN
        HISTORICO = HISTORICO||' MOV.CONT.ID:'||OLD.MOVCONTABIL_ID||'->'||NEW.MOVCONTABIL_ID;
    END

    IF(OLD.ARQUIVO <> NEW.ARQUIVO) THEN
    BEGIN
        HISTORICO = HISTORICO||' ARQ:'||OLD.ARQUIVO||'->'||NEW.ARQUIVO;
    END

    IF (HISTORICO <> '') THEN
    BEGIN
        HISTORICO = 'LANC.REG. ID:'||OLD.CONTROLE||', OP:'||OLD.OPERACAO_CODIGO||', DOC:'||OLD.DOCUMENTO_NUMERO||'/SERIE:'||OLD.SERIE||'-PARC:'||OLD.PARCELA||' ALTERADA. '||HISTORICO;
        EXECUTE PROCEDURE SPI_HISTORICO('TBCAIXABANCO_LANCAMENTO', OLD.CAIXABANCO_CONTROLE, FN_ELIPSES(HISTORICO,500));
    END
END;

CREATE OR ALTER TRIGGER TTBCAIXABANCO_LANCAMENTO_B03I FOR TBCAIXABANCO_LANCAMENTO
ACTIVE BEFORE INSERT POSITION 9
AS
DECLARE VARIABLE HISTORICO VARCHAR(500);
BEGIN

    HISTORICO = '';

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

    IF (HISTORICO <> '') THEN
    BEGIN
        EXECUTE PROCEDURE SPI_HISTORICO('TBCAIXABANCO_LANCAMENTO', NEW.CONTROLE, HISTORICO);
    END
END;

CREATE OR ALTER TRIGGER TTBCAIXABANCO_LANCAMENTO_B03D FOR TBCAIXABANCO_LANCAMENTO
ACTIVE BEFORE DELETE POSITION 9
AS
DECLARE VARIABLE HISTORICO VARCHAR(500);
BEGIN

    HISTORICO = '';

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

    IF (HISTORICO <> '') THEN
    BEGIN
        EXECUTE PROCEDURE SPI_HISTORICO('TBCAIXABANCO_LANCAMENTO', OLD.CONTROLE, HISTORICO);
    END
END;

CREATE OR ALTER TRIGGER TTBCAIXABANCO_LANCAMENTO_B03U FOR TBCAIXABANCO_LANCAMENTO
ACTIVE BEFORE UPDATE POSITION 9
AS
declare variable HISTORICO VARCHAR(8000);
begin
    HISTORICO = '';

    IF(NEW.ESTABELECIMENTO_CODIGO <> OLD.ESTABELECIMENTO_CODIGO) THEN
    BEGIN
       HISTORICO = HISTORICO||' ESTAB:'||OLD.ESTABELECIMENTO_CODIGO||'->'||NEW.ESTABELECIMENTO_CODIGO;
    END 

    IF(NEW.CAIXABANCO_CODIGO <> OLD.CAIXABANCO_CODIGO) THEN
    BEGIN
        HISTORICO = HISTORICO||' BCO:'||OLD.CAIXABANCO_CODIGO||'->'||NEW.CAIXABANCO_CODIGO;
    END

    IF(NEW.DATA_LANCAMENTO <> OLD.DATA_LANCAMENTO) THEN
    BEGIN
       HISTORICO = HISTORICO||' DT.LANC:'||OLD.DATA_LANCAMENTO||'->'||NEW.DATA_LANCAMENTO;
    END

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

    IF(NEW.OPERACAO_CODIGO <> OLD.OPERACAO_CODIGO) THEN
    BEGIN
        HISTORICO = HISTORICO||' OPE:'||OLD.OPERACAO_CODIGO||'->'||NEW.OPERACAO_CODIGO;
    END

    IF(NEW.NUMERO_CHEQUE <> OLD.NUMERO_CHEQUE) THEN
    BEGIN
        HISTORICO = HISTORICO||' DOC:'||OLD.NUMERO_CHEQUE||'->'||NEW.NUMERO_CHEQUE;
    END

    IF(NEW.VALOR_TOTAL <> OLD.VALOR_TOTAL) THEN
    BEGIN
        HISTORICO = HISTORICO||' VLR.TOTAL:'||OLD.VALOR_TOTAL||'->'||NEW.VALOR_TOTAL;
    END

    IF(NEW.HISTORICO <> OLD.HISTORICO) THEN
    BEGIN
        HISTORICO = HISTORICO||' HIST.CONTAB:'||OLD.HISTORICO||'->'||NEW.HISTORICO;
    END

    IF(NEW.OBSERVACAO <> OLD.OBSERVACAO) THEN
    BEGIN
        HISTORICO = HISTORICO||' OBS:'||FN_ELIPSES(OLD.OBSERVACAO,100)||'->'||FN_ELIPSES(NEW.OBSERVACAO,100);
    END

    IF(NEW.DATA <> OLD.DATA) THEN
    BEGIN
        HISTORICO = HISTORICO||' DT:'||OLD.DATA||'->'||NEW.DATA;
    END

    IF(NEW.CONTA_CONTABIL <> OLD.CONTA_CONTABIL) THEN
    BEGIN
        HISTORICO = HISTORICO||' CCONTABIL:'||OLD.CONTA_CONTABIL||'->'||NEW.CONTA_CONTABIL;
    END

    IF(NEW.NATUREZA <> OLD.NATUREZA) THEN
    BEGIN
        HISTORICO = HISTORICO||' NAT:'||OLD.NATUREZA||'->'||NEW.NATUREZA;
    END

    IF(NEW.ARQUIVO <> OLD.ARQUIVO) THEN
    BEGIN
        HISTORICO = HISTORICO||' ARQ:'||OLD.ARQUIVO||'->'||NEW.ARQUIVO;
    END

    IF(NEW.TRANSFERENCIA <> OLD.TRANSFERENCIA) THEN
    BEGIN
        HISTORICO = HISTORICO||' TRANSF:'||OLD.TRANSFERENCIA||'->'||NEW.TRANSFERENCIA;
    END

    IF(NEW.NFS_ID <> OLD.NFS_ID) THEN
    BEGIN
        HISTORICO = HISTORICO||' NFS:'||OLD.NFS_ID||'->'||NEW.NFS_ID;
    END

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

    IF(NEW.MOVCONTABIL_ID <> OLD.MOVCONTABIL_ID) THEN
    BEGIN
        HISTORICO = HISTORICO||' MOV.CONTAB.ID:'||OLD.MOVCONTABIL_ID||'->'||NEW.MOVCONTABIL_ID;
    END

    IF(NEW.MOVCONTMESTRE_ID <> OLD.MOVCONTMESTRE_ID) THEN
    BEGIN
        HISTORICO = HISTORICO||' MOV.MESTRE ID:'||OLD.MOVCONTMESTRE_ID||'->'||NEW.MOVCONTMESTRE_ID;
    END

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

    IF(HISTORICO <> '') THEN
    BEGIN
       HISTORICO = 'LANC.ID: '||NEW.CONTROLE||' ALTERADO. '||HISTORICO;
       EXECUTE PROCEDURE SPI_HISTORICO('TBCAIXABANCO_LANCAMENTO', NEW.CONTROLE, FN_ELIPSES(HISTORICO,500));
    END
END;





