CREATE OR ALTER trigger tbrequisicao_b3i_01 for tbrequisicao
active before insert position 0
AS
DECLARE VARIABLE PROGRAMACAO_ID INTEGER;
DECLARE VARIABLE STATUS INTEGER;
DECLARE VARIABLE LINHA INTEGER;
BEGIN

  FOR
     SELECT
         P.ID,
         P.STATUS,
         ROW_NUMBER() OVER (ORDER BY P.DATAHORA_FIM DESC) AS LINHA
     FROM TBPROGRAMACAO P
     WHERE 1 = 1
     AND P.GP_ID = NEW.GP_ID
     AND P.REMESSA_ID = NEW.REMESSA
     AND P.PRODUTO_ID = NEW.PRODUTO_ID
     AND P.TAMANHO = NEW.TAMANHO
     --AND P.STATUS_REQUISICAO = 0

     ORDER BY P.DATAHORA_FIM DESC
  INTO
    :PROGRAMACAO_ID,
    :STATUS,
    :LINHA
  DO
  BEGIN

    --NAO PERMITE REGISTRAR REQUISICAO SE SKU EM ABERTO NA REMESSA
    IF(:STATUS < 3)THEN
    BEGIN
        EXCEPTION "..." 'REQUISICAO NAO PERMITIDA, HA TALOES DESTE SKU EM ABERTO NA CONFORMACAO, REMESSA:'||:NEW.REMESSA||' GP:'||NEW.GP_ID||'. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ';
    END

    --MARCA O PRIMEIRO GEGISTRO COMO AGUARDANDO REQUISICAO
    IF(:LINHA = 1)THEN
    BEGIN
        UPDATE TBPROGRAMACAO P SET P.STATUS = 1, P.STATUS_REQUISICAO = 1, p.requisicao_id = new.id WHERE P.ID = :PROGRAMACAO_ID;
    END ELSE
    BEGIN

    END

  END

END;
