CREATE OR ALTER procedure spu_tratar_requisicoes 
as
declare variable programacao_id integer;
declare variable abertos integer;
declare variable requisicao_id integer;
begin
  FOR
    select * from (
        select
            
            p.id as programacao_id,
            P.requisicao_id
            /*
            coalesce((select
                    
                count(d.id)
        
            from vwremessa_talao_detalhe d
            where d.remessa_id = r.remessa_id
            and d.remessa_talao_id = r.remessa_talao_id
            and d.data_producao is null),0) as ABERTOS,
            */
            ,
            coalesce((SELECT
                 count(P.ID)
             FROM vwremessa_talao_detalhe P
             WHERE P.GP_ID = r.GP_ID
             AND P.REMESSA_ID = r.remessa_id
             AND P.PRODUTO_ID = r.PRODUTO_ID
             AND P.TAMANHO = r.TAMANHO
             AND P.data_producao is null),0) as ABERTOS
        
        from tbprogramacao p,
        vwremessa_talao r
            
        where p.status_requisicao = 1
            and p.status < 3
            and r.id = p.tabela_id
            and r.estabelecimento_id = p.estabelecimento_id
            and r.remessa_id = p.remessa_id
    )where ABERTOS = 0
  INTO
    :PROGRAMACAO_ID,
    :REQUISICAO_ID,
    :ABERTOS
  DO
  BEGIN
    update tbprogramacao P SET P.status = 3, p.operador_id = 2715 WHERE P.id = :PROGRAMACAO_ID;

    update tbprogramacao_requisicao J SET J.tempo_previsto = 0, J.tempo_realizado = 0, J.tempo_operacional = 0,
        J.tempo_setup_ferramenta = 0, J.tempo_setup_aquecimento = 0, J.tempo_setup_cor = 0, J.tempo_setup_aprovacao = 0, j.datahora_realizado_inicio = j.datahora_realizado_fim
        WHERE J.programacao_id = :PROGRAMACAO_ID AND J.requisicao_id = :REQUISICAO_ID;
  END
  suspend;
end;

