SET TERM ^ ;

ALTER TABLE TBDRE_FINANCEIRA ADD REGIME_DATA INTEGER^

ALTER TABLE TBDRE_FINANCEIRA_GRUPOS ADD DRE_GRUPO_REFERENCIAL_ID INTEGER^

CREATE OR ALTER TRIGGER TBDRE_FINANCEIRA_B01U FOR TBDRE_FINANCEIRA
ACTIVE BEFORE UPDATE POSITION 0
AS
DECLARE VARIABLE HISTORICO VARCHAR(500);
BEGIN

    HISTORICO = '';

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

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

    IF (COALESCE(OLD.REGIME_DATA,0) <> COALESCE(NEW.REGIME_DATA,0)) THEN
    BEGIN
        HISTORICO = HISTORICO||' ORIGEM:'|| COALESCE(OLD.REGIME_DATA,0)||'->'||COALESCE(NEW.REGIME_DATA,0);
    END

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

END^ 

CREATE OR ALTER TRIGGER TTBDRE_FINANCEIRA_GRUPOS_B01U FOR TBDRE_FINANCEIRA_GRUPOS
ACTIVE BEFORE UPDATE POSITION 0
AS
DECLARE VARIABLE HISTORICO VARCHAR(500);
BEGIN
    
    HISTORICO = '';

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

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

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

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

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

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

    IF(COALESCE(OLD.INDICE_PERCENTUAL_GRUPOS,'0') <> COALESCE(NEW.INDICE_PERCENTUAL_GRUPOS,'0'))THEN
    BEGIN
       HISTORICO = HISTORICO||' IND.PERC:'||COALESCE(OLD.INDICE_PERCENTUAL_GRUPOS,'0')||'->'||COALESCE(NEW.INDICE_PERCENTUAL_GRUPOS,'0');
    END

    IF(COALESCE(OLD.DRE_GRUPO_REFERENCIAL_ID,'0') <> COALESCE(NEW.DRE_GRUPO_REFERENCIAL_ID,'0'))THEN
    BEGIN
       HISTORICO = HISTORICO||' DIV(%):'||COALESCE(OLD.DRE_GRUPO_REFERENCIAL_ID,'0')||'->'||COALESCE(NEW.DRE_GRUPO_REFERENCIAL_ID,'0');
    END

    IF (HISTORICO <> '') THEN
    BEGIN

        HISTORICO = 'GRUPO: '||FN_LPAD(OLD.ID,4,0)||' - '||COALESCE(OLD.DESCRICAO, '')||' ALTERADO: '||HISTORICO;

        EXECUTE PROCEDURE SPI_HISTORICO('TBDRE_FINANCEIRA',NEW.DRE_FINANCEIRA_ID, HISTORICO);
    END
END^

SET TERM ; ^