create or replace FUNCTION CUSTO_FLOATTOTIME_CDP (P_TPCALCULO  IN VARCHAR2,--CUSTO OU QUANT'
                                                  P_CDFUNCUSTO IN VARCHAR2,--001[MATERIA PRIMA//002[MÃO DE OBRA]//003[EQUIPAMENTO](FUNÇÃO DE CUSTO CDP)
                                                  P_VRCUSTO    IN FLOAT,   --CUSTO(PLANEJADO(VRCUSTPLAN) // REAL(VRCUSTREAL) )
                                                  P_QUANTIDADE IN FLOAT,   --QUANTIDADE(PLANEJADA // REAL )
                                                  P_CUST_UNIT  IN FLOAT    --CUSTO UNITARIO(CUSTO DA MO/OU DO EQUIP/OU DA INSPECAO  
                                                  ) RETURN FLOAT IS

V_RESULT FLOAT;
V_A FLOAT;
V_B FLOAT;
V_C FLOAT;
V_D Float;

BEGIN
   IF P_TPCALCULO = 'CUSTO' THEN 
      IF ((P_CDFUNCUSTO = '002') OR (P_CDFUNCUSTO = '003'))THEN --MÃO DE OBRA//EQUIPAMENTO 
         V_A := TRUNC(NVL(P_QUANTIDADE,0));
         V_B := TRUNC((NVL(P_QUANTIDADE,0) - V_A)*60);
         V_C := TO_NUMBER(V_A ||'.'||V_B,'9999.99');
         V_D := V_C * P_CUST_UNIT;

         V_RESULT := V_D;              
      ELSE --MATÉRIA PRIMA
         V_RESULT := P_VRCUSTO;             
      END IF;  
   ELSE
      IF ((P_CDFUNCUSTO = '002') OR (P_CDFUNCUSTO = '003'))THEN --MÃO DE OBRA//EQUIPAMENTO 
         V_A := TRUNC(NVL(P_QUANTIDADE,0));
         V_B := TRUNC((NVL(P_QUANTIDADE,0) - V_A)*60);
         V_C := TO_NUMBER(V_A ||'.'||V_B,'9999.99');

         V_RESULT := V_C;              
      ELSE --MATÉRIA PRIMA
         V_RESULT := P_QUANTIDADE;            
      END IF;  
   END IF;

   RETURN(V_RESULT);
END;
/
-- VERSAO --
BEGIN ATUVEROBJ('CUSTO_FLOATTOTIME_CDP','6.49.039'); END;
/
