-- Correção de Histórico (16080 - Cadastro de Máquinas/Equipamentos) ---------------------------------------------------------
-- TBPATRIMONIO_CCUSTO

SET TERM ^ ;

CREATE OR ALTER trigger ttbpatrimonio_ccusto_b02i for tbpatrimonio_ccusto
active before insert position 1
AS
DECLARE VARIABLE HISTORICO VARCHAR(1000);
BEGIN

    HISTORICO = '';

    IF(NEW.ID > 0) THEN
    BEGIN
        HISTORICO = HISTORICO||'ALOCACAO '||FN_LPAD(NEW.ID, 5, '0')||' INCLUIDA';
    END
    
    IF(HISTORICO <> '') THEN
    BEGIN
        EXECUTE PROCEDURE SPI_HISTORICO('TBPATRIMONIO', NEW.PATRIMONIO_ID, FN_ELIPSES(HISTORICO, 500));
    END
END
^

SET TERM ; ^

SET TERM ^ ;

CREATE OR ALTER trigger ttbpatrimonio_ccusto_b01u for tbpatrimonio_ccusto
active before update position 0
AS
DECLARE VARIABLE HISTORICO VARCHAR(2000);
BEGIN

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

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

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

    IF (OLD.OBSERVACAO <> NEW.OBSERVACAO) THEN
    BEGIN
        HISTORICO = HISTORICO||' OBSERVACAO ALTERADA';
    END

    IF (HISTORICO <> '') THEN
    BEGIN
        HISTORICO = 'ALOCACAO '||FN_LPAD(NEW.ID, 5, '0')||' ALTERADA:'||HISTORICO;
        EXECUTE PROCEDURE SPI_HISTORICO('TBPATRIMONIO', OLD.PATRIMONIO_ID, FN_ELIPSES(HISTORICO, 500));
    END
END
^

SET TERM ; ^

SET TERM ^ ;

CREATE OR ALTER trigger ttbpatrimonio_ccusto_b01d for tbpatrimonio_ccusto
active before delete position 0
AS
DECLARE VARIABLE HISTORICO VARCHAR(1000);
BEGIN

    HISTORICO = '';

    IF(OLD.ID > 0) THEN
    BEGIN
        HISTORICO = HISTORICO||'ALOCACAO '||FN_LPAD(OLD.ID, 5, '0')||' EXCLUIDA';
    END
    
    IF(HISTORICO <> '') THEN
    BEGIN
        EXECUTE PROCEDURE SPI_HISTORICO('TBPATRIMONIO', OLD.PATRIMONIO_ID, FN_ELIPSES(HISTORICO, 500));
    END
END
^

SET TERM ; ^

---------------------------------------------------------------------------------------------------------------------------------
-- TBPATRIMONIO_COMPONENTES

SET TERM ^ ;

CREATE OR ALTER trigger ttbpatrimonio_componentes_b03i for tbpatrimonio_componentes
active before insert position 2
AS
DECLARE VARIABLE HISTORICO VARCHAR(1000);
BEGIN

    HISTORICO = '';

    IF(NEW.ID > 0) THEN
    BEGIN
        HISTORICO = HISTORICO||'COMPONENTE '||FN_LPAD(NEW.ID, 5, '0')||' - '||NEW.DESCRICAO||' INCLUIDO';
    END
    
    IF(HISTORICO <> '') THEN
    BEGIN
        EXECUTE PROCEDURE SPI_HISTORICO('TBPATRIMONIO', NEW.PATRIMONIO_ID, FN_ELIPSES(HISTORICO, 500));
    END
END
^

SET TERM ; ^

SET TERM ^ ;

CREATE OR ALTER trigger ttbpatrimonio_componentes_b03u for tbpatrimonio_componentes
active before update position 2
AS
DECLARE VARIABLE HISTORICO VARCHAR(3000);
BEGIN

    HISTORICO = '';

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

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

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

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

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

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

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

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

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

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

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

    IF (OLD.MODELO_ID <> NEW.MODELO_ID) THEN
    BEGIN
        HISTORICO = HISTORICO||' MODELO:'||OLD.MODELO_ID||'->'||NEW.MODELO_ID;
    END
    
    IF (OLD.TIPO_ID <> NEW.TIPO_ID) THEN
    BEGIN
        HISTORICO = HISTORICO||' TIPO:'||OLD.TIPO_ID||'->'||NEW.TIPO_ID;
    END
    
    IF (OLD.SUBTIPO_ID <> NEW.SUBTIPO_ID) THEN
    BEGIN
        HISTORICO = HISTORICO||' SUBTIPO:'||OLD.SUBTIPO_ID||'->'||NEW.SUBTIPO_ID;
    END
    
    IF (OLD.FABRICANTE_ID <> NEW.FABRICANTE_ID) THEN
    BEGIN
        HISTORICO = HISTORICO||' FABRIC:'||OLD.FABRICANTE_ID||'->'||NEW.FABRICANTE_ID;
    END

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

    IF (OLD.OBSERVACOES <> NEW.OBSERVACOES) THEN
    BEGIN
        HISTORICO = HISTORICO||' OBSRVACOES ALTERADA';
    END

    IF (OLD.DATA <> NEW.DATA) THEN
    BEGIN
        HISTORICO = HISTORICO||' DATA:'||FN_DATE_TO_STRING(OLD.DATA)||'->'||FN_DATE_TO_STRING(NEW.DATA);
    END
    
    IF (HISTORICO <> '') THEN
    BEGIN
        HISTORICO = 'COMPONENTE '||FN_LPAD(NEW.ID, 5, '0')||' - '||NEW.DESCRICAO||' ALTERADO:'||HISTORICO;
        EXECUTE PROCEDURE SPI_HISTORICO('TBPATRIMONIO', OLD.PATRIMONIO_ID, FN_ELIPSES(HISTORICO, 500));
    END
END
^

SET TERM ; ^

SET TERM ^ ;

CREATE OR ALTER trigger ttbpatrimonio_componentes_b02d for tbpatrimonio_componentes
active before delete position 1
AS
DECLARE VARIABLE HISTORICO VARCHAR(1000);
BEGIN

    HISTORICO = '';

    IF(OLD.ID > 0) THEN
    BEGIN
        HISTORICO = HISTORICO||'COMPONENTE '||FN_LPAD(OLD.ID, 5, '0')||' - '||OLD.DESCRICAO||' EXCLUIDO';
    END
    
    IF(HISTORICO <> '') THEN
    BEGIN
        EXECUTE PROCEDURE SPI_HISTORICO('TBPATRIMONIO', OLD.PATRIMONIO_ID, FN_ELIPSES(HISTORICO, 500));
    END
END
^

SET TERM ; ^

---------------------------------------------------------------------------------------------------------------------------------
-- TBPATRIMONIO_CONFIGURACAO

SET TERM ^ ;

CREATE OR ALTER trigger ttbpatrimonio_configuracao_b02i for tbpatrimonio_configuracao
active before insert position 1
AS
DECLARE VARIABLE HISTORICO VARCHAR(1000);
DECLARE VARIABLE COMPONENTE VARCHAR(500);
BEGIN

    HISTORICO = '';
    COMPONENTE = COALESCE((SELECT FN_LPAD(A.ID, 5, '0')||' - '||COALESCE(A.DESCRICAO, '') FROM TBPATRIMONIO_COMPONENTES A WHERE A.PATRIMONIO_ID = NEW.PATRIMONIO_ID AND A.ID = NEW.PARAMETRO_ID), '');

    IF(NEW.ID > 0 AND NEW.COMPONENTE_ID IS NULL) THEN
    BEGIN
        HISTORICO = HISTORICO||'CONFIGURACAO '||FN_LPAD(NEW.ID, 4, '0')||' - '||NEW.DESCRICAO||' INCLUIDA';
    END

    IF(NEW.ID > 0 AND NEW.COMPONENTE_ID > 0) THEN
    BEGIN
        HISTORICO = HISTORICO||'CONFIGURACAO '||FN_LPAD(NEW.ID, 4, '0')||' - '||NEW.DESCRICAO||' INCLUIDA NO COMPONENTE '||COMPONENTE;
    END
    
    IF(HISTORICO <> '') THEN
    BEGIN
        EXECUTE PROCEDURE SPI_HISTORICO('TBPATRIMONIO', NEW.PATRIMONIO_ID, FN_ELIPSES(HISTORICO, 500));
    END
END
^

SET TERM ; ^

SET TERM ^ ;

CREATE OR ALTER trigger ttbpatrimonio_configuracao_b01u for tbpatrimonio_configuracao
active before update position 0
AS
DECLARE VARIABLE HISTORICO VARCHAR(3000); 
DECLARE VARIABLE COMPONENTE VARCHAR(500);
BEGIN

    HISTORICO = '';
    COMPONENTE = COALESCE((SELECT FN_LPAD(A.ID, 5, '0')||' - '||COALESCE(A.DESCRICAO, '') FROM TBPATRIMONIO_COMPONENTES A WHERE A.PATRIMONIO_ID = NEW.PATRIMONIO_ID AND A.ID = NEW.PARAMETRO_ID), '');
    
    IF (OLD.PARAMETRO_ID <> NEW.PARAMETRO_ID) THEN
    BEGIN
        HISTORICO = HISTORICO||' PARAM:'||OLD.PARAMETRO_ID||'->'||NEW.PARAMETRO_ID;
    END

    IF (OLD.DESCRICAO <> NEW.DESCRICAO) THEN
    BEGIN
        HISTORICO = HISTORICO||' DESC:'||OLD.DESCRICAO||'->'||NEW.DESCRICAO;
    END
    
    IF (HISTORICO <> '') THEN
    BEGIN
        IF (OLD.COMPONENTE_ID IS NULL) THEN
        BEGIN
            HISTORICO = 'CONFIGURACAO '||FN_LPAD(NEW.ID, 4, '0')||' - '||NEW.DESCRICAO||' ALTERADA:'||HISTORICO;
        END

        IF (OLD.COMPONENTE_ID > 0) THEN
        BEGIN
            HISTORICO = 'CONFIGURACAO '||FN_LPAD(NEW.ID, 4, '0')||' - '||NEW.DESCRICAO||' DO COMPONENTE '||COMPONENTE||' ALTERADA:'||HISTORICO;
        END

        EXECUTE PROCEDURE SPI_HISTORICO('TBPATRIMONIO', OLD.PATRIMONIO_ID, FN_ELIPSES(HISTORICO, 500));
    END
END
^

SET TERM ; ^

SET TERM ^ ;

CREATE OR ALTER trigger ttbpatrimonio_configuracao_b01d for tbpatrimonio_configuracao
active before delete position 0
AS
DECLARE VARIABLE HISTORICO VARCHAR(1000);
DECLARE VARIABLE COMPONENTE VARCHAR(500);
BEGIN

    HISTORICO = '';
    COMPONENTE = COALESCE((SELECT FN_LPAD(A.ID, 5, '0')||' - '||COALESCE(A.DESCRICAO, '') FROM TBPATRIMONIO_COMPONENTES A WHERE A.PATRIMONIO_ID = OLD.PATRIMONIO_ID AND A.ID = OLD.PARAMETRO_ID), '');

    IF(OLD.ID > 0 AND OLD.COMPONENTE_ID IS NULL) THEN
    BEGIN
        HISTORICO = HISTORICO||'CONFIGURACAO '||FN_LPAD(OLD.ID, 4, '0')||' - '||OLD.DESCRICAO||' EXCLUIDA';
    END

    IF(OLD.ID > 0 AND OLD.COMPONENTE_ID > 0) THEN
    BEGIN
        HISTORICO = HISTORICO||'CONFIGURACAO '||FN_LPAD(OLD.ID, 4, '0')||' - '||OLD.DESCRICAO||' EXCLUIDA NO COMPONENTE '||COMPONENTE;
    END
    
    IF(HISTORICO <> '') THEN
    BEGIN
        EXECUTE PROCEDURE SPI_HISTORICO('TBPATRIMONIO', OLD.PATRIMONIO_ID, HISTORICO);
    END
END
^

SET TERM ; ^