CREATE OR ALTER TRIGGER TTBREMESSA_CONSUMO_B9U FOR TBREMESSA_CONSUMO
ACTIVE BEFORE UPDATE POSITION 9
AS
DECLARE VARIABLE HISTORICO VARCHAR(2000);
DECLARE VARIABLE HISTORICO_ENCERRAMENTO VARCHAR(2000);
DECLARE VARIABLE HISTORICO_BAIXA VARCHAR(2000);
BEGIN

    HISTORICO = '';
    HISTORICO_BAIXA = '';
    HISTORICO_ENCERRAMENTO = '';

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


    IF (OLD.CONSUMO_KG <> NEW.CONSUMO_KG) THEN
    BEGIN
        --exception "..." 'Consumo bloqueado...';
        HISTORICO = HISTORICO||' QTD.CONS.: '||OLD.CONSUMO_KG||'->'||NEW.CONSUMO_KG;
    END

    IF (OLD.CONSUMO_ML <> NEW.CONSUMO_ML) THEN
    BEGIN
        HISTORICO = HISTORICO||' QTD.CONS.ALT.: '||OLD.CONSUMO_ML||'->'||NEW.CONSUMO_ML;
    END      

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

    IF (OLD.QUANTIDADE_NECES_ALTERN <> NEW.QUANTIDADE_NECES_ALTERN) THEN
    BEGIN
        HISTORICO = HISTORICO||' QTD.NEC.ALT.: '||OLD.QUANTIDADE_NECES_ALTERN||'->'||NEW.QUANTIDADE_NECES_ALTERN;
    END       

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

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

    IF(OLD.QUANTIDADE_ENCERRADA IS DISTINCT FROM NEW.QUANTIDADE_ENCERRADA) THEN
    BEGIN
        IF(COALESCE(NEW.QUANTIDADE_ENCERRADA,0) > COALESCE(OLD.QUANTIDADE_ENCERRADA,0))THEN
        BEGIN
           HISTORICO_ENCERRAMENTO = 'QTD.ENCERRADA: '||(COALESCE(NEW.QUANTIDADE_ENCERRADA,0) - COALESCE(OLD.QUANTIDADE_ENCERRADA,0));
        END
        ELSE
        BEGIN
           HISTORICO_ENCERRAMENTO = 'ENCERRAMENTO DESFEITO: '||(COALESCE(OLD.QUANTIDADE_ENCERRADA,0) - COALESCE(NEW.QUANTIDADE_ENCERRADA,0));
        END
    END

    IF(OLD.QUANTIDADE_CONFERENCIA IS DISTINCT FROM NEW.QUANTIDADE_CONFERENCIA) THEN
    BEGIN
        IF(COALESCE(NEW.QUANTIDADE_CONFERENCIA,0) > COALESCE(OLD.QUANTIDADE_CONFERENCIA,0))THEN
        BEGIN
           HISTORICO_BAIXA = 'QTD.BAIXADA: '||(COALESCE(NEW.QUANTIDADE_CONFERENCIA,0) - COALESCE(OLD.QUANTIDADE_CONFERENCIA,0));
        END
        ELSE
        BEGIN
           HISTORICO_BAIXA = 'BAIXA DESFEITA: '||(COALESCE(OLD.QUANTIDADE_CONFERENCIA,0) - COALESCE(NEW.QUANTIDADE_CONFERENCIA,0));
        END
    END

    IF (HISTORICO <> '') THEN
    BEGIN

       HISTORICO = 'TL:' ||FN_LPAD(NEW.TALAO, 4, 0)|| ' - CONS.:' || NEW.ID || ' | PROD:'||coalesce((SELECT FIRST 1 FN_LPAD(B.CODIGO,6,0)||' - '||B.DESCRICAO||IIF(B.GRADE_CODIGO > 0,' TAM.'||FN_TAMANHO_PRODUTO(B.CODIGO, NEW.TAMANHO),'') FROM TBPRODUTO B WHERE B.CODIGO = NEW.PRODUTO_ID),'')||' '|| HISTORICO;

       EXECUTE PROCEDURE SPI_HISTORICO('TBREMESSA',NEW.REMESSA,FN_ELIPSES(:HISTORICO,500));
    END  

    IF (HISTORICO_BAIXA <> '') THEN
    BEGIN

       HISTORICO_BAIXA = 'TL:' ||FN_LPAD(NEW.TALAO, 4, 0)|| ' - CONS.:' || NEW.ID || ' | PROD:'||coalesce((SELECT FIRST 1 FN_LPAD(B.CODIGO,6,0)||' - '||B.DESCRICAO||IIF(B.GRADE_CODIGO > 0,' TAM.'||FN_TAMANHO_PRODUTO(B.CODIGO, NEW.TAMANHO),'') FROM TBPRODUTO B WHERE B.CODIGO = NEW.PRODUTO_ID),'')||' '||HISTORICO_BAIXA;

       EXECUTE PROCEDURE SPI_HISTORICO('TBREMESSA',NEW.REMESSA,FN_ELIPSES(:HISTORICO_BAIXA,500));
    END

    IF (HISTORICO_ENCERRAMENTO <> '') THEN
    BEGIN

       HISTORICO_ENCERRAMENTO = 'TL:' ||FN_LPAD(NEW.TALAO, 4, 0)|| ' - CONS.:' || NEW.ID || ' | PROD:'||coalesce((SELECT FIRST 1 FN_LPAD(B.CODIGO,6,0)||' - '||B.DESCRICAO||IIF(B.GRADE_CODIGO > 0,' TAM.'||FN_TAMANHO_PRODUTO(B.CODIGO, NEW.TAMANHO),'')  FROM TBPRODUTO B WHERE B.CODIGO = NEW.PRODUTO_ID),'')||' '||HISTORICO_ENCERRAMENTO;


       EXECUTE PROCEDURE SPI_HISTORICO('TBREMESSA',NEW.REMESSA,FN_ELIPSES(:HISTORICO_ENCERRAMENTO,500));
    END


END^