CREATE OR REPLACE FUNCTION VALOR_ENCARGO_PEDIDO
   (P_CDFILIAL   IN PEDIDO.CDFILIAL%TYPE,
    P_NRPEDIDO   IN PEDIDO.NRPEDIDO%TYPE,
    P_IDENCARGO  IN ENCARGO.IDENCARGO%TYPE,
    P_CDENCARGO  IN ENCARGO.CDENCARGO%TYPE DEFAULT NULL ) RETURN NUMBER
AS
   V_VRENCARGO ENCARGOPED.VRENCARGOPED%TYPE;
BEGIN
   SELECT NVL(SUM(I.VRENCARGOPED),0)
   INTO V_VRENCARGO
   FROM ENCARGOPED I, ENCARGO E
   WHERE I.CDFILIAL   = P_CDFILIAL   AND
         I.NRPEDIDO   = P_NRPEDIDO AND
         E.CDENCARGO  = I.CDENCARGO  AND
         E.IDENCARGO  = P_IDENCARGO  AND
         E.CDENCARGO  = NVL(P_CDENCARGO,E.CDENCARGO);

   RETURN(V_VRENCARGO);
END;
/