ALTER TABLE TBPROGRAMACAO
    ADD TEMPO_PREVISTO NUMERIC(15,4);

COMMENT ON COLUMN TBPROGRAMACAO.TEMPO_PREVISTO IS
'tempo previsto';

CREATE trigger tbprogramacao_b12u for tbprogramacao
active before update position 0
AS
declare variable DIVIDIR_TEMPO_PREVISTO INTEGER;
declare variable tempo numeric(15,5);
begin

    if( coalesce(new.qtd_operadores,0) <> coalesce(old.qtd_operadores,0) )then
    begin
          DIVIDIR_TEMPO_PREVISTO = fn_parametro('TBGP.DIVIDIR_TEMPO_PREVISTO', NEW.gp_id);
        
          if(coalesce(new.TEMPO_PREVISTO,0) = 0)then
          begin
            new.TEMPO_PREVISTO = new.tempo;
          end
        
          if(DIVIDIR_TEMPO_PREVISTO = 1)then
          begin
             tempo = (new.TEMPO_PREVISTO - new.tempo_operacional) / new.qtd_operadores;
          end
        
          if(DIVIDIR_TEMPO_PREVISTO = 2)then
          begin
            tempo = (new.TEMPO_PREVISTO - new.tempo_setup) / new.qtd_operadores;
          end
        
          if(DIVIDIR_TEMPO_PREVISTO = 3)then
          begin
            tempo = new.TEMPO_PREVISTO / new.qtd_operadores;
          end
        
          if(new.TEMPO_PREVISTO > 0 and tempo > 0)then
          begin
            new.tempo = tempo;
          end
    end

end;

COMMENT ON TRIGGER TBPROGRAMACAO_B12U IS 'ao mudar quantidade de operadores recalcula o tempo previsto';



