CREATE OR ALTER trigger ttbprogramacao_b0u_01 for tbprogramacao
inactive before update position 0
AS
BEGIN
    IF ( (COALESCE(NEW.quantidade,0) <= 0) and (COALESCE(new.ferramenta_id,0) < 1) ) THEN
    BEGIN
        exception "..." ' QUANTIDADE NA PROGRAMACAO NAO PODE FICAR ZERADA.';
    END

/* foi desativada em 08/08/2017 pois estava impedindo
   a exclusao de taloes na conformacao e metradeira pois
   ao excluir os taloes na programacao sao zerados */

END;

CREATE OR ALTER trigger tbremessa_item_processado_b6u for tbremessa_item_processado
active before update position 0
AS
declare variable status_requisicao integer;
declare variable requisicao_id integer;
declare variable status integer;
declare variable programacao_id integer;
declare variable talao_extra integer;
begin

    if(new.quantidade <> old.quantidade)then
    begin
      for
        select
            m.status_requisicao,
            m.requisicao_id,
            m.status,
            m.id,
            t.talao_extra
        from vwremessa_talao t,tbprogramacao m where true
        and t.remessa_id = new.remessa
        and t.remessa_talao_id = new.controle
        and m.tabela_id = t.id
      into
        :status_requisicao,
        :requisicao_id,
        :status,
        :programacao_id,
        :talao_extra
      do
      begin
          if(:requisicao_id = 0)then
          begin
              if(:status = 2)then
              begin
                   exception "..." 'TALAO EM PRODUCAO NA CONFORMACAO, OPERACAO CANCELADA!';
              end else
              begin
                    Update tbprogramacao p set p.quantidade = new.quantidade where p.id = :programacao_id;

                    if(new.quantidade = 0)then
                    begin
                        Update vwremessa_talao p set p.quantidade = 0 where p.id = :talao_extra;

                        Update TBREQUISICAO_SOBRA S set s.quantidade = 0, s.saldo = 0
                             WHERE S.REMESSA = new.remessa
                               AND S.TALAO = new.controle
                               AND S.REQUISICAO_ID = 0;
                    end
              end
          end else
          begin
            exception "..." 'TALAO EM PRODUCAO NA CONFORMACAO, OPERACAO CANCELADA!';
          end
      end
   end

end;




