SET TERM ^ ;

CREATE OR ALTER trigger ttbinv_mat_prima_detalhe_b01u for tbinventario_mat_prima_detalhe
active before update position 0
AS
DECLARE VARIABLE HISTORICO VARCHAR(500);
DECLARE VARIABLE PRODUTO_DESC VARCHAR(100);
BEGIN

    HISTORICO = '';
    PRODUTO_DESC = COALESCE((SELECT FIRST 1 P.DESCRICAO FROM TBPRODUTO P WHERE P.CODIGO = NEW.PRODUTO_ID), '');

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

    IF (HISTORICO <> '') THEN
    BEGIN
        HISTORICO = ' PROD: '||FN_LPAD(NEW.PRODUTO_ID, 6, '0')||' - '||PRODUTO_DESC||', TAM: '||COALESCE(FN_TAMANHO_PRODUTO(NEW.PRODUTO_ID, NEW.TAMANHO), '')||' ALTERADO: '||HISTORICO;
        EXECUTE PROCEDURE SPI_HISTORICO('TBINVENTARIO_MATERIA_PRIMA',NEW.INVENTARIO_ID, HISTORICO);
    END
END
^

SET TERM ; ^

