create or replace FUNCTION BUSCA_VRENCARGO_DESC_ITEM( 
   P_CDFILIAL     IN ITEMPRODUTO.CDFILIAL%TYPE, 
   P_NRLANCTONF   IN ITEMPRODUTO.NRLANCTONF%TYPE, 
   P_NRSEQITPROD  IN ITEMPRODUTO.NRSEQITPROD%TYPE) RETURN NUMBER 
 
AS 
   V_VRITEMENCA  ITEMENCARGO.VRITEMENCA%TYPE; 
   V_VRPRODUTOS  NOTAFISCAL.VRPRODUTOS%TYPE; 
   V_VRTOTALITEM ITEMPRODUTO.VRTOTAITEM%TYPE; 
   V_RESULT      ITEMENCARGO.VRITEMENCA%TYPE; 
BEGIN 
   SELECT SUM(I.VRITEMENCA) AS VRITEMENCA 
     INTO V_VRITEMENCA 
     FROM ITEMENCARGO I, ENCARGO E 
    WHERE (I.CDFILIAL   = P_CDFILIAL  ) 
      AND (I.NRLANCTONF = P_NRLANCTONF) 
      AND (I.CDENCARGO  = E.CDENCARGO ) 
      AND (I.VRITEMENCA > 0           ) 
      AND (E.IDENCARGO  = 'D'         ); 
 
   SELECT MAX(NF.VRPRODUTOS) 
     INTO V_VRPRODUTOS 
     FROM NOTAFISCAL NF 
    WHERE NF.CDFILIAL = P_CDFILIAL 
      AND NF.NRLANCTONF = P_NRLANCTONF; 
 
   SELECT SUM(IT.VRTOTAITEM - IT.VRDESCITEM) 
     INTO V_VRTOTALITEM 
     FROM ITEMPRODUTO IT 
    WHERE IT.CDFILIAL = P_CDFILIAL 
      AND IT.NRLANCTONF = P_NRLANCTONF 
      AND IT.NRSEQITPROD = P_NRSEQITPROD; 
 
   V_RESULT :=  ROUND((NVL(V_VRTOTALITEM,0) * NVL(V_VRITEMENCA,0))/NVL(V_VRPRODUTOS,1),2); 
 
   RETURN(V_RESULT); 
END;
/