create or replace FUNCTION CUSTO_FLOATTOTIME_CDP (P_TPCALCULO  IN VARCHAR2, 
                                                  P_CDFUNCUSTO IN VARCHAR2, 
                                                  P_VRCUSTO    IN FLOAT,    
                                                  P_QUANTIDADE IN FLOAT,    
                                                  P_CUST_UNIT  IN FLOAT     
                                                  ) 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  
         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  
         V_RESULT := P_VRCUSTO;              
      END IF;   
   ELSE 
      IF ((P_CDFUNCUSTO = '002') OR (P_CDFUNCUSTO = '003'))THEN  
         V_A := TRUNC(NVL(P_QUANTIDADE,0)); 
         V_B := TRUNC((NVL(P_QUANTIDADE,0) - V_A)*60); 
         V_C := TO_NUMBER(V_A ||'.'||LPAD(V_B,2,'0'),'9999.99'); 
 
         V_RESULT := V_C;               
      ELSE  
         V_RESULT := P_QUANTIDADE;             
      END IF;   
   END IF; 
 
   RETURN(V_RESULT); 
END; 
/
