create or replace FUNCTION GETQTVENDIDO(
   P_CDFILIAL     IN FILIAL.CDFILIAL%TYPE,
   P_CDVENDEDOR     IN VENDEDOR.CDVENDEDOR%TYPE,
   P_CDPRODUTO    IN PRODUTO.CDPRODUTO%TYPE,
   P_DTINICIAL    IN NOTAFISCAL.DTEMISSAO%TYPE,
   P_DTFINAL     IN NOTAFISCAL.DTEMISSAO%TYPE) RETURN NUMBER IS

   V_VRTOTAL NUMBER;

BEGIN
   V_VRTOTAL := 0;

   SELECT SUM(IT.QTITEMPROD) AS VRTOTAL
     INTO V_VRTOTAL
     FROM PEDIDO PE, ITEMPRODUTO IT, NOTAFISCAL N
    WHERE PE.CDFILIAL = P_CDFILIAL
      AND PE.CDVENDEDOR = P_CDVENDEDOR
      AND PE.CDFILIAL = IT.CDFILIALPED
      AND PE.NRPEDIDO = IT.NRPEDIDO
      AND IT.CDPRODUTO = P_CDPRODUTO
      AND IT.CDFILIAL = N.CDFILIAL
      AND IT.NRLANCTONF = N.NRLANCTONF
      AND N.DTEMISSAO BETWEEN P_DTINICIAL AND P_DTFINAL
      AND N.IDENTRSAIDOP = 'S'
      AND N.CDTIPOOPER IN ('01','18','21','28','30');

   RETURN(V_VRTOTAL);
END;
/