create or replace FUNCTION CALC_PESOCUBADO_PED
  (P_CDFILIAL     IN FILIAL.CDFILIAL%TYPE,
   P_NRPEDIDO    IN PEDIDO.NRPEDIDO%TYPE) RETURN
   FLOAT IS
   V_VRCUBAGEM FLOAT := 0;

BEGIN
    FOR C_ITEM IN (SELECT  IP.QTITEMPED, P.VRALTURACUBO, P.VRLARGURACUBO, P.VRCOMPRICUBO, P.VRFATORCUBO
                     FROM ITEMPEDIDO IP JOIN PRODUTO P on IP.CDPRODUTO = P.CDPRODUTO
                    WHERE IP.CDFILIAL = P_CDFILIAL
                      AND IP.NRPEDIDO = P_NRPEDIDO) 
    LOOP
      V_VRCUBAGEM := V_VRCUBAGEM + NVL((C_ITEM.VRALTURACUBO * C_ITEM.VRLARGURACUBO * C_ITEM.VRCOMPRICUBO * C_ITEM.QTITEMPED * NVL(C_ITEM.VRFATORCUBO, 1)), 0);
    END LOOP;
 RETURN V_VRCUBAGEM;
END;
/