CREATE OR ALTER trigger ttbconsumo_requisicao_b0u_04 for tbconsumo_requisicao
active before update position 0
AS
DECLARE VARIABLE QTD_BAIXA INTEGER;
DECLARE VARIABLE QTD_BAIXADA numeric(18,8);
BEGIN

    --Se estiver encerrada e nao estiver sendo desencerrada
    IF (NEW.STATUS IS DISTINCT FROM OLD.STATUS AND OLD.STATUS = '2' AND NEW.STATUS <> '1') THEN
    BEGIN
        EXCEPTION "..." 'OPERACAO INVALIDA. REQUISICAO ESTA ENCERRADA.';
    END
    --Se a alteracao nao vier a partir da TBESTOQUE_BAIXA
    ELSE IF (NEW.FLAG_BAIXA_ALTERACAO IS DISTINCT FROM OLD.FLAG_BAIXA_ALTERACAO AND (NEW.FLAG_BAIXA_ALTERACAO IS NULL OR NEW.FLAG_BAIXA_ALTERACAO <> '1') ) THEN
    BEGIN

        for
          SELECT COUNT(EB.ID), sum(eb.quantidade)
          FROM TBESTOQUE_BAIXA EB
          WHERE EB.TIPO = 'R'
          AND EB.TABELA_ID = OLD.ID
          AND EB.STATUSEXCLUSAO = '0'
        into
            :QTD_BAIXA,
            :QTD_BAIXADA
        do begin
          --baixado
        end

        --Se ja estiver baixada
        IF (QTD_BAIXA > 0 and :QTD_BAIXADA >= old.quantidade) THEN
            EXCEPTION "..." 'OPERACAO INVALIDA. JA FOI REALIZADA BAIXA DE '||:QTD_BAIXADA||' DESTA REQUISICAO.';

    END
    ELSE
    BEGIN
        NEW.FLAG_BAIXA_ALTERACAO = '0';
    END

END;