

CREATE OR ALTER function fn_programacao_tempo_novo (
    modelo_id integer,
    cor_id integer,
    tam integer,
    tipo integer)
returns numeric(14,4)
as
declare variable totalsetup2 integer;
declare variable totalsetup1 integer;
declare variable totalsetup3 numeric(14,4);
declare variable resultado numeric(14,4);
declare variable totalprocesso1 numeric(14,4);
declare variable totalprocesso2 integer;
declare variable totalprocesso3 integer;
declare variable id integer;
declare variable familia_producao integer;
declare variable sequencia integer;
declare variable familia_id integer;
declare variable gp_id varchar(40);
declare variable perfil_up varchar(10);
declare variable up_padrao1 integer;
declare variable up_padrao2 integer;
declare variable calculo_rebobinamento char(4);
declare variable calculo_conformacao char(4);
declare variable ccusto varchar(40);
declare variable fator numeric(18,2);
declare variable status char(4);
declare variable remessas_defeito integer;
begin

  for
    SELECT
        c.ID,
        c.FAMILIA_PRODUCAO,
        c.SEQUENCIA,
        c.FAMILIA_ID,
        c.GP_ID,
        c.PERFIL_UP,
        c.UP_PADRAO1,
        c.UP_PADRAO2,
        c.CALCULO_REBOBINAMENTO,
        c.CALCULO_CONFORMACAO,
        c.CCUSTO,
        c.FATOR,
        c.STATUS,
        c.REMESSAS_DEFEITO

    from TBREGRA_CALCULO_CUSTO c, tbmodelo m
    where c.familia_producao = 3
    and m.familia_codigo = c.familia_id
    and m.codigo = :MODELO_ID
  into
    ID,
    FAMILIA_PRODUCAO,
    SEQUENCIA,
    FAMILIA_ID,
    GP_ID,
    PERFIL_UP,
    UP_PADRAO1,
    UP_PADRAO2,
    CALCULO_REBOBINAMENTO,
    CALCULO_CONFORMACAO,
    CCUSTO,
    FATOR,
    STATUS,
    REMESSAS_DEFEITO
  do
  begin

  end

  :TOTALPROCESSO1 = 0;
  :TOTALSETUP1    = 0;
  :TOTALPROCESSO2 = 0;
  :TOTALSETUP2    = 0;
  :TOTALPROCESSO3 = 0;
  :TOTALSETUP3    = 0;

  if(UP_PADRAO2 > 0)then
  begin  
      Delete from Tmp22040 Where True;
      INSERT INTO TMP22040 (UP_ID, MODELO_ID, COR_ID, TAMANHO, QUANTIDADE) VALUES (:UP_PADRAO2 ,:modelo_id, :cor_id, :Tam, 1);
      SELECT TOTALPROCESSO, TOTALSETUP From SPC_PROGRAMACAO_TEMPO_NOVO into :TOTALPROCESSO1, :TOTALSETUP1;
  end

  if(UP_PADRAO1 > 0)then
  begin
      Delete from Tmp22040 Where True;
      INSERT INTO TMP22040 (UP_ID, MODELO_ID, COR_ID, TAMANHO, QUANTIDADE) VALUES (:UP_PADRAO1 ,:modelo_id, :cor_id, :Tam, 1);
      SELECT TOTALPROCESSO, TOTALSETUP From SPC_PROGRAMACAO_TEMPO_NOVO into :TOTALPROCESSO2, :TOTALSETUP2;
  end

  SELECT TEMPO, TEMPO_SETUP From SPC_PROGRAMACAO_TEMPO_BOJO (:modelo_id, :Tam, :cor_id, 1) INTO :TOTALPROCESSO3, :TOTALSETUP3;

  if(TIPO = 1)then
  begin
    RESULTADO = TOTALPROCESSO1 + TOTALPROCESSO2 + TOTALPROCESSO3;
  end
  else
  begin
    RESULTADO = TOTALSETUP1 + TOTALSETUP2 + TOTALSETUP3;
  end

  return RESULTADO;
end;
