ALTER TABLE TBETIQUETA_COMPOSICAO
    ADD ESTABELECIMENTO_ID INTEGER;

/*****************************************************************************************/
/*****************************************************************************************/

SET TERM ^ ;

CREATE OR ALTER trigger ttbetiqueta_composicao_b01u for tbetiqueta_composicao
active before update position 9
AS
DECLARE VARIABLE HISTORICO VARCHAR(5000);
DECLARE VARIABLE OLD_ESTABELECIMENTO VARCHAR(500);
DECLARE VARIABLE NEW_ESTABELECIMENTO VARCHAR(500);
BEGIN

    :HISTORICO = '';

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

    IF (OLD.ESTABELECIMENTO_ID IS DISTINCT FROM NEW.ESTABELECIMENTO_ID) THEN
    BEGIN
        OLD_ESTABELECIMENTO = COALESCE((SELECT FIRST 1 FN_LPAD(A.CODIGO, 4, '0')||' - '||A.NOMEFANTASIA FROM TBESTABELECIMENTO A WHERE A.CODIGO = OLD.ESTABELECIMENTO_ID), '');
        NEW_ESTABELECIMENTO = COALESCE((SELECT FIRST 1 FN_LPAD(A.CODIGO, 4, '0')||' - '||A.NOMEFANTASIA FROM TBESTABELECIMENTO A WHERE A.CODIGO = NEW.ESTABELECIMENTO_ID), '');

        :HISTORICO = :HISTORICO||' DESC:'||:OLD_ESTABELECIMENTO||'->'||:NEW_ESTABELECIMENTO;
    END

    IF (OLD.LAVAGEM IS DISTINCT FROM NEW.LAVAGEM) THEN
    BEGIN
        :HISTORICO = :HISTORICO||' SIMBOLO DE LAVAGEM ALTERADO!';
    END

    IF (OLD.ALVEJAMENTO IS DISTINCT FROM NEW.ALVEJAMENTO) THEN
    BEGIN
        :HISTORICO = :HISTORICO||' SIMBOLO DE ALVEJAMENTO ALTERADO!';
    END

    IF (OLD.SECAGEM IS DISTINCT FROM NEW.SECAGEM) THEN
    BEGIN
        :HISTORICO = :HISTORICO||' SIMBOLO DE SECAGEM ALTERADO!';
    END

    IF (OLD.PASSADORIA IS DISTINCT FROM NEW.PASSADORIA) THEN
    BEGIN
        :HISTORICO = :HISTORICO||' SIMBOLO DE PASSADORIA ALTERADO!';
    END

    IF (OLD.LIMPEZA_PROFISSIONAL IS DISTINCT FROM NEW.LIMPEZA_PROFISSIONAL) THEN
    BEGIN
        :HISTORICO = :HISTORICO||' SIMBOLO DE LIMPEZA PROFISSIONAL ALTERADO!';
    END

    IF (:HISTORICO <> '') THEN
    BEGIN
        :HISTORICO = ' REGISTRO ALTERADO:'||:HISTORICO;
        EXECUTE PROCEDURE SPI_HISTORICO('TBETIQUETA_COMPOSICAO', OLD.ID, FN_ELIPSE(:HISTORICO, 500));
    END
END
^

SET TERM ; ^

