SET TERM ^ ;

CREATE OR ALTER trigger tboperacao_vinculo_cont_b01u for tboperacao_vinculo_contabil
active before update position 0
AS
DECLARE VARIABLE HISTORICO VARCHAR(500);
declare variable TIPO_HISTORICO INTEGER;
BEGIN

    HISTORICO = '';

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

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

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

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

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

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

    IF (OLD.valor_pis <> NEW.valor_pis) THEN
    BEGIN
        HISTORICO = HISTORICO||' TOTAL PIS'||OLD.valor_pis||'->'||NEW.valor_pis;
    END

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

    IF (OLD.valor_icms_st <> NEW.valor_icms_st) THEN
    BEGIN
        HISTORICO = HISTORICO||' TOTAL ICMS ST:'||OLD.valor_icms_st||'->'||NEW.valor_icms_st;
    END

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

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

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

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

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

    IF (OLD.VALOR_II <> NEW.VALOR_II) THEN
    BEGIN
        HISTORICO = HISTORICO||' TOTAL DO IMP:'||OLD.VALOR_II||'->'||NEW.VALOR_II;
    END

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

    IF (OLD.RETENCAO_PIS IS DISTINCT FROM NEW.RETENCAO_PIS) THEN
    BEGIN
        HISTORICO = HISTORICO||' RET.PIS:'||FN_IS_EMPTY(OLD.RETENCAO_PIS)||'->'||FN_IS_EMPTY(NEW.RETENCAO_PIS);
    END

    IF (OLD.RETENCAO_COFINS IS DISTINCT FROM NEW.RETENCAO_COFINS) THEN
    BEGIN
        HISTORICO = HISTORICO||' RET.COFINS:'||FN_IS_EMPTY(OLD.RETENCAO_COFINS)||'->'||FN_IS_EMPTY(NEW.RETENCAO_COFINS);
    END

    IF (OLD.RETENCAO_CSLL IS DISTINCT FROM NEW.RETENCAO_CSLL) THEN
    BEGIN
        HISTORICO = HISTORICO||' RET.CSLL:'||FN_IS_EMPTY(OLD.RETENCAO_CSLL)||'->'||FN_IS_EMPTY(NEW.RETENCAO_CSLL);
    END

    IF (OLD.RETENCAO_INSS IS DISTINCT FROM NEW.RETENCAO_INSS) THEN
    BEGIN
        HISTORICO = HISTORICO||' RET.INSS:'||FN_IS_EMPTY(OLD.RETENCAO_INSS)||'->'||FN_IS_EMPTY(NEW.RETENCAO_INSS);
    END

    IF (OLD.RETENCAO_IRRF IS DISTINCT FROM NEW.RETENCAO_IRRF) THEN
    BEGIN
        HISTORICO = HISTORICO||' RET.IRRF:'||FN_IS_EMPTY(OLD.RETENCAO_IRRF)||'->'||FN_IS_EMPTY(NEW.RETENCAO_IRRF);
    END

    IF (OLD.RETENCAO_ISSQN IS DISTINCT FROM NEW.RETENCAO_ISSQN) THEN
    BEGIN
        HISTORICO = HISTORICO||' RET.ISSQN:'||FN_IS_EMPTY(OLD.RETENCAO_ISSQN)||'->'||FN_IS_EMPTY(NEW.RETENCAO_ISSQN);
    END

    IF (OLD.tipo_credito <> NEW.tipo_credito) THEN
    BEGIN
        HISTORICO = HISTORICO||' TP.CRED:'||IIF(OLD.tipo_credito = 'A', 'ATIVO', 'PASSIVO')||'->'||IIF(NEW.tipo_credito = 'A', 'ATIVO', 'PASSIVO');
    END

    IF (OLD.tipo_debito <> NEW.tipo_debito) THEN
    BEGIN
        HISTORICO = HISTORICO||' TP.DEB:'||IIF(OLD.tipo_debito = 'A', 'ATIVO', 'PASSIVO')||'->'||IIF(NEW.tipo_debito = 'A', 'ATIVO', 'PASSIVO');
    END
    
   SELECT T.ID FROM TBOPERACAO T WHERE T.codigo = NEW.operacao_codigo INTO TIPO_HISTORICO;

    IF (HISTORICO <> '') THEN
    HISTORICO = 'INT.CONT.ALTERADA:'||HISTORICO;
    BEGIN
        EXECUTE PROCEDURE SPI_HISTORICO('TBOPERACAO', :TIPO_HISTORICO, HISTORICO);
    END
END^

SET TERM ; ^

SET TERM ^ ;

CREATE OR ALTER trigger tboperacao_vinculo_cont_b02i for tboperacao_vinculo_contabil
active before insert position 1
AS
DECLARE VARIABLE HISTORICO VARCHAR(500);
declare variable TIPO_HISTORICO INTEGER;

BEGIN
    HISTORICO = '';
    IF ( NEW.id > 0) THEN
    BEGIN
        HISTORICO = ' INT.CONT.INCLUIDA:'||NEW.ID||' -> CONTA DEBITO: '||NEW.CONTA_DEBITO||' - CONTA CREDITO: '||NEW.CONTA_CREDITO;
    END

   SELECT T.ID FROM TBOPERACAO T WHERE T.codigo = NEW.operacao_codigo INTO TIPO_HISTORICO;

    IF (HISTORICO <> '') THEN
    BEGIN
        EXECUTE PROCEDURE SPI_HISTORICO('TBOPERACAO', :TIPO_HISTORICO, HISTORICO);
    END
 END
^

SET TERM ; ^

SET TERM ^ ;

CREATE OR ALTER trigger tboperacao_vinculo_cont_b01d for tboperacao_vinculo_contabil
active before delete position 0
AS
DECLARE VARIABLE HISTORICO VARCHAR(500);
declare variable TIPO_HISTORICO INTEGER;

BEGIN
    HISTORICO = '';
    IF ( OLD.id > 0) THEN
    BEGIN
        HISTORICO = ' INT.CONT.EXCLUIDA:'||OLD.ID||' -> CONTA DEBITO: '||OLD.CONTA_DEBITO||' - CONTA CREDITO: '||OLD.CONTA_CREDITO;
    END

   SELECT T.ID FROM TBOPERACAO T WHERE T.codigo = OLD.operacao_codigo INTO TIPO_HISTORICO;

    IF (HISTORICO <> '') THEN
    BEGIN
        EXECUTE PROCEDURE SPI_HISTORICO('TBOPERACAO', :TIPO_HISTORICO, HISTORICO);
    END
 END
^

SET TERM ; ^

