CREATE OR ALTER trigger ttbestoque_baixa_aut_b01u for tbestoque_baixa_automatica
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 ( OLD.PRODUTO_ID <> NEW.PRODUTO_ID) THEN
    BEGIN
        HISTORICO = HISTORICO||' PRODUTO:'|| OLD.PRODUTO_ID||'->'||NEW.PRODUTO_ID;
    END

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

    IF ( OLD.LOCALIZACAO_SAIDA IS DISTINCT FROM NEW.LOCALIZACAO_SAIDA) THEN
    BEGIN
        HISTORICO = HISTORICO||' LOC:'|| COALESCE(OLD.LOCALIZACAO_SAIDA, '')||'->'||COALESCE(NEW.LOCALIZACAO_SAIDA, '');
    END

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

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

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

    IF (HISTORICO <> '') THEN
    BEGIN
        HISTORICO = ' REGISTRO ALTERADO:'||HISTORICO;
        EXECUTE PROCEDURE SPI_HISTORICO('TBESTOQUE_BAIXA_AUTOMATICA',NEW.ID, HISTORICO);
    END
end;

