CREATE or ALTER  trigger TTBPEDIDO_ITEM_PRTTOCESSADO_B9U for tbpedido_item_processado
active before update position 9
AS
declare variable situacao integer;
declare variable ferramenta integer;
declare variable programacao_status integer;
begin

  if(new.situacao <> old.situacao and new.situacao = 2)then
  begin
    for
        select first 1
        
            p.status,
            p.ferramenta_id
        
        from vwremessa_talao r, tbprogramacao p
        where r.remessa_id = NEW.remessa
         and r.remessa_talao_id = NEW.remessa_acumulado_controle
         and p.tabela_id = r.id
         and p.remessa_id = r.remessa_id
    into
        :programacao_status,
        :ferramenta
    do
    begin
        if(:programacao_status < 3 and :ferramenta > 0)then
        begin
           :situacao = coalesce(
                       (select
                            count(a.situacao)
                        from tbpedido_item_processado a
                        where a.remessa = NEW.remessa
                         and a.remessa_acumulado_controle = NEW.remessa_acumulado_controle
                         and a.controle <> NEW.controle
                         and a.situacao = 1),0);

            if (:situacao = 0) then
            begin
               exception "..." 'TALAO NAO FINALIZADO NA CONFORMACAO, OPERACAO CANCELADA.';
            end
        end
    end
  end

end;