CREATE OR REPLACE PACKAGE PEDIDO_COLETA IS
   TYPE REGISTRO IS RECORD( CDREGIAO     REGIAO.CDREGIAO%TYPE,
                            NMREGIAO     REGIAO.NMREGIAO%TYPE,
                            CDOPERADOR   OPERADOR.CDOPERADOR%TYPE,
                            NMOPERADOR   OPERADOR.NMOPERADOR%TYPE,
                            CDFORNECED   FORNECEDOR.CDFORNECED%TYPE,
                            NRINSJURFORN FORNECEDOR.NRINSJURFORN%TYPE,
                            IDTPIJURFORN FORNECEDOR.IDTPIJURFORN%TYPE,
                            NMRAZSOCFORN FORNECEDOR.NMRAZSOCFORN%TYPE,
                            NMFANTFORN   FORNECEDOR.NMFANTFORN%TYPE,
                            CDPRODUTO    PRODUTO.CDPRODUTO%TYPE,
                            NMPRODUTO    PRODUTO.NMPRODUTO%TYPE,
                            SGUNIDADE    PRODUTO.SGUNIDADE%TYPE,
                            CDPRODESTO   PRODUTO.CDPRODESTO%TYPE,
                            IDTPFRETFORN FORNECEDOR.IDTPFRETFORN%TYPE,
                            CDMARCA      MARCA.CDMARCA%TYPE,
                            NMMARCA      MARCA.NMMARCA%TYPE,
                            CDMARCAPADR  MARCA.CDMARCA%TYPE,
                            CDARVPROD    PRODUTO.CDARVPROD%TYPE,
                            QTACOMPRAR   FLOAT,
                            NRCOMPRA     ITEMCOLE.NRCOLEPRECO%TYPE);
   TYPE TABELA IS TABLE OF REGISTRO;

   /******************adqPedColTodos******************/
   FUNCTION PED_COL_TODOS( P_CDCOMPRADOR   VARCHAR2,
                           P_CDFILIAL      VARCHAR2,
                           P_CDPRODINI     VARCHAR2,
                           P_CDPRODFIN     VARCHAR2,
                           P_TPRODUTO      VARCHAR2,
                           P_CDFORNECED    VARCHAR2,
                           P_CDREGIAO      VARCHAR2,
                           P_CDMARCA       VARCHAR2,
                           P_CDFILIPROC    VARCHAR2,
                           P_DTINI         DATE,
                           P_DTFIN         DATE) RETURN TABELA PIPELINED;

   /******************adqPedColAComp******************/
   FUNCTION PED_COL_ACOMP( P_CDCOMPRADOR   VARCHAR2,
                           P_CDFILIAL      VARCHAR2,
                           P_CDPRODINI     VARCHAR2,
                           P_CDPRODFIN     VARCHAR2,
                           P_TPRODUTO      VARCHAR2,
                           P_CDFORNECED    VARCHAR2,
                           P_CDREGIAO      VARCHAR2,
                           P_CDMARCA       VARCHAR2,
                           P_CDFILIPROC    VARCHAR2,
                           P_DTINI         DATE,
                           P_DTFIN         DATE) RETURN TABELA PIPELINED;

   /******************adqCotacao******************/
   FUNCTION PED_COL_COTACAO( P_CDCOMPRADOR   VARCHAR2,
                             P_CDFILIAL      VARCHAR2,
                             P_CDPRODINI     VARCHAR2,
                             P_CDPRODFIN     VARCHAR2,
                             P_TPRODUTO      VARCHAR2,
                             P_CDFORNECED    VARCHAR2,
                             P_CDREGIAO      VARCHAR2,
                             P_CDMARCA       VARCHAR2,
                             P_CDFILIPROC    VARCHAR2,
                             P_NRCOLEPRECO   VARCHAR2,
                             P_DTINI         DATE,
                             P_DTFIN         DATE) RETURN TABELA PIPELINED;

   /******************adqCotacaoForn******************/
   FUNCTION PED_COL_COTAFORN( P_CDCOMPRADOR   VARCHAR2,
                              P_CDFILIAL      VARCHAR2,
                              P_CDPRODINI     VARCHAR2,
                              P_CDPRODFIN     VARCHAR2,
                              P_TPRODUTO      VARCHAR2,
                              P_CDFORNECED    VARCHAR2,
                              P_CDREGIAO      VARCHAR2,
                              P_CDMARCA       VARCHAR2,
                              P_CDFILIPROC    VARCHAR2,
                              P_NRCOLEPRECO   VARCHAR2,
                              P_DTINI         DATE,
                              P_DTFIN         DATE) RETURN TABELA PIPELINED;

   /******************adqGeraListaPrec******************/
   FUNCTION PED_COL_GERALISTPREC( P_CDCOMPRADOR   VARCHAR2,
                                  P_CDFILIAL      VARCHAR2,
                                  P_CDPRODINI     VARCHAR2,
                                  P_CDPRODFIN     VARCHAR2,
                                  P_TPRODUTO      VARCHAR2,
                                  P_CDFORNECED    VARCHAR2,
                                  P_CDREGIAO      VARCHAR2,
                                  P_CDMARCA       VARCHAR2,
                                  P_CDFILIPROC    VARCHAR2,
                                  P_NRSEQPRELIST  VARCHAR2,
                                  P_DTINI         DATE,
                                  P_DTFIN         DATE) RETURN TABELA PIPELINED;

   /******************adqListaPrec******************/
   FUNCTION PED_COL_LISTAPREC( P_CDCOMPRADOR   VARCHAR2,
                               P_CDFILIAL      VARCHAR2,
                               P_CDPRODINI     VARCHAR2,
                               P_CDPRODFIN     VARCHAR2,
                               P_TPRODUTO      VARCHAR2,
                               P_CDFORNECED    VARCHAR2,
                               P_CDREGIAO      VARCHAR2,
                               P_CDMARCA       VARCHAR2,
                               P_CDFILIPROC    VARCHAR2,
                               P_NRSEQPRELIST  VARCHAR2,
                               P_DTINI         DATE,
                               P_DTFIN         DATE) RETURN TABELA PIPELINED;

   /******************adqPedCompra******************/
   FUNCTION PED_COMPRA( P_CDPRODINI     VARCHAR2,
                        P_CDPRODFIN     VARCHAR2,
                        P_TPRODUTO      VARCHAR2,
                        P_CDFORNECED    VARCHAR2,
                        P_CDMARCA       VARCHAR2,
                        P_NRCOMPRA      VARCHAR2,
                        P_DTINI         DATE,
                        P_DTFIN         DATE) RETURN TABELA PIPELINED;

   /******************adqPedColeta******************/
   FUNCTION GETPEDCOLETA( P_IDPEDCOL         IN VARCHAR2,
                          P_NRCOTACAO        IN VARCHAR2,
                          P_COMPRADOR        IN VARCHAR2,
                          P_MARCA            IN VARCHAR2,
                          P_FORNECED         IN VARCHAR2,
                          P_REGIAO           IN VARCHAR2,
                          P_PRODINI          IN VARCHAR2,
                          P_PRODFIN          IN VARCHAR2,
                          P_CDFILIAL         IN VARCHAR2,
                          P_CDFILIPROC       IN VARCHAR2,
                          P_NRCOMPRA         IN VARCHAR2,
                          P_CDLEILAO         IN VARCHAR2,
                          P_NRSEQPRELIST     IN VARCHAR2,
                          P_CDOPERLANC       IN VARCHAR2,
                          P_DESCFORNECEDOR   IN VARCHAR2,
                          P_LISTFORNECEDOR   IN VARCHAR2,
                          P_QTMESES          IN VARCHAR2,
                          P_DTINI            IN DATE,
                          P_DTFIN            IN DATE,
                          P_DTEXPIRAPEDCOL   IN DATE,
                          P_BOPEDEMAIL       IN VARCHAR2,
                          P_IDPEDGERALREG    IN VARCHAR2,
                          P_IDPEDGERALFORN   IN VARCHAR2,
                          P_IDCURVAABCAF     IN VARCHAR2,
                          P_IDENVMERCADUM    IN VARCHAR2,
                          P_BOACRESITEM      IN VARCHAR2,
                          P_IDCONSFORNAF     IN VARCHAR2,
                          P_NRORG            IN VARCHAR2 DEFAULT '1') RETURN TABELA PIPELINED;

    TYPE REG_PEDCOLETA IS RECORD
    (
        IDORDPLCOT       PARASUPRI.IDORDPLCOT%TYPE,
        IDPRODINCLFOR    PRMARCPEDCOL.IDPRODINCLFOR%TYPE,
        CDFILIAL         PRMARCPEDCOL.CDFILIAL%TYPE,
        VRPRECREN        PRMARCPEDCOL.VRPRECREN%TYPE,
        NRPEDIDOCOL      PRMARCPEDCOL.NRPEDIDOCOL%TYPE,
        QTDISPPRODMARC   PRMARCPEDCOL.QTDISPPRODMARC%TYPE,
        VRPRECUNIPRMARC  PRMARCPEDCOL.VRPRECUNIPRMARC%TYPE,
        VRULTPRECPRMARC  PRMARCPEDCOL.VRULTPRECPRMARC%TYPE,
        VRPRECOOBJETIVO  PRMARCPEDCOL.VRPRECOOBJETIVO%TYPE,
        DSOBSRENEGOCIA   PRMARCPEDCOL.DSOBSRENEGOCIA%TYPE,
        IDITPEDPRIONEG   PRMARCPEDCOL.IDITPEDPRIONEG%TYPE,
        NRORG            PRMARCPEDCOL.NRORG%TYPE,
        CDPRODUTO        PRODUTO.CDPRODUTO%TYPE,
        CDARVPROD        PRODUTO.CDARVPROD%TYPE,
        NMPRODUTO        PRODUTO.NMPRODUTO%TYPE,
        CDPRODESTO       PRODUTO.CDPRODESTO%TYPE,
        SGUNIDADE        PRODUTO.SGUNIDADE%TYPE,
        DSOBSNUTR        PRODUTO.DSOBSNUTR%TYPE,
        CDMARCA          MARCA.CDMARCA%TYPE,
        NMMARCA          MARCA.NMMARCA%TYPE,
        VRPERVARPREPRFO  PRODFORNCOMP.VRPERVARPREPRFO%TYPE,
        VRPERVARDESCPRFO PRODFORNCOMP.VRPERVARDESCPRFO%TYPE,
        QTPRODPEDCOL     ITEMPEDCOL.QTPRODPEDCOL%TYPE,
        IDITEMPEDCOLALT  ITEMPEDCOL.IDITEMPEDCOLALT%TYPE,
        VRPERDESPEDCOL   ITEMPEDCOL.VRPERDESPEDCOL%TYPE,
        IDRENEGOCIAPCOL  PEDCOLGERAL.IDRENEGOCIAPCOL%TYPE,
        QTDIASPRAZOEXPED PRAZOFORNEXPEDFILPROD.QTDIASPRAZOEXPED%TYPE,
        VRMINFORNREG     PRAZOFORNEXPEDFILPROD.VRMINFORNREG%TYPE,
        QTMINFORNREG     PRAZOFORNEXPEDFILPROD.QTMINFORNREG%TYPE
    );
                            
    TYPE TAB_PEDCOLETA IS TABLE OF REG_PEDCOLETA;
   
   /*
    * Funcao criada para retonar os campos utilizados na tela Pedido Cotacao 
    * do Portal E-commerce
    *
    */
    FUNCTION SELECT_PEDCOLETA(P_CDFILIAL    IN FILIAL.CDFILIAL%TYPE,
                              P_NRPEDIDOCOL IN PEDCOLETA.NRPEDIDOCOL%TYPE,
                              P_CDFORNECED  IN FORNECEDOR.CDFORNECED%TYPE,
                              P_NRORG       IN PRMARCPEDCOL.NRORG%TYPE) RETURN TAB_PEDCOLETA PIPELINED;    

END PEDIDO_COLETA;
/


CREATE OR REPLACE PACKAGE BODY PEDIDO_COLETA IS
   FUNCTION PED_COL_TODOS( P_CDCOMPRADOR   VARCHAR2,
                           P_CDFILIAL      VARCHAR2,
                           P_CDPRODINI     VARCHAR2,
                           P_CDPRODFIN     VARCHAR2,
                           P_TPRODUTO      VARCHAR2,
                           P_CDFORNECED    VARCHAR2,
                           P_CDREGIAO      VARCHAR2,
                           P_CDMARCA       VARCHAR2,
                           P_CDFILIPROC    VARCHAR2,
                           P_DTINI         DATE,
                           P_DTFIN         DATE) RETURN TABELA PIPELINED IS
      V_PIPE TABELA := TABELA();
      V_INDICE NUMBER := 1;

      CURSOR PED_COL_TODOS IS
         SELECT CDREGIAO, NMREGIAO, CDOPERADOR, NMOPERADOR, CDFORNECED, NRINSJURFORN,
                IDTPIJURFORN, NMRAZSOCFORN, NMFANTFORN, CDPRODUTO, NMPRODUTO, SGUNIDADE,
                CDPRODESTO, IDTPFRETFORN, CDMARCA, NMMARCA, CDMARCAPADR, CDARVPROD, SUM(QTACOMPRAR) AS QTACOMPRAR,
                ' ' AS NRCOMPRA
           FROM ( SELECT COMPLETO.CDREGIAO, COMPLETO.NMREGIAO, COMPLETO.CDOPERADOR, COMPLETO.NMOPERADOR,
                         COMPLETO.CDFORNECED, COMPLETO.NRINSJURFORN, COMPLETO.IDTPIJURFORN, COMPLETO.NMRAZSOCFORN,
                         COMPLETO.NMFANTFORN, COMPLETO.CDPRODUTO, COMPLETO.NMPRODUTO, COMPLETO.SGUNIDADE,
                         COMPLETO.CDPRODESTO, COMPLETO.IDTPFRETFORN, COMPLETO.CDMARCA, COMPLETO.NMMARCA,
                         COMPLETO.CDMARCAPADR, COMPLETO.CDARVPROD, NVL(PRODACOMPRAR.QTACOMPRAR, 0) AS QTACOMPRAR
                    FROM PARASUPRI, FILIAL FILI,
                         ( SELECT REGIAO.CDREGIAO, REGIAO.NMREGIAO, OPERADOR.CDOPERADOR, OPERADOR.NMOPERADOR,
                                  PRODFORNCOMP.CDFORNECED, FORNECEDOR.NRINSJURFORN, FORNECEDOR.IDTPIJURFORN,
                                  FORNECEDOR.NMRAZSOCFORN, FORNECEDOR.NMFANTFORN, PRODUTO.CDPRODUTO,
                                  PRODUTO.NMPRODUTO, PRODUTO.SGUNIDADE, PRODUTO.CDPRODESTO, FORNECEDOR.IDTPFRETFORN,
                                  NVL(MARCPRODCOMP.CDMARCA, PARASUPRI.CDMARCA) AS CDMARCA,
                                  REPLACE(REPLACE(MARCA.NMMARCA, CHR(13), ''), CHR(10), '') NMMARCA,
                                  PRODUTO.CDARVPROD, PARASUPRI.CDMARCA AS CDMARCAPADR
                             FROM OPERADOR, MARCA, PRODUTO, PRODFORNCOMP, MARCPRODCOMP, FORNECEDOR,
                                  REGIAO, PARASUPRI
                            WHERE INSTR(NVL(P_CDCOMPRADOR, OPERADOR.CDOPERADOR), OPERADOR.CDOPERADOR) <> 0
                              AND PARASUPRI.CDFILIAL = P_CDFILIAL
                              AND ((NVL(PARASUPRI.IDUTLPROCMP, 'N') = 'N') OR (NVL(PARASUPRI.IDUTLPROCMP, 'N') = 'S' AND
                                                                               PRODUTO.CDPRODUTO <> PRODUTO.CDPRODESTO))
                              AND ((PRODUTO.CDARVPROD BETWEEN P_CDPRODINI AND P_CDPRODFIN) OR (P_TPRODUTO = 'T'))
                              AND INSTR(NVL(P_CDFORNECED, FORNECEDOR.CDFORNECED), FORNECEDOR.CDFORNECED) <> 0
                              AND INSTR(NVL(P_CDREGIAO, REGIAO.CDREGIAO), REGIAO.CDREGIAO) <> 0
                              AND NVL(MARCPRODCOMP.CDMARCA, PARASUPRI.CDMARCA) IS NOT NULL
                              AND INSTR(NVL(P_CDMARCA, MARCPRODCOMP.CDMARCA(+)), MARCPRODCOMP.CDMARCA(+))<> 0
                              AND FORNECEDOR.CDFORNECED = PRODFORNCOMP.CDFORNECED
                              AND PRODUTO.CDPRODUTO = PRODFORNCOMP.CDPRODCOMPL
                              AND PRODFORNCOMP.CDPRODCOMPL = MARCPRODCOMP.CDPRMARCOMPL(+)
                              AND MARCA.IDMARCAATIVA = 'A'
                              AND MARCA.CDMARCA = NVL(MARCPRODCOMP.CDMARCA, PARASUPRI.CDMARCA)
                              AND NVL(PRODUTO.IDPRODATIVPR, 'N') =  'S'
                              AND NOT EXISTS ( SELECT REFOREG.CDREGIAO, REFOREG.CDFORNECED
                                                 FROM REFOREG
                                                WHERE REFOREG.CDREGIAO = REGIAO.CDREGIAO
                                                  AND REFOREG.CDFORNECED = FORNECEDOR.CDFORNECED)
                              AND EXISTS ( SELECT PRODCOMP.CDPRODUTO, PRODCOMP.CDOPERADOR
                                             FROM PRODCOMP, PRODUTO PR
                                            WHERE PRODCOMP.CDPRODUTO = PR.CDPRODUTO
                                              AND PRODUTO.CDARVPROD LIKE PR.CDARVPROD || '%'
                                              AND OPERADOR.CDOPERADOR = PRODCOMP.CDOPERADOR)
                              AND NOT EXISTS ( SELECT QUALIFICACAO.CDQUALIF   /* QUALIFICACAO DO FORNECEDOR */
                                                 FROM QUALIFICACAO
                                                WHERE (FORNECEDOR.CDQUALIF       = QUALIFICACAO.CDQUALIF)
                                                  AND (FORNECEDOR.IDFORNAUTO     = 'N')
                                                  AND ((QUALIFICACAO.IDPERCOTCMP = '2') OR ((PARASUPRI.IDULTIDTVALQ  = 'D' AND
                                                                                             TO_DATE(SYSDATE) > FORNECEDOR.DTVALQUALIF)
                                                                                        OR (PARASUPRI.IDULTIDTVALQ = 'M' AND
                                                                                            TO_DATE(SYSDATE) > LAST_DAY(FORNECEDOR.DTVALQUALIF)))))
                              AND NOT EXISTS ( SELECT QFOMARPROD.CDMARCA   /* QUALIFICACAO DE PRODUTO/MARCA */
                                                 FROM QFOMARPROD
                                                WHERE (QFOMARPROD.CDPRODUTO    = PRODUTO.CDPRODUTO)
                                                  AND (QFOMARPROD.CDMARCA      = NVL(MARCPRODCOMP.CDMARCA, PARASUPRI.CDMARCA))
                                                  AND ((QFOMARPROD.IDAPRMARPRO = 'N' AND
                                                        QFOMARPROD.IDAUTMARPRO = 'N') OR ((QFOMARPROD.IDAPRMARPRO = 'S') AND
                                                                                          ((PARASUPRI.IDULTIDTVALQ = 'M' AND
                                                                                            TO_DATE(SYSDATE) > LAST_DAY(QFOMARPROD.DTVALAPROVA))
                                                                                      OR (PARASUPRI.IDULTIDTVALQ = 'D' AND
                                                                                          TO_DATE(SYSDATE) > QFOMARPROD.DTVALAPROVA)))))
                              AND EXISTS ( SELECT QFOMARPROD.CDMARCA /* QUALIFICACAO DE PRODUTO/MARCA */
                                             FROM QFOMARPROD
                                            WHERE QFOMARPROD.CDPRODUTO = PRODUTO.CDPRODUTO
                                              AND QFOMARPROD.CDMARCA   = NVL(MARCPRODCOMP.CDMARCA, PARASUPRI.CDMARCA)
                                            UNION
                                           SELECT PARASUPRI.CDMARCA
                                             FROM PARASUPRI
                                            WHERE PARASUPRI.CDFILIAL    = P_CDFILIAL
                                              AND (PARASUPRI.IDMARSEMQUA = 'N' OR PARASUPRI.IDMARSEMQUA IS NULL))
                                              AND NOT EXISTS (SELECT QFOPRODFORN.CDPRODUTO /* QUALIFICACAO DE PRODUTO/FORNECEDOR */
                                                                FROM QFOPRODFORN
                                                               WHERE (QFOPRODFORN.CDPRODUTO = PRODFORNCOMP.CDPRODCOMPL)
                                                                 AND (QFOPRODFORN.CDFORNECED= PRODFORNCOMP.CDFORNECED)
                                                                 AND ((QFOPRODFORN.IDFORNAPROV = 'N' AND
                                                                       QFOPRODFORN.IDFORNAUTOR = 'N') OR ((QFOPRODFORN.IDFORNAPROV = 'S') AND
                                                                                                          ((PARASUPRI.IDULTIDTVALQ = 'M' AND
                                                                                                            TO_DATE(SYSDATE) > LAST_DAY(QFOPRODFORN.DTVALPRFORN))
                                                                                                      OR (PARASUPRI.IDULTIDTVALQ = 'D' AND
                                                                                                          TO_DATE(SYSDATE) > QFOPRODFORN.DTVALPRFORN)))))
                              AND EXISTS ( SELECT 1
                                             FROM MARCFORNPEDCOL
                                            WHERE MARCFORNPEDCOL.CDFORNECED = FORNECEDOR.CDFORNECED
                                              AND MARCFORNPEDCOL.CDMARCA    = MARCA.CDMARCA
                                              
                                            UNION ALL
                                           SELECT 1
                                             FROM DUAL
                                            WHERE NOT EXISTS (SELECT 1
                                                                FROM MARCFORNPEDCOL
                                                               WHERE MARCFORNPEDCOL.CDFORNECED = FORNECEDOR.CDFORNECED))
                         ) COMPLETO,
                         ( SELECT FILIAL.CDREGIAO, PRODACOMPRAR.CDFILIAL, PRODACOMPRAR.CDPRODUTO, NVL(PRODACOMPRAR.QTACOMPRAR, 0) AS QTACOMPRAR
                             FROM ( SELECT COMP.CDFILIAL, COMP.DTPROGENTR, COMP.CDPRODUTO, ROUND(COMP.QTDECOMP-NVL(JACOMP.QTDECOMP/COMP.VRFATOCONV,0), 5) AS QTACOMPRAR
                                      FROM ( SELECT ITEMSOLI.CDFILSOLI AS CDFILIAL, ITEMSOLI.DTPROGENTR, ESTOQUE.CDPRODUTO, ESTOQUE.CDPRODESTO,
                                                     ESTOQUE.VRFATOCONV, SUM(ITEMSOLI.QTSOLIPROD*PRODUTO.VRFATOCONV/ESTOQUE.VRFATOCONV) AS QTDECOMP
                                                FROM PRODUTO ESTOQUE, PRODUTO, ITEMSOLI
                                               WHERE (ITEMSOLI.IDITMCONS = 'N')
                                                 AND (NVL(ITEMSOLI.IDSOLIAPROV,'S') = 'S')
                                                 AND (ITEMSOLI.CDPRODUTO = PRODUTO.CDPRODUTO)
                                                 AND (PRODUTO.CDPRODESTO = ESTOQUE.CDPRODESTO)
                                                 AND (ESTOQUE.CDARVPROD   BETWEEN P_CDPRODINI AND P_CDPRODFIN OR P_TPRODUTO = 'T')
                                                 AND (ITEMSOLI.DTPROGENTR BETWEEN P_DTINI AND P_DTFIN)
                                               GROUP BY ITEMSOLI.CDFILSOLI, ITEMSOLI.DTPROGENTR, ESTOQUE.CDPRODESTO, ESTOQUE.CDPRODUTO,
                                                        ESTOQUE.VRFATOCONV
                                           ) COMP,
                                           ( SELECT ITEMAUTF.CDFILDEST AS CDFILIAL, ITEMAUTF.DTENTRITMSOL, PRODUTO.CDPRODESTO,
                                                    SUM(ITEMAUTF.QTPROGENTAF*PRODUTO.VRFATOCONV) AS QTDECOMP
                                               FROM PRODUTO, ITEMAUTF, AUTOFORNE
                                              WHERE (AUTOFORNE.CDFILDEST = ITEMAUTF.CDFILDEST)
                                                AND (AUTOFORNE.CDFILLANC = ITEMAUTF.CDFILLANC)
                                                AND (AUTOFORNE.NRAUTOFORN = ITEMAUTF.NRAUTOFORN)
                                                AND (ITEMAUTF.CDPRODUTO = PRODUTO.CDPRODUTO)
                                                AND (AUTOFORNE.IDSITUATUAAF IS NULL)
                                                AND (AUTOFORNE.IDAFFORALIM = 'N')
                                                AND (AUTOFORNE.IDAUTOFORNEX = 'N')
                                                AND (ITEMAUTF.DTENTRITMSOL BETWEEN P_DTINI AND P_DTFIN)
                                                AND NVL(AUTOFORNE.IDBAIXAAF, '0') <> '5'
                                              GROUP BY ITEMAUTF.CDFILDEST, ITEMAUTF.DTENTRITMSOL, PRODUTO.CDPRODESTO
                                           ) JACOMP
                                     WHERE COMP.CDFILIAL = JACOMP.CDFILIAL (+)
                                       AND COMP.DTPROGENTR = JACOMP.DTENTRITMSOL (+)
                                       AND COMP.CDPRODESTO = JACOMP.CDPRODESTO (+)
                                       AND ROUND(COMP.QTDECOMP-NVL(JACOMP.QTDECOMP/COMP.VRFATOCONV,0), 5) > 0
                                  ) PRODACOMPRAR, FILIAL
                            WHERE ((FILIAL.CDFILCENTCMP = P_CDFILIAL) OR (FILIAL.CDFILIAL = P_CDFILIAL AND FILIAL.CDFILCENTCMP IS NULL))
                              AND INSTR(NVL(P_CDREGIAO, FILIAL.CDREGIAO), FILIAL.CDREGIAO) <> 0
                              AND (FILIAL.CDFILIAL = PRODACOMPRAR.CDFILIAL)
                         ) PRODACOMPRAR
                   WHERE PARASUPRI.CDFILIAL = P_CDFILIAL
                     AND NVL(PARASUPRI.IDCONSPRSOL, 'N') <> 'S'
                     AND COMPLETO.CDPRODUTO = PRODACOMPRAR.CDPRODUTO(+)
                     AND COMPLETO.CDREGIAO  = PRODACOMPRAR.CDREGIAO(+)
                     AND FILI.CDFILIAL = P_CDFILIPROC
                     AND ((FILI.IDFUNCAOFILI IS NULL) OR (FILI.IDFUNCAOFILI = 'O'))
                     AND NOT EXISTS (SELECT 1
                                       FROM REFORFIL
                                      WHERE REFORFIL.CDFORNECED = COMPLETO.CDFORNECED
                                        AND REFORFIL.CDFILIAL  = PRODACOMPRAR.CDFILIAL
                                        AND REFORFIL.CDPERIENTR IS NULL)

                  UNION ALL

                  SELECT COMPLETO.CDREGIAO, COMPLETO.NMREGIAO, COMPLETO.CDOPERADOR, COMPLETO.NMOPERADOR,
                         COMPLETO.CDFORNECED, COMPLETO.NRINSJURFORN, COMPLETO.IDTPIJURFORN, COMPLETO.NMRAZSOCFORN,
                         COMPLETO.NMFANTFORN, COMPLETO.CDPRODUTO, COMPLETO.NMPRODUTO, COMPLETO.SGUNIDADE,
                         COMPLETO.CDPRODESTO, COMPLETO.IDTPFRETFORN, COMPLETO.CDMARCA, COMPLETO.NMMARCA,
                         COMPLETO.CDMARCAPADR, COMPLETO.CDARVPROD, NVL(PRODACOMPRAR.QTACOMPRAR, 0) AS QTACOMPRAR
                    FROM PARASUPRI,
                         ( SELECT REGIAO.CDREGIAO, REGIAO.NMREGIAO, OPERADOR.CDOPERADOR, OPERADOR.NMOPERADOR,
                                  PRODFORNCOMP.CDFORNECED, FORNECEDOR.NRINSJURFORN, FORNECEDOR.IDTPIJURFORN, FORNECEDOR.NMRAZSOCFORN,
                                  FORNECEDOR.NMFANTFORN, PRODUTO.CDPRODUTO, PRODUTO.NMPRODUTO, PRODUTO.SGUNIDADE,
                                  PRODUTO.CDPRODESTO, FORNECEDOR.IDTPFRETFORN, NVL(MARCPRODCOMP.CDMARCA, PARASUPRI.CDMARCA) AS CDMARCA,
                                  REPLACE(REPLACE(MARCA.NMMARCA, CHR(13), ''), CHR(10), '') NMMARCA,
                                  PRODUTO.CDARVPROD, PARASUPRI.CDMARCA AS CDMARCAPADR
                             FROM OPERADOR, MARCA, PRODUTO, PRODFORNCOMP, MARCPRODCOMP, FORNECEDOR,
                                  REGIAO, PARASUPRI
                            WHERE INSTR(NVL(P_CDCOMPRADOR, OPERADOR.CDOPERADOR), OPERADOR.CDOPERADOR) <> 0
                              AND PARASUPRI.CDFILIAL = P_CDFILIAL
                              AND ((NVL(PARASUPRI.IDUTLPROCMP, 'N') = 'N') OR (NVL(PARASUPRI.IDUTLPROCMP, 'N') = 'S' AND
                                                                               PRODUTO.CDPRODUTO <> PRODUTO.CDPRODESTO))
                              AND ((PRODUTO.CDARVPROD BETWEEN P_CDPRODINI AND P_CDPRODFIN) OR (P_TPRODUTO = 'T'))
                              AND INSTR(NVL(P_CDFORNECED, FORNECEDOR.CDFORNECED), FORNECEDOR.CDFORNECED) <> 0
                              AND INSTR(NVL(P_CDREGIAO, REGIAO.CDREGIAO), REGIAO.CDREGIAO) <> 0
                              AND NVL(MARCPRODCOMP.CDMARCA, PARASUPRI.CDMARCA) IS NOT NULL
                              AND INSTR(NVL(P_CDMARCA, MARCPRODCOMP.CDMARCA(+)), MARCPRODCOMP.CDMARCA(+))<> 0
                              AND FORNECEDOR.CDFORNECED = PRODFORNCOMP.CDFORNECED
                              AND PRODUTO.CDPRODUTO = PRODFORNCOMP.CDPRODCOMPL
                              AND PRODFORNCOMP.CDPRODCOMPL = MARCPRODCOMP.CDPRMARCOMPL(+)
                              AND MARCA.IDMARCAATIVA       = 'A'
                              AND MARCA.CDMARCA = NVL(MARCPRODCOMP.CDMARCA, PARASUPRI.CDMARCA)
                              AND (NVL(PRODUTO.IDPRODATIVPR, 'N') =  'S')
                              AND NOT EXISTS ( SELECT REFOREG.CDREGIAO, REFOREG.CDFORNECED
                                                 FROM REFOREG
                                                WHERE REFOREG.CDREGIAO = REGIAO.CDREGIAO
                                                  AND REFOREG.CDFORNECED = FORNECEDOR.CDFORNECED)
                              AND EXISTS ( SELECT PRODCOMP.CDPRODUTO, PRODCOMP.CDOPERADOR
                                             FROM PRODCOMP, PRODUTO PR
                                            WHERE PRODCOMP.CDPRODUTO = PR.CDPRODUTO
                                              AND PRODUTO.CDARVPROD LIKE PR.CDARVPROD || '%'
                                              AND OPERADOR.CDOPERADOR = PRODCOMP.CDOPERADOR)
                              AND NOT EXISTS ( SELECT QUALIFICACAO.CDQUALIF   /* QUALIFICACAO DO FORNECEDOR */
                                                 FROM QUALIFICACAO
                                                WHERE (FORNECEDOR.CDQUALIF       = QUALIFICACAO.CDQUALIF)
                                                  AND (FORNECEDOR.IDFORNAUTO     = 'N')
                                                  AND ((QUALIFICACAO.IDPERCOTCMP = '2') OR ((PARASUPRI.IDULTIDTVALQ  = 'D' AND
                                                                                             TO_DATE(SYSDATE) > FORNECEDOR.DTVALQUALIF)
                                                                                        OR (PARASUPRI.IDULTIDTVALQ = 'M' AND
                                                                                            TO_DATE(SYSDATE) > LAST_DAY(FORNECEDOR.DTVALQUALIF)))))
                              AND NOT EXISTS ( SELECT QFOMARPROD.CDMARCA   /* QUALIFICACAO DE PRODUTO/MARCA */
                                                 FROM QFOMARPROD
                                                WHERE (QFOMARPROD.CDPRODUTO    = PRODUTO.CDPRODUTO)
                                                  AND (QFOMARPROD.CDMARCA      = NVL(MARCPRODCOMP.CDMARCA, PARASUPRI.CDMARCA))
                                                  AND ((QFOMARPROD.IDAPRMARPRO = 'N' AND
                                                        QFOMARPROD.IDAUTMARPRO = 'N') OR ((QFOMARPROD.IDAPRMARPRO = 'S') AND
                                                                                          ((PARASUPRI.IDULTIDTVALQ = 'M' AND
                                                                                            TO_DATE(SYSDATE) > LAST_DAY(QFOMARPROD.DTVALAPROVA))
                                                                                      OR (PARASUPRI.IDULTIDTVALQ = 'D' AND
                                                                                          TO_DATE(SYSDATE) > QFOMARPROD.DTVALAPROVA)))))
                              AND EXISTS ( SELECT QFOMARPROD.CDMARCA /* QUALIFICACAO DE PRODUTO/MARCA */
                                             FROM QFOMARPROD
                                            WHERE QFOMARPROD.CDPRODUTO = PRODUTO.CDPRODUTO
                                              AND QFOMARPROD.CDMARCA   = NVL(MARCPRODCOMP.CDMARCA, PARASUPRI.CDMARCA)
                                            UNION
                                           SELECT PARASUPRI.CDMARCA
                                             FROM PARASUPRI
                                            WHERE PARASUPRI.CDFILIAL    = P_CDFILIAL
                                              AND (PARASUPRI.IDMARSEMQUA = 'N' OR PARASUPRI.IDMARSEMQUA IS NULL))
                              AND NOT EXISTS (SELECT QFOPRODFORN.CDPRODUTO /* QUALIFICACAO DE PRODUTO/FORNECEDOR */
                                                FROM QFOPRODFORN
                                               WHERE (QFOPRODFORN.CDPRODUTO = PRODFORNCOMP.CDPRODCOMPL)
                                                 AND (QFOPRODFORN.CDFORNECED= PRODFORNCOMP.CDFORNECED)
                                                 AND ((QFOPRODFORN.IDFORNAPROV = 'N' AND
                                                       QFOPRODFORN.IDFORNAUTOR = 'N') OR ((QFOPRODFORN.IDFORNAPROV = 'S') AND
                                                                                          ((PARASUPRI.IDULTIDTVALQ = 'M' AND
                                                                                            TO_DATE(SYSDATE) > LAST_DAY(QFOPRODFORN.DTVALPRFORN))
                                                                                      OR (PARASUPRI.IDULTIDTVALQ = 'D' AND
                                                                                          TO_DATE(SYSDATE) > QFOPRODFORN.DTVALPRFORN)))))
                              AND EXISTS ( SELECT 1
                                             FROM MARCFORNPEDCOL
                                            WHERE MARCFORNPEDCOL.CDFORNECED = FORNECEDOR.CDFORNECED
                                              AND MARCFORNPEDCOL.CDMARCA    = MARCA.CDMARCA
                                            UNION ALL
                                           SELECT 1
                                             FROM DUAL
                                            WHERE NOT EXISTS ( SELECT 1
                                                                 FROM MARCFORNPEDCOL
                                                                WHERE MARCFORNPEDCOL.CDFORNECED = FORNECEDOR.CDFORNECED))
                         ) COMPLETO,
                         ( SELECT FILIAL.CDREGIAO, PRODACOMPRAR.CDFILIAL, PRODACOMPRAR.CDPRODUTO, NVL(PRODACOMPRAR.QTACOMPRAR, 0) AS QTACOMPRAR
                             FROM ( SELECT COMP.CDFILIAL, COMP.DTPROGENTR, COMP.CDPRODUTO,
                                           ROUND(COMP.QTDECOMP-NVL(JACOMP.QTDECOMP/COMP.VRFATOCONV,0), 5) AS QTACOMPRAR
                                      FROM ( SELECT ITEMSOLI.CDFILSOLI AS CDFILIAL, ITEMSOLI.DTPROGENTR, ESTOQUE.CDPRODUTO, ESTOQUE.CDPRODESTO,
                                                    ESTOQUE.VRFATOCONV, SUM(ITEMSOLI.QTSOLIPROD*PRODUTO.VRFATOCONV/ESTOQUE.VRFATOCONV) AS QTDECOMP
                                               FROM PRODUTO ESTOQUE, PRODUTO, ITEMSOLI
                                              WHERE (ITEMSOLI.IDITMCONS = 'N')
                                                AND (NVL(ITEMSOLI.IDSOLIAPROV,'S') = 'S')
                                                AND (ITEMSOLI.CDPRODUTO = PRODUTO.CDPRODUTO)
                                                AND (PRODUTO.CDPRODESTO = ESTOQUE.CDPRODESTO)
                                                AND (ESTOQUE.CDARVPROD   BETWEEN P_CDPRODINI AND P_CDPRODFIN OR P_TPRODUTO = 'T')
                                                AND (ITEMSOLI.DTPROGENTR BETWEEN P_DTINI AND P_DTFIN)
                                              GROUP BY ITEMSOLI.CDFILSOLI, ITEMSOLI.DTPROGENTR, ESTOQUE.CDPRODESTO, ESTOQUE.CDPRODUTO,
                                                       ESTOQUE.VRFATOCONV
                                           ) COMP,
                                           ( SELECT ITEMAUTF.CDFILDEST AS CDFILIAL, ITEMAUTF.DTENTRITMSOL, PRODUTO.CDPRODESTO,
                                                    SUM(ITEMAUTF.QTPROGENTAF*PRODUTO.VRFATOCONV) AS QTDECOMP
                                               FROM PRODUTO, ITEMAUTF, AUTOFORNE
                                              WHERE (AUTOFORNE.CDFILDEST = ITEMAUTF.CDFILDEST)
                                                AND (AUTOFORNE.CDFILLANC = ITEMAUTF.CDFILLANC)
                                                AND (AUTOFORNE.NRAUTOFORN = ITEMAUTF.NRAUTOFORN)
                                                AND (ITEMAUTF.CDPRODUTO = PRODUTO.CDPRODUTO)
                                                AND (AUTOFORNE.IDSITUATUAAF IS NULL)
                                                AND (AUTOFORNE.IDAFFORALIM = 'N')
                                                AND (AUTOFORNE.IDAUTOFORNEX = 'N')
                                                AND (ITEMAUTF.DTENTRITMSOL BETWEEN P_DTINI AND P_DTFIN)
                                                AND NVL(AUTOFORNE.IDBAIXAAF, '0') <> '5'
                                              GROUP BY ITEMAUTF.CDFILDEST, ITEMAUTF.DTENTRITMSOL, PRODUTO.CDPRODESTO
                                           ) JACOMP
                                     WHERE COMP.CDFILIAL = JACOMP.CDFILIAL (+)
                                       AND COMP.DTPROGENTR = JACOMP.DTENTRITMSOL (+)
                                       AND COMP.CDPRODESTO = JACOMP.CDPRODESTO (+)
                                       AND ROUND(COMP.QTDECOMP-NVL(JACOMP.QTDECOMP/COMP.VRFATOCONV,0), 5) > 0
                                  ) PRODACOMPRAR, FILIAL
                            WHERE (FILIAL.CDFILCENTCMP = P_CDFILIAL OR FILIAL.CDFILIAL = P_CDFILIAL AND FILIAL.CDFILCENTCMP IS NULL)
                              AND INSTR(NVL(P_CDREGIAO, FILIAL.CDREGIAO), FILIAL.CDREGIAO) <> 0
                              AND (FILIAL.CDFILIAL = PRODACOMPRAR.CDFILIAL)
                         ) PRODACOMPRAR,
                         ( SELECT PARAMPRODSUP.CDREGIAO, PARAMPRODSUP.CDPRODUTO
                             FROM PARAMPRODSUP, FILIAL
                            WHERE FILIAL.CDFILIAL = P_CDFILIPROC
                              AND FILIAL.IDFUNCAOFILI = 'C'
                              AND FILIAL.CDFILIAL = PARAMPRODSUP.CDFILICTRL
                              AND PARAMPRODSUP.IDFILINEGCOR = 'S'
                            UNION ALL
                           SELECT PARAMPRODSUP.CDREGIAO, PARAMPRODSUP.CDPRODUTO
                             FROM PARAMPRODSUP, FILIAL
                            WHERE FILIAL.CDFILIAL = P_CDFILIPROC
                              AND FILIAL.IDFUNCAOFILI = 'R'
                              AND FILIAL.CDFILIAL = PARAMPRODSUP.CDFILICTRL
                              AND PARAMPRODSUP.IDFILINEGREG = 'S'
                         ) PARAMPRODSUP
                   WHERE PARASUPRI.CDFILIAL = P_CDFILIAL
                     AND NVL(PARASUPRI.IDCONSPRSOL, 'N') <> 'S'
                     AND COMPLETO.CDPRODUTO = PRODACOMPRAR.CDPRODUTO(+)
                     AND COMPLETO.CDREGIAO  = PRODACOMPRAR.CDREGIAO(+)
                     AND PARAMPRODSUP.CDPRODUTO = COMPLETO.CDPRODUTO
                     AND PARAMPRODSUP.CDREGIAO  = COMPLETO.CDREGIAO
                     AND NOT EXISTS ( SELECT 1
                                        FROM REFORFIL
                                       WHERE REFORFIL.CDFORNECED = COMPLETO.CDFORNECED
                                         AND REFORFIL.CDFILIAL  = PRODACOMPRAR.CDFILIAL
                                         AND REFORFIL.CDPERIENTR IS NULL)

         /*######################### IDCONSPRSOL DA PARASUPRI ###############################################*/
                  UNION ALL

                  SELECT COMPLETO.CDREGIAO, COMPLETO.NMREGIAO, COMPLETO.CDOPERADOR, COMPLETO.NMOPERADOR,
                         COMPLETO.CDFORNECED, COMPLETO.NRINSJURFORN, COMPLETO.IDTPIJURFORN, COMPLETO.NMRAZSOCFORN,
                         COMPLETO.NMFANTFORN, COMPLETO.CDPRODUTO, COMPLETO.NMPRODUTO, COMPLETO.SGUNIDADE,
                         COMPLETO.CDPRODESTO, COMPLETO.IDTPFRETFORN, COMPLETO.CDMARCA, COMPLETO.NMMARCA,
                         COMPLETO.CDMARCAPADR, COMPLETO.CDARVPROD, NVL(PRODACOMPRAR.QTACOMPRAR, 0) AS QTACOMPRAR
                    FROM PARASUPRI, FILIAL FILI,
                         ( SELECT REGIAO.CDREGIAO, REGIAO.NMREGIAO, OPERADOR.CDOPERADOR, OPERADOR.NMOPERADOR,
                                  PRODFORNCOMP.CDFORNECED, FORNECEDOR.NRINSJURFORN, FORNECEDOR.IDTPIJURFORN,
                                  FORNECEDOR.NMRAZSOCFORN, FORNECEDOR.NMFANTFORN, PRODUTO.CDPRODUTO,
                                  PRODUTO.NMPRODUTO, PRODUTO.SGUNIDADE, PRODUTO.CDPRODESTO, FORNECEDOR.IDTPFRETFORN,
                                  NVL(MARCPRODCOMP.CDMARCA, PARASUPRI.CDMARCA) AS CDMARCA,
                                  REPLACE(REPLACE(MARCA.NMMARCA, CHR(13), ''), CHR(10), '') NMMARCA,
                                  PRODUTO.CDARVPROD, PARASUPRI.CDMARCA AS CDMARCAPADR
                             FROM OPERADOR, MARCA, PRODUTO, PRODFORNCOMP, MARCPRODCOMP, FORNECEDOR,
                                  REGIAO, PARASUPRI
                            WHERE INSTR(NVL(P_CDCOMPRADOR, OPERADOR.CDOPERADOR), OPERADOR.CDOPERADOR) <> 0
                              AND PARASUPRI.CDFILIAL = P_CDFILIAL
                              AND ((NVL(PARASUPRI.IDUTLPROCMP, 'N') = 'N') OR (NVL(PARASUPRI.IDUTLPROCMP, 'N') = 'S' AND
                                                                               PRODUTO.CDPRODUTO <> PRODUTO.CDPRODESTO))
                              AND ((PRODUTO.CDARVPROD BETWEEN P_CDPRODINI AND P_CDPRODFIN) OR (P_TPRODUTO = 'T'))
                              AND INSTR(NVL(P_CDFORNECED, FORNECEDOR.CDFORNECED), FORNECEDOR.CDFORNECED) <> 0
                              AND INSTR(NVL(P_CDREGIAO, REGIAO.CDREGIAO), REGIAO.CDREGIAO) <> 0
                              AND NVL(MARCPRODCOMP.CDMARCA, PARASUPRI.CDMARCA) IS NOT NULL
                              AND MARCA.IDMARCAATIVA       = 'A'
                              AND INSTR(NVL(P_CDMARCA, MARCPRODCOMP.CDMARCA(+)), MARCPRODCOMP.CDMARCA(+))<> 0
                              AND FORNECEDOR.CDFORNECED = PRODFORNCOMP.CDFORNECED
                              AND PRODUTO.CDPRODUTO = PRODFORNCOMP.CDPRODCOMPL
                              AND PRODFORNCOMP.CDPRODCOMPL = MARCPRODCOMP.CDPRMARCOMPL(+)
                              AND MARCA.CDMARCA = NVL(MARCPRODCOMP.CDMARCA, PARASUPRI.CDMARCA)
                              AND (NVL(PRODUTO.IDPRODATIVPR, 'N') =  'S')
                              AND NOT EXISTS ( SELECT REFOREG.CDREGIAO, REFOREG.CDFORNECED
                                                 FROM REFOREG
                                                WHERE REFOREG.CDREGIAO = REGIAO.CDREGIAO
                                                  AND REFOREG.CDFORNECED = FORNECEDOR.CDFORNECED)
                              AND EXISTS ( SELECT PRODCOMP.CDPRODUTO, PRODCOMP.CDOPERADOR
                                             FROM PRODCOMP, PRODUTO PR
                                            WHERE PRODCOMP.CDPRODUTO = PR.CDPRODUTO
                                              AND PRODUTO.CDARVPROD LIKE PR.CDARVPROD || '%'
                                              AND OPERADOR.CDOPERADOR = PRODCOMP.CDOPERADOR)
                              AND NOT EXISTS ( SELECT QUALIFICACAO.CDQUALIF   /* QUALIFICACAO DO FORNECEDOR */
                                                 FROM QUALIFICACAO
                                                WHERE (FORNECEDOR.CDQUALIF       = QUALIFICACAO.CDQUALIF)
                                                  AND (FORNECEDOR.IDFORNAUTO     = 'N')
                                                  AND ((QUALIFICACAO.IDPERCOTCMP = '2') OR ((PARASUPRI.IDULTIDTVALQ  = 'D' AND
                                                                                             TO_DATE(SYSDATE) > FORNECEDOR.DTVALQUALIF)
                                                                                        OR (PARASUPRI.IDULTIDTVALQ = 'M' AND
                                                                                            TO_DATE(SYSDATE) > LAST_DAY(FORNECEDOR.DTVALQUALIF)))))
                              AND NOT EXISTS ( SELECT QFOMARPROD.CDMARCA   /* QUALIFICACAO DE PRODUTO/MARCA */
                                                 FROM QFOMARPROD
                                                WHERE (QFOMARPROD.CDPRODUTO    = PRODUTO.CDPRODUTO)
                                                  AND (QFOMARPROD.CDMARCA      = NVL(MARCPRODCOMP.CDMARCA, PARASUPRI.CDMARCA))
                                                  AND ((QFOMARPROD.IDAPRMARPRO = 'N' AND
                                                        QFOMARPROD.IDAUTMARPRO = 'N') OR ((QFOMARPROD.IDAPRMARPRO = 'S') AND
                                                                                          ((PARASUPRI.IDULTIDTVALQ = 'M' AND
                                                                                           TO_DATE(SYSDATE) > LAST_DAY(QFOMARPROD.DTVALAPROVA))
                                                                                      OR (PARASUPRI.IDULTIDTVALQ = 'D' AND TO_DATE(SYSDATE) > QFOMARPROD.DTVALAPROVA)))))
                              AND EXISTS ( SELECT QFOMARPROD.CDMARCA /* QUALIFICACAO DE PRODUTO/MARCA */
                                             FROM QFOMARPROD
                                            WHERE QFOMARPROD.CDPRODUTO = PRODUTO.CDPRODUTO
                                              AND QFOMARPROD.CDMARCA   = NVL(MARCPRODCOMP.CDMARCA, PARASUPRI.CDMARCA)
                                            UNION
                                           SELECT PARASUPRI.CDMARCA
                                             FROM PARASUPRI
                                            WHERE PARASUPRI.CDFILIAL    = P_CDFILIAL
                                              AND (PARASUPRI.IDMARSEMQUA = 'N' OR PARASUPRI.IDMARSEMQUA IS NULL))
                              AND NOT EXISTS ( SELECT QFOPRODFORN.CDPRODUTO /* QUALIFICACAO DE PRODUTO/FORNECEDOR */
                                                 FROM QFOPRODFORN
                                                WHERE (QFOPRODFORN.CDPRODUTO = PRODFORNCOMP.CDPRODCOMPL)
                                                  AND (QFOPRODFORN.CDFORNECED= PRODFORNCOMP.CDFORNECED)
                                                  AND ((QFOPRODFORN.IDFORNAPROV = 'N' AND
                                                        QFOPRODFORN.IDFORNAUTOR = 'N') OR ((QFOPRODFORN.IDFORNAPROV = 'S') AND
                                                                                           ((PARASUPRI.IDULTIDTVALQ = 'M' AND
                                                                                             TO_DATE(SYSDATE) > LAST_DAY(QFOPRODFORN.DTVALPRFORN))
                                                                                             OR (PARASUPRI.IDULTIDTVALQ = 'D' AND
                                                                                                 TO_DATE(SYSDATE) > QFOPRODFORN.DTVALPRFORN)))))
                              AND EXISTS ( SELECT 1
                                             FROM MARCFORNPEDCOL
                                            WHERE MARCFORNPEDCOL.CDFORNECED = FORNECEDOR.CDFORNECED
                                              AND MARCFORNPEDCOL.CDMARCA    = MARCA.CDMARCA
                                            UNION ALL
                                           SELECT 1
                                             FROM DUAL
                                            WHERE NOT EXISTS ( SELECT 1
                                                                 FROM MARCFORNPEDCOL
                                                                WHERE MARCFORNPEDCOL.CDFORNECED = FORNECEDOR.CDFORNECED))
                         ) COMPLETO,
                         ( SELECT FILIAL.CDREGIAO, PRODACOMPRAR.CDFILIAL, PRODACOMPRAR.CDPRODUTO, NVL(PRODACOMPRAR.QTACOMPRAR, 0) AS QTACOMPRAR
                             FROM ( SELECT COMP.CDFILIAL, COMP.DTPROGENTR, COMP.CDPRODUTO,
                                           ROUND((COMP.QTDECOMP-NVL(JACOMP.QTDECOMP,0)) / COMP.VRFATOCONV, 5) AS QTACOMPRAR
                                      FROM ( SELECT ITEMSOLI.CDFILSOLI AS CDFILIAL, ITEMSOLI.DTPROGENTR, PRODUTO.CDPRODUTO, PRODUTO.CDPRODESTO,
                                                    PRODUTO.VRFATOCONV, SUM(ITEMSOLI.QTSOLIPROD*PRODUTO.VRFATOCONV) AS QTDECOMP
                                               FROM PRODUTO, ITEMSOLI
                                              WHERE (ITEMSOLI.IDITMCONS = 'N')
                                                AND (NVL(ITEMSOLI.IDSOLIAPROV,'S') = 'S')
                                                AND (ITEMSOLI.CDPRODUTO = PRODUTO.CDPRODUTO)
                                                AND (PRODUTO.CDARVPROD   BETWEEN P_CDPRODINI AND P_CDPRODFIN OR P_TPRODUTO = 'T')
                                                AND (ITEMSOLI.DTPROGENTR BETWEEN P_DTINI AND P_DTFIN)
                                              GROUP BY ITEMSOLI.CDFILSOLI, ITEMSOLI.DTPROGENTR, PRODUTO.CDPRODESTO, PRODUTO.CDPRODUTO, PRODUTO.VRFATOCONV
                                           ) COMP,
                                           ( SELECT ITEMAUTF.CDFILDEST AS CDFILIAL, ITEMAUTF.DTENTRITMSOL, PRODUTO.CDPRODESTO,
                                                    SUM(ITEMAUTF.QTPROGENTAF*PRODUTO.VRFATOCONV) AS QTDECOMP
                                               FROM PRODUTO, ITEMAUTF, AUTOFORNE
                                              WHERE (AUTOFORNE.CDFILDEST = ITEMAUTF.CDFILDEST)
                                                AND (AUTOFORNE.CDFILLANC = ITEMAUTF.CDFILLANC)
                                                AND (AUTOFORNE.NRAUTOFORN = ITEMAUTF.NRAUTOFORN)
                                                AND (ITEMAUTF.CDPRODUTO = PRODUTO.CDPRODUTO)
                                                AND (AUTOFORNE.IDSITUATUAAF IS NULL)
                                                AND (AUTOFORNE.IDAFFORALIM = 'N')
                                                AND (AUTOFORNE.IDAUTOFORNEX = 'N')
                                                AND (ITEMAUTF.DTENTRITMSOL BETWEEN P_DTINI AND P_DTFIN)
                                                AND NVL(AUTOFORNE.IDBAIXAAF, '0') <> '5'
                                              GROUP BY ITEMAUTF.CDFILDEST, ITEMAUTF.DTENTRITMSOL, PRODUTO.CDPRODESTO
                                           ) JACOMP
                                     WHERE COMP.CDFILIAL = JACOMP.CDFILIAL (+)
                                       AND COMP.DTPROGENTR = JACOMP.DTENTRITMSOL (+)
                                       AND COMP.CDPRODESTO = JACOMP.CDPRODESTO (+)
                                       AND ROUND((COMP.QTDECOMP-NVL(JACOMP.QTDECOMP,0)) / COMP.VRFATOCONV, 5) > 0
                                  ) PRODACOMPRAR, FILIAL
                            WHERE (FILIAL.CDFILCENTCMP = P_CDFILIAL OR FILIAL.CDFILIAL = P_CDFILIAL AND FILIAL.CDFILCENTCMP IS NULL)
                              AND INSTR(NVL(P_CDREGIAO, FILIAL.CDREGIAO), FILIAL.CDREGIAO) <> 0
                              AND (FILIAL.CDFILIAL = PRODACOMPRAR.CDFILIAL)
                         ) PRODACOMPRAR
                   WHERE PARASUPRI.CDFILIAL = P_CDFILIAL
                     AND NVL(PARASUPRI.IDCONSPRSOL, 'N') = 'S'
                     AND COMPLETO.CDPRODUTO = PRODACOMPRAR.CDPRODUTO(+)
                     AND COMPLETO.CDREGIAO  = PRODACOMPRAR.CDREGIAO(+)
                     AND FILI.CDFILIAL = P_CDFILIPROC
                     AND ((FILI.IDFUNCAOFILI IS NULL) OR (FILI.IDFUNCAOFILI = 'O'))
                     AND NOT EXISTS ( SELECT 1
                                        FROM REFORFIL
                                       WHERE REFORFIL.CDFORNECED = COMPLETO.CDFORNECED
                                         AND REFORFIL.CDFILIAL  = PRODACOMPRAR.CDFILIAL
                                         AND REFORFIL.CDPERIENTR IS NULL)

                  UNION ALL

                  SELECT COMPLETO.CDREGIAO, COMPLETO.NMREGIAO, COMPLETO.CDOPERADOR, COMPLETO.NMOPERADOR,
                         COMPLETO.CDFORNECED, COMPLETO.NRINSJURFORN, COMPLETO.IDTPIJURFORN, COMPLETO.NMRAZSOCFORN,
                         COMPLETO.NMFANTFORN, COMPLETO.CDPRODUTO, COMPLETO.NMPRODUTO, COMPLETO.SGUNIDADE,
                         COMPLETO.CDPRODESTO, COMPLETO.IDTPFRETFORN, COMPLETO.CDMARCA, COMPLETO.NMMARCA,
                         COMPLETO.CDMARCAPADR, COMPLETO.CDARVPROD, NVL(PRODACOMPRAR.QTACOMPRAR, 0) AS QTACOMPRAR
                    FROM PARASUPRI,
                         ( SELECT REGIAO.CDREGIAO, REGIAO.NMREGIAO, OPERADOR.CDOPERADOR, OPERADOR.NMOPERADOR,
                                  PRODFORNCOMP.CDFORNECED, FORNECEDOR.NRINSJURFORN, FORNECEDOR.IDTPIJURFORN, FORNECEDOR.NMRAZSOCFORN,
                                  FORNECEDOR.NMFANTFORN, PRODUTO.CDPRODUTO, PRODUTO.NMPRODUTO, PRODUTO.SGUNIDADE, PRODUTO.CDPRODESTO,
                                  FORNECEDOR.IDTPFRETFORN, NVL(MARCPRODCOMP.CDMARCA, PARASUPRI.CDMARCA) AS CDMARCA,
                                  REPLACE(REPLACE(MARCA.NMMARCA, CHR(13), ''), CHR(10), '') NMMARCA,
                                  PRODUTO.CDARVPROD, PARASUPRI.CDMARCA AS CDMARCAPADR
                             FROM OPERADOR, MARCA, PRODUTO, PRODFORNCOMP, MARCPRODCOMP, FORNECEDOR, REGIAO, PARASUPRI
                            WHERE INSTR(NVL(P_CDCOMPRADOR, OPERADOR.CDOPERADOR), OPERADOR.CDOPERADOR) <> 0
                              AND PARASUPRI.CDFILIAL = P_CDFILIAL
                              AND ((NVL(PARASUPRI.IDUTLPROCMP, 'N') = 'N') OR (NVL(PARASUPRI.IDUTLPROCMP, 'N') = 'S' AND
                                                                               PRODUTO.CDPRODUTO <> PRODUTO.CDPRODESTO))
                              AND ((PRODUTO.CDARVPROD BETWEEN P_CDPRODINI AND P_CDPRODFIN) OR (P_TPRODUTO = 'T'))
                              AND INSTR(NVL(P_CDFORNECED, FORNECEDOR.CDFORNECED), FORNECEDOR.CDFORNECED) <> 0
                              AND INSTR(NVL(P_CDREGIAO, REGIAO.CDREGIAO), REGIAO.CDREGIAO) <> 0
                              AND NVL(MARCPRODCOMP.CDMARCA, PARASUPRI.CDMARCA) IS NOT NULL
                              AND MARCA.IDMARCAATIVA       = 'A'
                              AND INSTR(NVL(P_CDMARCA, MARCPRODCOMP.CDMARCA(+)), MARCPRODCOMP.CDMARCA(+))<> 0
                              AND FORNECEDOR.CDFORNECED = PRODFORNCOMP.CDFORNECED
                              AND PRODUTO.CDPRODUTO = PRODFORNCOMP.CDPRODCOMPL
                              AND PRODFORNCOMP.CDPRODCOMPL = MARCPRODCOMP.CDPRMARCOMPL(+)
                              AND MARCA.CDMARCA = NVL(MARCPRODCOMP.CDMARCA, PARASUPRI.CDMARCA)
                              AND (NVL(PRODUTO.IDPRODATIVPR, 'N') =  'S')
                              AND NOT EXISTS ( SELECT REFOREG.CDREGIAO, REFOREG.CDFORNECED
                                                 FROM REFOREG
                                                WHERE REFOREG.CDREGIAO = REGIAO.CDREGIAO
                                                  AND REFOREG.CDFORNECED = FORNECEDOR.CDFORNECED)
                              AND EXISTS ( SELECT PRODCOMP.CDPRODUTO, PRODCOMP.CDOPERADOR
                                             FROM PRODCOMP, PRODUTO PR
                                            WHERE PRODCOMP.CDPRODUTO = PR.CDPRODUTO
                                              AND PRODUTO.CDARVPROD LIKE PR.CDARVPROD || '%'
                                              AND OPERADOR.CDOPERADOR = PRODCOMP.CDOPERADOR)
                              AND NOT EXISTS ( SELECT QUALIFICACAO.CDQUALIF   /* QUALIFICACAO DO FORNECEDOR */
                                                 FROM QUALIFICACAO
                                                WHERE (FORNECEDOR.CDQUALIF       = QUALIFICACAO.CDQUALIF)
                                                  AND (FORNECEDOR.IDFORNAUTO     = 'N')
                                                  AND ((QUALIFICACAO.IDPERCOTCMP = '2') OR ((PARASUPRI.IDULTIDTVALQ  = 'D' AND
                                                                                             TO_DATE(SYSDATE) > FORNECEDOR.DTVALQUALIF) OR (PARASUPRI.IDULTIDTVALQ = 'M' AND
                                                                                                                                            TO_DATE(SYSDATE) > LAST_DAY(FORNECEDOR.DTVALQUALIF)))))
                              AND NOT EXISTS ( SELECT QFOMARPROD.CDMARCA   /* QUALIFICACAO DE PRODUTO/MARCA */
                                                 FROM QFOMARPROD
                                                WHERE (QFOMARPROD.CDPRODUTO    = PRODUTO.CDPRODUTO)
                                                  AND (QFOMARPROD.CDMARCA      = NVL(MARCPRODCOMP.CDMARCA, PARASUPRI.CDMARCA))
                                                  AND ((QFOMARPROD.IDAPRMARPRO = 'N' AND QFOMARPROD.IDAUTMARPRO = 'N') OR ((QFOMARPROD.IDAPRMARPRO = 'S') AND
                                                                                                                           ((PARASUPRI.IDULTIDTVALQ = 'M' AND
                                                                                                                             TO_DATE(SYSDATE) > LAST_DAY(QFOMARPROD.DTVALAPROVA)) OR
                                                                                                                            (PARASUPRI.IDULTIDTVALQ = 'D' AND TO_DATE(SYSDATE) > QFOMARPROD.DTVALAPROVA)))))
                              AND EXISTS ( SELECT QFOMARPROD.CDMARCA /* QUALIFICACAO DE PRODUTO/MARCA */
                                             FROM QFOMARPROD
                                            WHERE QFOMARPROD.CDPRODUTO = PRODUTO.CDPRODUTO
                                              AND QFOMARPROD.CDMARCA   = NVL(MARCPRODCOMP.CDMARCA, PARASUPRI.CDMARCA)
                                            UNION
                                           SELECT PARASUPRI.CDMARCA
                                             FROM PARASUPRI
                                            WHERE PARASUPRI.CDFILIAL    = P_CDFILIAL
                                              AND (PARASUPRI.IDMARSEMQUA = 'N' OR PARASUPRI.IDMARSEMQUA IS NULL))
                              AND NOT EXISTS ( SELECT QFOPRODFORN.CDPRODUTO /* QUALIFICACAO DE PRODUTO/FORNECEDOR */
                                                 FROM QFOPRODFORN
                                                WHERE (QFOPRODFORN.CDPRODUTO = PRODFORNCOMP.CDPRODCOMPL)
                                                  AND (QFOPRODFORN.CDFORNECED= PRODFORNCOMP.CDFORNECED)
                                                  AND ((QFOPRODFORN.IDFORNAPROV = 'N' AND
                                                        QFOPRODFORN.IDFORNAUTOR = 'N') OR (QFOPRODFORN.IDFORNAPROV = 'S' AND
                                                                                           ((PARASUPRI.IDULTIDTVALQ = 'M' AND
                                                                                             TO_DATE(SYSDATE) > LAST_DAY(QFOPRODFORN.DTVALPRFORN)) OR
                                                                                            (PARASUPRI.IDULTIDTVALQ = 'D' AND
                                                                                             TO_DATE(SYSDATE) > QFOPRODFORN.DTVALPRFORN)))))
                              AND EXISTS (  SELECT 1
                                              FROM MARCFORNPEDCOL
                                             WHERE MARCFORNPEDCOL.CDFORNECED = FORNECEDOR.CDFORNECED
                                               AND MARCFORNPEDCOL.CDMARCA    = MARCA.CDMARCA
                                             UNION ALL
                                            SELECT 1
                                              FROM DUAL
                                             WHERE NOT EXISTS (  SELECT 1
                                                                   FROM MARCFORNPEDCOL
                                                                  WHERE MARCFORNPEDCOL.CDFORNECED = FORNECEDOR.CDFORNECED))
                         ) COMPLETO,
                         ( SELECT FILIAL.CDREGIAO, PRODACOMPRAR.CDFILIAL, PRODACOMPRAR.CDPRODUTO, NVL(PRODACOMPRAR.QTACOMPRAR, 0) AS QTACOMPRAR
                             FROM ( SELECT COMP.CDFILIAL, COMP.DTPROGENTR, COMP.CDPRODUTO, ROUND((COMP.QTDECOMP-NVL(JACOMP.QTDECOMP,0)) / COMP.VRFATOCONV, 5) AS QTACOMPRAR
                                      FROM ( SELECT ITEMSOLI.CDFILSOLI AS CDFILIAL, ITEMSOLI.DTPROGENTR, PRODUTO.CDPRODUTO, PRODUTO.CDPRODESTO, PRODUTO.VRFATOCONV,
                                                    SUM(ITEMSOLI.QTSOLIPROD*PRODUTO.VRFATOCONV) AS QTDECOMP
                                               FROM PRODUTO, ITEMSOLI
                                              WHERE (ITEMSOLI.IDITMCONS = 'N')
                                                AND (NVL(ITEMSOLI.IDSOLIAPROV,'S') = 'S')
                                                AND (ITEMSOLI.CDPRODUTO = PRODUTO.CDPRODUTO)
                                                AND (PRODUTO.CDARVPROD   BETWEEN P_CDPRODINI AND P_CDPRODFIN OR P_TPRODUTO = 'T')
                                                AND (ITEMSOLI.DTPROGENTR BETWEEN P_DTINI AND P_DTFIN)
                                              GROUP BY ITEMSOLI.CDFILSOLI, ITEMSOLI.DTPROGENTR, PRODUTO.CDPRODESTO, PRODUTO.CDPRODUTO, PRODUTO.VRFATOCONV
                                           ) COMP,
                                           ( SELECT ITEMAUTF.CDFILDEST AS CDFILIAL, ITEMAUTF.DTENTRITMSOL, PRODUTO.CDPRODESTO,
                                                    SUM(ITEMAUTF.QTPROGENTAF*PRODUTO.VRFATOCONV) AS QTDECOMP
                                               FROM PRODUTO, ITEMAUTF, AUTOFORNE
                                              WHERE (AUTOFORNE.CDFILDEST = ITEMAUTF.CDFILDEST)
                                                AND (AUTOFORNE.CDFILLANC = ITEMAUTF.CDFILLANC)
                                                AND (AUTOFORNE.NRAUTOFORN = ITEMAUTF.NRAUTOFORN)
                                                AND (ITEMAUTF.CDPRODUTO = PRODUTO.CDPRODUTO)
                                                AND (AUTOFORNE.IDSITUATUAAF IS NULL)
                                                AND (AUTOFORNE.IDAFFORALIM = 'N')
                                                AND (AUTOFORNE.IDAUTOFORNEX = 'N')
                                                AND (ITEMAUTF.DTENTRITMSOL BETWEEN P_DTINI AND P_DTFIN)
                                                AND NVL(AUTOFORNE.IDBAIXAAF, '0') <> '5'
                                              GROUP BY ITEMAUTF.CDFILDEST, ITEMAUTF.DTENTRITMSOL, PRODUTO.CDPRODESTO
                                           ) JACOMP
                                     WHERE COMP.CDFILIAL = JACOMP.CDFILIAL (+)
                                       AND COMP.DTPROGENTR = JACOMP.DTENTRITMSOL (+)
                                       AND COMP.CDPRODESTO = JACOMP.CDPRODESTO (+)
                                       AND ROUND((COMP.QTDECOMP-NVL(JACOMP.QTDECOMP,0)) / COMP.VRFATOCONV, 5) > 0
                                  ) PRODACOMPRAR, FILIAL
                            WHERE (FILIAL.CDFILCENTCMP = P_CDFILIAL OR FILIAL.CDFILIAL = P_CDFILIAL AND FILIAL.CDFILCENTCMP IS NULL)
                              AND INSTR(NVL(P_CDREGIAO, FILIAL.CDREGIAO), FILIAL.CDREGIAO) <> 0
                              AND (FILIAL.CDFILIAL = PRODACOMPRAR.CDFILIAL)
                         ) PRODACOMPRAR,
                         ( SELECT PARAMPRODSUP.CDREGIAO, PARAMPRODSUP.CDPRODUTO
                             FROM PARAMPRODSUP, FILIAL
                            WHERE FILIAL.CDFILIAL = P_CDFILIPROC
                              AND FILIAL.IDFUNCAOFILI = 'C'
                              AND FILIAL.CDFILIAL = PARAMPRODSUP.CDFILICTRL
                              AND PARAMPRODSUP.IDFILINEGCOR = 'S'
                            UNION ALL
                           SELECT PARAMPRODSUP.CDREGIAO, PARAMPRODSUP.CDPRODUTO
                             FROM PARAMPRODSUP, FILIAL
                            WHERE FILIAL.CDFILIAL = P_CDFILIPROC
                              AND FILIAL.IDFUNCAOFILI = 'R'
                              AND FILIAL.CDFILIAL = PARAMPRODSUP.CDFILICTRL
                              AND PARAMPRODSUP.IDFILINEGREG = 'S'
                         ) PARAMPRODSUP
                   WHERE PARASUPRI.CDFILIAL = P_CDFILIAL
                     AND NVL(PARASUPRI.IDCONSPRSOL, 'N') = 'S'
                     AND COMPLETO.CDPRODUTO = PRODACOMPRAR.CDPRODUTO(+)
                     AND COMPLETO.CDREGIAO  = PRODACOMPRAR.CDREGIAO(+)
                     AND PARAMPRODSUP.CDPRODUTO = COMPLETO.CDPRODUTO
                     AND PARAMPRODSUP.CDREGIAO  = COMPLETO.CDREGIAO
                     AND NOT EXISTS ( SELECT 1
                                        FROM REFORFIL
                                       WHERE REFORFIL.CDFORNECED = COMPLETO.CDFORNECED
                                         AND REFORFIL.CDFILIAL  = PRODACOMPRAR.CDFILIAL
                                         AND REFORFIL.CDPERIENTR IS NULL)
                )
          GROUP BY CDREGIAO, NMREGIAO, CDOPERADOR, NMOPERADOR, CDFORNECED, NRINSJURFORN,
                  IDTPIJURFORN, NMRAZSOCFORN, NMFANTFORN, CDPRODUTO, NMPRODUTO, SGUNIDADE,
                  CDPRODESTO, IDTPFRETFORN, CDMARCA, NMMARCA, CDMARCAPADR, CDARVPROD;
   BEGIN
      FOR CONTADOR IN PED_COL_TODOS LOOP
         V_PIPE.EXTEND;
         V_PIPE(V_INDICE) := CONTADOR;
         PIPE ROW(V_PIPE(V_INDICE));
         V_INDICE := V_INDICE+1;
      END LOOP;
      RETURN;
   END PED_COL_TODOS;

   FUNCTION PED_COL_ACOMP( P_CDCOMPRADOR   VARCHAR2,
                           P_CDFILIAL      VARCHAR2,
                           P_CDPRODINI     VARCHAR2,
                           P_CDPRODFIN     VARCHAR2,
                           P_TPRODUTO      VARCHAR2,
                           P_CDFORNECED    VARCHAR2,
                           P_CDREGIAO      VARCHAR2,
                           P_CDMARCA       VARCHAR2,
                           P_CDFILIPROC    VARCHAR2,
                           P_DTINI         DATE,
                           P_DTFIN         DATE) RETURN TABELA PIPELINED IS

      V_PIPE TABELA := TABELA();
      V_INDICE NUMBER := 1;

      CURSOR PED_COL_ACOMP IS
         SELECT CDREGIAO, NMREGIAO, CDOPERADOR, NMOPERADOR, CDFORNECED, NRINSJURFORN,
                IDTPIJURFORN, NMRAZSOCFORN, NMFANTFORN, CDPRODUTO, NMPRODUTO, SGUNIDADE,
                CDPRODESTO, IDTPFRETFORN, CDMARCA, NMMARCA, CDMARCAPADR, CDARVPROD,SUM(QTACOMPRAR) AS QTACOMPRAR,
                ' ' AS NRCOMPRA
           FROM ( SELECT COMPLETO.CDREGIAO, COMPLETO.NMREGIAO, COMPLETO.CDOPERADOR, COMPLETO.NMOPERADOR,
                         COMPLETO.CDFORNECED, COMPLETO.NRINSJURFORN, COMPLETO.IDTPIJURFORN, COMPLETO.NMRAZSOCFORN,
                         COMPLETO.NMFANTFORN, COMPLETO.CDPRODUTO, COMPLETO.NMPRODUTO, COMPLETO.SGUNIDADE,
                         COMPLETO.CDPRODESTO, COMPLETO.IDTPFRETFORN, COMPLETO.CDMARCA, COMPLETO.NMMARCA,
                         COMPLETO.CDMARCAPADR, COMPLETO.CDARVPROD, NVL(PRODACOMPRAR.QTACOMPRAR, 0) AS QTACOMPRAR
                    FROM PARASUPRI, FILIAL FILI,
                         ( SELECT REGIAO.CDREGIAO, REGIAO.NMREGIAO, OPERADOR.CDOPERADOR, OPERADOR.NMOPERADOR,
                                  PRODFORNCOMP.CDFORNECED, FORNECEDOR.NRINSJURFORN, FORNECEDOR.IDTPIJURFORN,
                                  FORNECEDOR.NMRAZSOCFORN, FORNECEDOR.NMFANTFORN, PRODUTO.CDPRODUTO,
                                  PRODUTO.NMPRODUTO, PRODUTO.SGUNIDADE, PRODUTO.CDPRODESTO, FORNECEDOR.IDTPFRETFORN,
                                  NVL(MARCPRODCOMP.CDMARCA, PARASUPRI.CDMARCA) AS CDMARCA,
                                  REPLACE(REPLACE(MARCA.NMMARCA, CHR(13), ''), CHR(10), '') NMMARCA,
                                  PRODUTO.CDARVPROD, PARASUPRI.CDMARCA AS CDMARCAPADR
                             FROM OPERADOR, MARCA, PRODUTO, PRODFORNCOMP, MARCPRODCOMP, FORNECEDOR,
                                  REGIAO, PARASUPRI
                            WHERE INSTR(NVL(P_CDCOMPRADOR, OPERADOR.CDOPERADOR), OPERADOR.CDOPERADOR) <> 0
                              AND PARASUPRI.CDFILIAL = P_CDFILIAL
                              AND ((NVL(PARASUPRI.IDUTLPROCMP, 'N') = 'N') OR (NVL(PARASUPRI.IDUTLPROCMP, 'N') = 'S' AND
                                                                               PRODUTO.CDPRODUTO <> PRODUTO.CDPRODESTO))
                              AND ((PRODUTO.CDARVPROD BETWEEN P_CDPRODINI AND P_CDPRODFIN) OR (P_TPRODUTO = 'T'))
                              AND INSTR(NVL(P_CDFORNECED, FORNECEDOR.CDFORNECED), FORNECEDOR.CDFORNECED) <> 0
                              AND INSTR(NVL(P_CDREGIAO, REGIAO.CDREGIAO), REGIAO.CDREGIAO) <> 0
                              AND NVL(MARCPRODCOMP.CDMARCA, PARASUPRI.CDMARCA) IS NOT NULL
                              AND INSTR(NVL(P_CDMARCA, MARCPRODCOMP.CDMARCA(+)), MARCPRODCOMP.CDMARCA(+))<> 0
                              AND FORNECEDOR.CDFORNECED = PRODFORNCOMP.CDFORNECED
                              AND PRODUTO.CDPRODUTO = PRODFORNCOMP.CDPRODCOMPL
                              AND PRODFORNCOMP.CDPRODCOMPL = MARCPRODCOMP.CDPRMARCOMPL(+)
                              AND MARCA.IDMARCAATIVA = 'A'
                              AND MARCA.CDMARCA = NVL(MARCPRODCOMP.CDMARCA, PARASUPRI.CDMARCA)
                              AND NVL(PRODUTO.IDPRODATIVPR, 'N') =  'S'
                              AND NOT EXISTS ( SELECT REFOREG.CDREGIAO, REFOREG.CDFORNECED
                                                 FROM REFOREG
                                                WHERE REFOREG.CDREGIAO = REGIAO.CDREGIAO
                                                  AND REFOREG.CDFORNECED = FORNECEDOR.CDFORNECED)
                              AND EXISTS ( SELECT PRODCOMP.CDPRODUTO, PRODCOMP.CDOPERADOR
                                             FROM PRODCOMP, PRODUTO PR
                                            WHERE PRODCOMP.CDPRODUTO = PR.CDPRODUTO
                                              AND PRODUTO.CDARVPROD LIKE PR.CDARVPROD || '%'
                                              AND OPERADOR.CDOPERADOR = PRODCOMP.CDOPERADOR)
                              AND NOT EXISTS ( SELECT QUALIFICACAO.CDQUALIF   /* QUALIFICACAO DO FORNECEDOR */
                                                 FROM QUALIFICACAO
                                                WHERE (FORNECEDOR.CDQUALIF       = QUALIFICACAO.CDQUALIF)
                                                  AND (FORNECEDOR.IDFORNAUTO     = 'N')
                                                  AND ((QUALIFICACAO.IDPERCOTCMP = '2') OR ((PARASUPRI.IDULTIDTVALQ  = 'D' AND
                                                                                             TO_DATE(SYSDATE) > FORNECEDOR.DTVALQUALIF)
                                                                                        OR (PARASUPRI.IDULTIDTVALQ = 'M' AND
                                                                                            TO_DATE(SYSDATE) > LAST_DAY(FORNECEDOR.DTVALQUALIF)))))
                              AND NOT EXISTS ( SELECT QFOMARPROD.CDMARCA   /* QUALIFICACAO DE PRODUTO/MARCA */
                                                 FROM QFOMARPROD
                                                WHERE (QFOMARPROD.CDPRODUTO    = PRODUTO.CDPRODUTO)
                                                  AND (QFOMARPROD.CDMARCA      = NVL(MARCPRODCOMP.CDMARCA, PARASUPRI.CDMARCA))
                                                  AND ((QFOMARPROD.IDAPRMARPRO = 'N' AND
                                                        QFOMARPROD.IDAUTMARPRO = 'N') OR ((QFOMARPROD.IDAPRMARPRO = 'S') AND
                                                                                          ((PARASUPRI.IDULTIDTVALQ = 'M' AND
                                                                                            TO_DATE(SYSDATE) > LAST_DAY(QFOMARPROD.DTVALAPROVA))
                                                                                      OR (PARASUPRI.IDULTIDTVALQ = 'D' AND
                                                                                          TO_DATE(SYSDATE) > QFOMARPROD.DTVALAPROVA)))))
                              AND EXISTS ( SELECT QFOMARPROD.CDMARCA /* QUALIFICACAO DE PRODUTO/MARCA */
                                             FROM QFOMARPROD
                                            WHERE QFOMARPROD.CDPRODUTO = PRODUTO.CDPRODUTO
                                              AND QFOMARPROD.CDMARCA   = NVL(MARCPRODCOMP.CDMARCA, PARASUPRI.CDMARCA)
                                            UNION
                                           SELECT PARASUPRI.CDMARCA
                                             FROM PARASUPRI
                                            WHERE PARASUPRI.CDFILIAL    = P_CDFILIAL
                                              AND (PARASUPRI.IDMARSEMQUA = 'N' OR PARASUPRI.IDMARSEMQUA IS NULL))
                                              AND NOT EXISTS (SELECT QFOPRODFORN.CDPRODUTO /* QUALIFICACAO DE PRODUTO/FORNECEDOR */
                                                                FROM QFOPRODFORN
                                                               WHERE (QFOPRODFORN.CDPRODUTO = PRODFORNCOMP.CDPRODCOMPL)
                                                                 AND (QFOPRODFORN.CDFORNECED= PRODFORNCOMP.CDFORNECED)
                                                                 AND ((QFOPRODFORN.IDFORNAPROV = 'N' AND
                                                                       QFOPRODFORN.IDFORNAUTOR = 'N') OR ((QFOPRODFORN.IDFORNAPROV = 'S') AND
                                                                                                          ((PARASUPRI.IDULTIDTVALQ = 'M' AND
                                                                                                            TO_DATE(SYSDATE) > LAST_DAY(QFOPRODFORN.DTVALPRFORN))
                                                                                                      OR (PARASUPRI.IDULTIDTVALQ = 'D' AND
                                                                                                          TO_DATE(SYSDATE) > QFOPRODFORN.DTVALPRFORN)))))
                              AND EXISTS ( SELECT 1
                                             FROM MARCFORNPEDCOL
                                            WHERE MARCFORNPEDCOL.CDFORNECED = FORNECEDOR.CDFORNECED
                                              AND MARCFORNPEDCOL.CDMARCA    = MARCA.CDMARCA
                                            UNION ALL
                                           SELECT 1
                                             FROM DUAL
                                            WHERE NOT EXISTS (SELECT 1
                                                                FROM MARCFORNPEDCOL
                                                               WHERE MARCFORNPEDCOL.CDFORNECED = FORNECEDOR.CDFORNECED))
                         ) COMPLETO,
                         ( SELECT FILIAL.CDREGIAO, PRODACOMPRAR.CDFILIAL, PRODACOMPRAR.CDPRODUTO, NVL(PRODACOMPRAR.QTACOMPRAR, 0) AS QTACOMPRAR
                             FROM ( SELECT COMP.CDFILIAL, COMP.DTPROGENTR, COMP.CDPRODUTO, ROUND(COMP.QTDECOMP-NVL(JACOMP.QTDECOMP/COMP.VRFATOCONV,0), 5) AS QTACOMPRAR
                                      FROM ( SELECT ITEMSOLI.CDFILSOLI AS CDFILIAL, ITEMSOLI.DTPROGENTR, ESTOQUE.CDPRODUTO, ESTOQUE.CDPRODESTO,
                                                     ESTOQUE.VRFATOCONV, SUM(ITEMSOLI.QTSOLIPROD*PRODUTO.VRFATOCONV/ESTOQUE.VRFATOCONV) AS QTDECOMP
                                                FROM PRODUTO ESTOQUE, PRODUTO, ITEMSOLI
                                               WHERE (ITEMSOLI.IDITMCONS = 'N')
                                                 AND (NVL(ITEMSOLI.IDSOLIAPROV,'S') = 'S')
                                                 AND (ITEMSOLI.CDPRODUTO = PRODUTO.CDPRODUTO)
                                                 AND (PRODUTO.CDPRODESTO = ESTOQUE.CDPRODESTO)
                                                 AND (ESTOQUE.CDARVPROD   BETWEEN P_CDPRODINI AND P_CDPRODFIN OR P_TPRODUTO = 'T')
                                                 AND (ITEMSOLI.DTPROGENTR BETWEEN P_DTINI AND P_DTFIN)
                                               GROUP BY ITEMSOLI.CDFILSOLI, ITEMSOLI.DTPROGENTR, ESTOQUE.CDPRODESTO, ESTOQUE.CDPRODUTO,
                                                        ESTOQUE.VRFATOCONV
                                           ) COMP,
                                           ( SELECT ITEMAUTF.CDFILDEST AS CDFILIAL, ITEMAUTF.DTENTRITMSOL, PRODUTO.CDPRODESTO,
                                                    SUM(ITEMAUTF.QTPROGENTAF*PRODUTO.VRFATOCONV) AS QTDECOMP
                                               FROM PRODUTO, ITEMAUTF, AUTOFORNE
                                              WHERE (AUTOFORNE.CDFILDEST = ITEMAUTF.CDFILDEST)
                                                AND (AUTOFORNE.CDFILLANC = ITEMAUTF.CDFILLANC)
                                                AND (AUTOFORNE.NRAUTOFORN = ITEMAUTF.NRAUTOFORN)
                                                AND (ITEMAUTF.CDPRODUTO = PRODUTO.CDPRODUTO)
                                                AND (AUTOFORNE.IDSITUATUAAF IS NULL)
                                                AND (AUTOFORNE.IDAFFORALIM = 'N')
                                                AND (AUTOFORNE.IDAUTOFORNEX = 'N')
                                                AND (ITEMAUTF.DTENTRITMSOL BETWEEN P_DTINI AND P_DTFIN)
                                                AND NVL(AUTOFORNE.IDBAIXAAF, '0') <> '5'
                                              GROUP BY ITEMAUTF.CDFILDEST, ITEMAUTF.DTENTRITMSOL, PRODUTO.CDPRODESTO
                                           ) JACOMP
                                     WHERE COMP.CDFILIAL = JACOMP.CDFILIAL (+)
                                       AND COMP.DTPROGENTR = JACOMP.DTENTRITMSOL (+)
                                       AND COMP.CDPRODESTO = JACOMP.CDPRODESTO (+)
                                       AND ROUND(COMP.QTDECOMP-NVL(JACOMP.QTDECOMP/COMP.VRFATOCONV,0), 5) > 0
                                  ) PRODACOMPRAR, FILIAL
                            WHERE ((FILIAL.CDFILCENTCMP = P_CDFILIAL) OR (FILIAL.CDFILIAL = P_CDFILIAL AND FILIAL.CDFILCENTCMP IS NULL))
                              AND INSTR(NVL(P_CDREGIAO, FILIAL.CDREGIAO), FILIAL.CDREGIAO) <> 0
                              AND (FILIAL.CDFILIAL = PRODACOMPRAR.CDFILIAL)
                         ) PRODACOMPRAR
                   WHERE PARASUPRI.CDFILIAL = P_CDFILIAL
                     AND NVL(PARASUPRI.IDCONSPRSOL, 'N') <> 'S'
                     AND COMPLETO.CDPRODUTO = PRODACOMPRAR.CDPRODUTO
                     AND COMPLETO.CDREGIAO  = PRODACOMPRAR.CDREGIAO
                     AND FILI.CDFILIAL = P_CDFILIPROC
                     AND ((FILI.IDFUNCAOFILI IS NULL) OR (FILI.IDFUNCAOFILI = 'O'))
                     AND NOT EXISTS (SELECT 1
                                       FROM REFORFIL
                                      WHERE REFORFIL.CDFORNECED = COMPLETO.CDFORNECED
                                        AND REFORFIL.CDFILIAL   = PRODACOMPRAR.CDFILIAL
                                        AND REFORFIL.CDPERIENTR IS NULL)

                  UNION ALL

                  SELECT COMPLETO.CDREGIAO, COMPLETO.NMREGIAO, COMPLETO.CDOPERADOR, COMPLETO.NMOPERADOR,
                         COMPLETO.CDFORNECED, COMPLETO.NRINSJURFORN, COMPLETO.IDTPIJURFORN, COMPLETO.NMRAZSOCFORN,
                         COMPLETO.NMFANTFORN, COMPLETO.CDPRODUTO, COMPLETO.NMPRODUTO, COMPLETO.SGUNIDADE,
                         COMPLETO.CDPRODESTO, COMPLETO.IDTPFRETFORN, COMPLETO.CDMARCA, COMPLETO.NMMARCA,
                         COMPLETO.CDMARCAPADR, COMPLETO.CDARVPROD, NVL(PRODACOMPRAR.QTACOMPRAR, 0) AS QTACOMPRAR
                    FROM PARASUPRI,
                         ( SELECT REGIAO.CDREGIAO, REGIAO.NMREGIAO, OPERADOR.CDOPERADOR, OPERADOR.NMOPERADOR,
                                  PRODFORNCOMP.CDFORNECED, FORNECEDOR.NRINSJURFORN, FORNECEDOR.IDTPIJURFORN, FORNECEDOR.NMRAZSOCFORN,
                                  FORNECEDOR.NMFANTFORN, PRODUTO.CDPRODUTO, PRODUTO.NMPRODUTO, PRODUTO.SGUNIDADE,
                                  PRODUTO.CDPRODESTO, FORNECEDOR.IDTPFRETFORN, NVL(MARCPRODCOMP.CDMARCA, PARASUPRI.CDMARCA) AS CDMARCA,
                                  REPLACE(REPLACE(MARCA.NMMARCA, CHR(13), ''), CHR(10), '') NMMARCA,
                                  PRODUTO.CDARVPROD, PARASUPRI.CDMARCA AS CDMARCAPADR
                             FROM OPERADOR, MARCA, PRODUTO, PRODFORNCOMP, MARCPRODCOMP, FORNECEDOR,
                                  REGIAO, PARASUPRI
                            WHERE INSTR(NVL(P_CDCOMPRADOR, OPERADOR.CDOPERADOR), OPERADOR.CDOPERADOR) <> 0
                              AND PARASUPRI.CDFILIAL = P_CDFILIAL
                              AND ((NVL(PARASUPRI.IDUTLPROCMP, 'N') = 'N') OR (NVL(PARASUPRI.IDUTLPROCMP, 'N') = 'S' AND
                                                                               PRODUTO.CDPRODUTO <> PRODUTO.CDPRODESTO))
                              AND ((PRODUTO.CDARVPROD BETWEEN P_CDPRODINI AND P_CDPRODFIN) OR (P_TPRODUTO = 'T'))
                              AND INSTR(NVL(P_CDFORNECED, FORNECEDOR.CDFORNECED), FORNECEDOR.CDFORNECED) <> 0
                              AND INSTR(NVL(P_CDREGIAO, REGIAO.CDREGIAO), REGIAO.CDREGIAO) <> 0
                              AND NVL(MARCPRODCOMP.CDMARCA, PARASUPRI.CDMARCA) IS NOT NULL
                              AND INSTR(NVL(P_CDMARCA, MARCPRODCOMP.CDMARCA(+)), MARCPRODCOMP.CDMARCA(+))<> 0
                              AND FORNECEDOR.CDFORNECED = PRODFORNCOMP.CDFORNECED
                              AND PRODUTO.CDPRODUTO = PRODFORNCOMP.CDPRODCOMPL
                              AND PRODFORNCOMP.CDPRODCOMPL = MARCPRODCOMP.CDPRMARCOMPL(+)
                              AND MARCA.IDMARCAATIVA       = 'A'
                              AND MARCA.CDMARCA = NVL(MARCPRODCOMP.CDMARCA, PARASUPRI.CDMARCA)
                              AND (NVL(PRODUTO.IDPRODATIVPR, 'N') =  'S')
                              AND NOT EXISTS ( SELECT REFOREG.CDREGIAO, REFOREG.CDFORNECED
                                                 FROM REFOREG
                                                WHERE REFOREG.CDREGIAO = REGIAO.CDREGIAO
                                                  AND REFOREG.CDFORNECED = FORNECEDOR.CDFORNECED)
                              AND EXISTS ( SELECT PRODCOMP.CDPRODUTO, PRODCOMP.CDOPERADOR
                                             FROM PRODCOMP, PRODUTO PR
                                            WHERE PRODCOMP.CDPRODUTO = PR.CDPRODUTO
                                              AND PRODUTO.CDARVPROD LIKE PR.CDARVPROD || '%'
                                              AND OPERADOR.CDOPERADOR = PRODCOMP.CDOPERADOR)
                              AND NOT EXISTS ( SELECT QUALIFICACAO.CDQUALIF   /* QUALIFICACAO DO FORNECEDOR */
                                                 FROM QUALIFICACAO
                                                WHERE (FORNECEDOR.CDQUALIF       = QUALIFICACAO.CDQUALIF)
                                                  AND (FORNECEDOR.IDFORNAUTO     = 'N')
                                                  AND ((QUALIFICACAO.IDPERCOTCMP = '2') OR ((PARASUPRI.IDULTIDTVALQ  = 'D' AND
                                                                                             TO_DATE(SYSDATE) > FORNECEDOR.DTVALQUALIF)
                                                                                        OR (PARASUPRI.IDULTIDTVALQ = 'M' AND
                                                                                            TO_DATE(SYSDATE) > LAST_DAY(FORNECEDOR.DTVALQUALIF)))))
                              AND NOT EXISTS ( SELECT QFOMARPROD.CDMARCA   /* QUALIFICACAO DE PRODUTO/MARCA */
                                                 FROM QFOMARPROD
                                                WHERE (QFOMARPROD.CDPRODUTO    = PRODUTO.CDPRODUTO)
                                                  AND (QFOMARPROD.CDMARCA      = NVL(MARCPRODCOMP.CDMARCA, PARASUPRI.CDMARCA))
                                                  AND ((QFOMARPROD.IDAPRMARPRO = 'N' AND
                                                        QFOMARPROD.IDAUTMARPRO = 'N') OR ((QFOMARPROD.IDAPRMARPRO = 'S') AND
                                                                                          ((PARASUPRI.IDULTIDTVALQ = 'M' AND
                                                                                            TO_DATE(SYSDATE) > LAST_DAY(QFOMARPROD.DTVALAPROVA))
                                                                                      OR (PARASUPRI.IDULTIDTVALQ = 'D' AND
                                                                                          TO_DATE(SYSDATE) > QFOMARPROD.DTVALAPROVA)))))
                              AND EXISTS ( SELECT QFOMARPROD.CDMARCA /* QUALIFICACAO DE PRODUTO/MARCA */
                                             FROM QFOMARPROD
                                            WHERE QFOMARPROD.CDPRODUTO = PRODUTO.CDPRODUTO
                                              AND QFOMARPROD.CDMARCA   = NVL(MARCPRODCOMP.CDMARCA, PARASUPRI.CDMARCA)
                                            UNION
                                           SELECT PARASUPRI.CDMARCA
                                             FROM PARASUPRI
                                            WHERE PARASUPRI.CDFILIAL    = P_CDFILIAL
                                              AND (PARASUPRI.IDMARSEMQUA = 'N' OR PARASUPRI.IDMARSEMQUA IS NULL))
                              AND NOT EXISTS (SELECT QFOPRODFORN.CDPRODUTO /* QUALIFICACAO DE PRODUTO/FORNECEDOR */
                                                FROM QFOPRODFORN
                                               WHERE (QFOPRODFORN.CDPRODUTO = PRODFORNCOMP.CDPRODCOMPL)
                                                 AND (QFOPRODFORN.CDFORNECED= PRODFORNCOMP.CDFORNECED)
                                                 AND ((QFOPRODFORN.IDFORNAPROV = 'N' AND
                                                       QFOPRODFORN.IDFORNAUTOR = 'N') OR ((QFOPRODFORN.IDFORNAPROV = 'S') AND
                                                                                          ((PARASUPRI.IDULTIDTVALQ = 'M' AND
                                                                                            TO_DATE(SYSDATE) > LAST_DAY(QFOPRODFORN.DTVALPRFORN))
                                                                                      OR (PARASUPRI.IDULTIDTVALQ = 'D' AND
                                                                                          TO_DATE(SYSDATE) > QFOPRODFORN.DTVALPRFORN)))))
                              AND EXISTS ( SELECT 1
                                             FROM MARCFORNPEDCOL
                                            WHERE MARCFORNPEDCOL.CDFORNECED = FORNECEDOR.CDFORNECED
                                              AND MARCFORNPEDCOL.CDMARCA    = MARCA.CDMARCA
                                            UNION ALL
                                           SELECT 1
                                             FROM DUAL
                                            WHERE NOT EXISTS ( SELECT 1
                                                                 FROM MARCFORNPEDCOL
                                                                WHERE MARCFORNPEDCOL.CDFORNECED = FORNECEDOR.CDFORNECED))
                         ) COMPLETO,
                         ( SELECT FILIAL.CDREGIAO, PRODACOMPRAR.CDFILIAL, PRODACOMPRAR.CDPRODUTO, NVL(PRODACOMPRAR.QTACOMPRAR, 0) AS QTACOMPRAR
                             FROM ( SELECT COMP.CDFILIAL, COMP.DTPROGENTR, COMP.CDPRODUTO,
                                           ROUND(COMP.QTDECOMP-NVL(JACOMP.QTDECOMP/COMP.VRFATOCONV,0), 5) AS QTACOMPRAR
                                      FROM ( SELECT ITEMSOLI.CDFILSOLI AS CDFILIAL, ITEMSOLI.DTPROGENTR, ESTOQUE.CDPRODUTO, ESTOQUE.CDPRODESTO,
                                                    ESTOQUE.VRFATOCONV, SUM(ITEMSOLI.QTSOLIPROD*PRODUTO.VRFATOCONV/ESTOQUE.VRFATOCONV) AS QTDECOMP
                                               FROM PRODUTO ESTOQUE, PRODUTO, ITEMSOLI
                                              WHERE (ITEMSOLI.IDITMCONS = 'N')
                                                AND (NVL(ITEMSOLI.IDSOLIAPROV,'S') = 'S')
                                                AND (ITEMSOLI.CDPRODUTO = PRODUTO.CDPRODUTO)
                                                AND (PRODUTO.CDPRODESTO = ESTOQUE.CDPRODESTO)
                                                AND (ESTOQUE.CDARVPROD   BETWEEN P_CDPRODINI AND P_CDPRODFIN OR P_TPRODUTO = 'T')
                                                AND (ITEMSOLI.DTPROGENTR BETWEEN P_DTINI AND P_DTFIN)
                                              GROUP BY ITEMSOLI.CDFILSOLI, ITEMSOLI.DTPROGENTR, ESTOQUE.CDPRODESTO, ESTOQUE.CDPRODUTO,
                                                       ESTOQUE.VRFATOCONV
                                           ) COMP,
                                           ( SELECT ITEMAUTF.CDFILDEST AS CDFILIAL, ITEMAUTF.DTENTRITMSOL, PRODUTO.CDPRODESTO,
                                                    SUM(ITEMAUTF.QTPROGENTAF*PRODUTO.VRFATOCONV) AS QTDECOMP
                                               FROM PRODUTO, ITEMAUTF, AUTOFORNE
                                              WHERE (AUTOFORNE.CDFILDEST = ITEMAUTF.CDFILDEST)
                                                AND (AUTOFORNE.CDFILLANC = ITEMAUTF.CDFILLANC)
                                                AND (AUTOFORNE.NRAUTOFORN = ITEMAUTF.NRAUTOFORN)
                                                AND (ITEMAUTF.CDPRODUTO = PRODUTO.CDPRODUTO)
                                                AND (AUTOFORNE.IDSITUATUAAF IS NULL)
                                                AND (AUTOFORNE.IDAFFORALIM = 'N')
                                                AND (AUTOFORNE.IDAUTOFORNEX = 'N')
                                                AND (ITEMAUTF.DTENTRITMSOL BETWEEN P_DTINI AND P_DTFIN)
                                                AND NVL(AUTOFORNE.IDBAIXAAF, '0') <> '5'
                                              GROUP BY ITEMAUTF.CDFILDEST, ITEMAUTF.DTENTRITMSOL, PRODUTO.CDPRODESTO
                                           ) JACOMP
                                     WHERE COMP.CDFILIAL = JACOMP.CDFILIAL (+)
                                       AND COMP.DTPROGENTR = JACOMP.DTENTRITMSOL (+)
                                       AND COMP.CDPRODESTO = JACOMP.CDPRODESTO (+)
                                       AND ROUND(COMP.QTDECOMP-NVL(JACOMP.QTDECOMP/COMP.VRFATOCONV,0), 5) > 0
                                  ) PRODACOMPRAR, FILIAL
                            WHERE (FILIAL.CDFILCENTCMP = P_CDFILIAL OR FILIAL.CDFILIAL = P_CDFILIAL AND FILIAL.CDFILCENTCMP IS NULL)
                              AND INSTR(NVL(P_CDREGIAO, FILIAL.CDREGIAO), FILIAL.CDREGIAO) <> 0
                              AND (FILIAL.CDFILIAL = PRODACOMPRAR.CDFILIAL)
                         ) PRODACOMPRAR,
                         ( SELECT PARAMPRODSUP.CDREGIAO, PARAMPRODSUP.CDPRODUTO
                             FROM PARAMPRODSUP, FILIAL
                            WHERE FILIAL.CDFILIAL = P_CDFILIPROC
                              AND FILIAL.IDFUNCAOFILI = 'C'
                              AND FILIAL.CDFILIAL = PARAMPRODSUP.CDFILICTRL
                              AND PARAMPRODSUP.IDFILINEGCOR = 'S'
                            UNION ALL
                           SELECT PARAMPRODSUP.CDREGIAO, PARAMPRODSUP.CDPRODUTO
                             FROM PARAMPRODSUP, FILIAL
                            WHERE FILIAL.CDFILIAL = P_CDFILIPROC
                              AND FILIAL.IDFUNCAOFILI = 'R'
                              AND FILIAL.CDFILIAL = PARAMPRODSUP.CDFILICTRL
                              AND PARAMPRODSUP.IDFILINEGREG = 'S'
                         ) PARAMPRODSUP
                   WHERE PARASUPRI.CDFILIAL = P_CDFILIAL
                     AND NVL(PARASUPRI.IDCONSPRSOL, 'N') <> 'S'
                     AND COMPLETO.CDPRODUTO = PRODACOMPRAR.CDPRODUTO
                     AND COMPLETO.CDREGIAO  = PRODACOMPRAR.CDREGIAO
                     AND PARAMPRODSUP.CDPRODUTO = COMPLETO.CDPRODUTO
                     AND PARAMPRODSUP.CDREGIAO  = COMPLETO.CDREGIAO
                     AND NOT EXISTS ( SELECT 1
                                        FROM REFORFIL
                                       WHERE REFORFIL.CDFORNECED = COMPLETO.CDFORNECED
                                         AND REFORFIL.CDFILIAL  = PRODACOMPRAR.CDFILIAL
                                         AND REFORFIL.CDPERIENTR IS NULL)

                  /*######################### IDCONSPRSOL DA PARASUPRI ###############################################*/
                  UNION ALL

                  SELECT COMPLETO.CDREGIAO, COMPLETO.NMREGIAO, COMPLETO.CDOPERADOR, COMPLETO.NMOPERADOR,
                         COMPLETO.CDFORNECED, COMPLETO.NRINSJURFORN, COMPLETO.IDTPIJURFORN, COMPLETO.NMRAZSOCFORN,
                         COMPLETO.NMFANTFORN, COMPLETO.CDPRODUTO, COMPLETO.NMPRODUTO, COMPLETO.SGUNIDADE,
                         COMPLETO.CDPRODESTO, COMPLETO.IDTPFRETFORN, COMPLETO.CDMARCA, COMPLETO.NMMARCA,
                         COMPLETO.CDMARCAPADR, COMPLETO.CDARVPROD, NVL(PRODACOMPRAR.QTACOMPRAR, 0) AS QTACOMPRAR
                    FROM PARASUPRI, FILIAL FILI,
                         ( SELECT REGIAO.CDREGIAO, REGIAO.NMREGIAO, OPERADOR.CDOPERADOR, OPERADOR.NMOPERADOR,
                                  PRODFORNCOMP.CDFORNECED, FORNECEDOR.NRINSJURFORN, FORNECEDOR.IDTPIJURFORN,
                                  FORNECEDOR.NMRAZSOCFORN, FORNECEDOR.NMFANTFORN, PRODUTO.CDPRODUTO,
                                  PRODUTO.NMPRODUTO, PRODUTO.SGUNIDADE, PRODUTO.CDPRODESTO, FORNECEDOR.IDTPFRETFORN,
                                  NVL(MARCPRODCOMP.CDMARCA, PARASUPRI.CDMARCA) AS CDMARCA,
                                  REPLACE(REPLACE(MARCA.NMMARCA, CHR(13), ''), CHR(10), '') NMMARCA,
                                  PRODUTO.CDARVPROD, PARASUPRI.CDMARCA AS CDMARCAPADR
                             FROM OPERADOR, MARCA, PRODUTO, PRODFORNCOMP, MARCPRODCOMP, FORNECEDOR,
                                  REGIAO, PARASUPRI
                            WHERE INSTR(NVL(P_CDCOMPRADOR, OPERADOR.CDOPERADOR), OPERADOR.CDOPERADOR) <> 0
                              AND PARASUPRI.CDFILIAL = P_CDFILIAL
                              AND ((NVL(PARASUPRI.IDUTLPROCMP, 'N') = 'N') OR (NVL(PARASUPRI.IDUTLPROCMP, 'N') = 'S' AND
                                                                               PRODUTO.CDPRODUTO <> PRODUTO.CDPRODESTO))
                              AND ((PRODUTO.CDARVPROD BETWEEN P_CDPRODINI AND P_CDPRODFIN) OR (P_TPRODUTO = 'T'))
                              AND INSTR(NVL(P_CDFORNECED, FORNECEDOR.CDFORNECED), FORNECEDOR.CDFORNECED) <> 0
                              AND INSTR(NVL(P_CDREGIAO, REGIAO.CDREGIAO), REGIAO.CDREGIAO) <> 0
                              AND NVL(MARCPRODCOMP.CDMARCA, PARASUPRI.CDMARCA) IS NOT NULL
                              AND MARCA.IDMARCAATIVA       = 'A'
                              AND INSTR(NVL(P_CDMARCA, MARCPRODCOMP.CDMARCA(+)), MARCPRODCOMP.CDMARCA(+))<> 0
                              AND FORNECEDOR.CDFORNECED = PRODFORNCOMP.CDFORNECED
                              AND PRODUTO.CDPRODUTO = PRODFORNCOMP.CDPRODCOMPL
                              AND PRODFORNCOMP.CDPRODCOMPL = MARCPRODCOMP.CDPRMARCOMPL(+)
                              AND MARCA.CDMARCA = NVL(MARCPRODCOMP.CDMARCA, PARASUPRI.CDMARCA)
                              AND (NVL(PRODUTO.IDPRODATIVPR, 'N') =  'S')
                              AND NOT EXISTS ( SELECT REFOREG.CDREGIAO, REFOREG.CDFORNECED
                                                 FROM REFOREG
                                                WHERE REFOREG.CDREGIAO = REGIAO.CDREGIAO
                                                  AND REFOREG.CDFORNECED = FORNECEDOR.CDFORNECED)
                              AND EXISTS ( SELECT PRODCOMP.CDPRODUTO, PRODCOMP.CDOPERADOR
                                             FROM PRODCOMP, PRODUTO PR
                                            WHERE PRODCOMP.CDPRODUTO = PR.CDPRODUTO
                                              AND PRODUTO.CDARVPROD LIKE PR.CDARVPROD || '%'
                                              AND OPERADOR.CDOPERADOR = PRODCOMP.CDOPERADOR)
                              AND NOT EXISTS ( SELECT QUALIFICACAO.CDQUALIF   /* QUALIFICACAO DO FORNECEDOR */
                                                 FROM QUALIFICACAO
                                                WHERE (FORNECEDOR.CDQUALIF       = QUALIFICACAO.CDQUALIF)
                                                  AND (FORNECEDOR.IDFORNAUTO     = 'N')
                                                  AND ((QUALIFICACAO.IDPERCOTCMP = '2') OR ((PARASUPRI.IDULTIDTVALQ  = 'D' AND
                                                                                             TO_DATE(SYSDATE) > FORNECEDOR.DTVALQUALIF)
                                                                                        OR (PARASUPRI.IDULTIDTVALQ = 'M' AND
                                                                                            TO_DATE(SYSDATE) > LAST_DAY(FORNECEDOR.DTVALQUALIF)))))
                              AND NOT EXISTS ( SELECT QFOMARPROD.CDMARCA   /* QUALIFICACAO DE PRODUTO/MARCA */
                                                 FROM QFOMARPROD
                                                WHERE (QFOMARPROD.CDPRODUTO    = PRODUTO.CDPRODUTO)
                                                  AND (QFOMARPROD.CDMARCA      = NVL(MARCPRODCOMP.CDMARCA, PARASUPRI.CDMARCA))
                                                  AND ((QFOMARPROD.IDAPRMARPRO = 'N' AND
                                                        QFOMARPROD.IDAUTMARPRO = 'N') OR ((QFOMARPROD.IDAPRMARPRO = 'S') AND
                                                                                          ((PARASUPRI.IDULTIDTVALQ = 'M' AND
                                                                                           TO_DATE(SYSDATE) > LAST_DAY(QFOMARPROD.DTVALAPROVA))
                                                                                      OR (PARASUPRI.IDULTIDTVALQ = 'D' AND TO_DATE(SYSDATE) > QFOMARPROD.DTVALAPROVA)))))
                              AND EXISTS ( SELECT QFOMARPROD.CDMARCA /* QUALIFICACAO DE PRODUTO/MARCA */
                                             FROM QFOMARPROD
                                            WHERE QFOMARPROD.CDPRODUTO = PRODUTO.CDPRODUTO
                                              AND QFOMARPROD.CDMARCA   = NVL(MARCPRODCOMP.CDMARCA, PARASUPRI.CDMARCA)
                                            UNION
                                           SELECT PARASUPRI.CDMARCA
                                             FROM PARASUPRI
                                            WHERE PARASUPRI.CDFILIAL    = P_CDFILIAL
                                              AND (PARASUPRI.IDMARSEMQUA = 'N' OR PARASUPRI.IDMARSEMQUA IS NULL))
                              AND NOT EXISTS ( SELECT QFOPRODFORN.CDPRODUTO /* QUALIFICACAO DE PRODUTO/FORNECEDOR */
                                                 FROM QFOPRODFORN
                                                WHERE (QFOPRODFORN.CDPRODUTO  = PRODFORNCOMP.CDPRODCOMPL)
                                                  AND (QFOPRODFORN.CDFORNECED = PRODFORNCOMP.CDFORNECED)
                                                  AND ((QFOPRODFORN.IDFORNAPROV = 'N' AND
                                                        QFOPRODFORN.IDFORNAUTOR = 'N') OR ((QFOPRODFORN.IDFORNAPROV = 'S') AND
                                                                                           ((PARASUPRI.IDULTIDTVALQ = 'M' AND
                                                                                             TO_DATE(SYSDATE) > LAST_DAY(QFOPRODFORN.DTVALPRFORN))
                                                                                             OR (PARASUPRI.IDULTIDTVALQ = 'D' AND
                                                                                                 TO_DATE(SYSDATE) > QFOPRODFORN.DTVALPRFORN)))))
                              AND EXISTS ( SELECT 1
                                             FROM MARCFORNPEDCOL
                                            WHERE MARCFORNPEDCOL.CDFORNECED = FORNECEDOR.CDFORNECED
                                              AND MARCFORNPEDCOL.CDMARCA    = MARCA.CDMARCA
                                            UNION ALL
                                           SELECT 1
                                             FROM DUAL
                                            WHERE NOT EXISTS ( SELECT 1
                                                                 FROM MARCFORNPEDCOL
                                                                WHERE MARCFORNPEDCOL.CDFORNECED = FORNECEDOR.CDFORNECED))
                         ) COMPLETO,
                         ( SELECT FILIAL.CDREGIAO, PRODACOMPRAR.CDFILIAL, PRODACOMPRAR.CDPRODUTO, NVL(PRODACOMPRAR.QTACOMPRAR, 0) AS QTACOMPRAR
                             FROM ( SELECT COMP.CDFILIAL, COMP.DTPROGENTR, COMP.CDPRODUTO,
                                           ROUND((COMP.QTDECOMP-NVL(JACOMP.QTDECOMP,0)) / COMP.VRFATOCONV, 5) AS QTACOMPRAR
                                      FROM ( SELECT ITEMSOLI.CDFILSOLI AS CDFILIAL, ITEMSOLI.DTPROGENTR, PRODUTO.CDPRODUTO, PRODUTO.CDPRODESTO,
                                                    PRODUTO.VRFATOCONV, SUM(ITEMSOLI.QTSOLIPROD*PRODUTO.VRFATOCONV) AS QTDECOMP
                                               FROM PRODUTO, ITEMSOLI
                                              WHERE (ITEMSOLI.IDITMCONS = 'N')
                                                AND (NVL(ITEMSOLI.IDSOLIAPROV,'S') = 'S')
                                                AND (ITEMSOLI.CDPRODUTO = PRODUTO.CDPRODUTO)
                                                AND (PRODUTO.CDARVPROD   BETWEEN P_CDPRODINI AND P_CDPRODFIN OR P_TPRODUTO = 'T')
                                                AND (ITEMSOLI.DTPROGENTR BETWEEN P_DTINI AND P_DTFIN)
                                              GROUP BY ITEMSOLI.CDFILSOLI, ITEMSOLI.DTPROGENTR, PRODUTO.CDPRODESTO, PRODUTO.CDPRODUTO, PRODUTO.VRFATOCONV
                                           ) COMP,
                                           ( SELECT ITEMAUTF.CDFILDEST AS CDFILIAL, ITEMAUTF.DTENTRITMSOL, PRODUTO.CDPRODESTO,
                                                    SUM(ITEMAUTF.QTPROGENTAF*PRODUTO.VRFATOCONV) AS QTDECOMP
                                               FROM PRODUTO, ITEMAUTF, AUTOFORNE
                                              WHERE (AUTOFORNE.CDFILDEST = ITEMAUTF.CDFILDEST)
                                                AND (AUTOFORNE.CDFILLANC = ITEMAUTF.CDFILLANC)
                                                AND (AUTOFORNE.NRAUTOFORN = ITEMAUTF.NRAUTOFORN)
                                                AND (ITEMAUTF.CDPRODUTO = PRODUTO.CDPRODUTO)
                                                AND (AUTOFORNE.IDSITUATUAAF IS NULL)
                                                AND (AUTOFORNE.IDAFFORALIM = 'N')
                                                AND (AUTOFORNE.IDAUTOFORNEX = 'N')
                                                AND (ITEMAUTF.DTENTRITMSOL BETWEEN P_DTINI AND P_DTFIN)
                                                AND NVL(AUTOFORNE.IDBAIXAAF, '0') <> '5'
                                              GROUP BY ITEMAUTF.CDFILDEST, ITEMAUTF.DTENTRITMSOL, PRODUTO.CDPRODESTO
                                           ) JACOMP
                                     WHERE COMP.CDFILIAL = JACOMP.CDFILIAL (+)
                                       AND COMP.DTPROGENTR = JACOMP.DTENTRITMSOL (+)
                                       AND COMP.CDPRODESTO = JACOMP.CDPRODESTO (+)
                                       AND ROUND((COMP.QTDECOMP-NVL(JACOMP.QTDECOMP,0)) / COMP.VRFATOCONV, 5) > 0
                                  ) PRODACOMPRAR, FILIAL
                            WHERE (FILIAL.CDFILCENTCMP = P_CDFILIAL OR FILIAL.CDFILIAL = P_CDFILIAL AND FILIAL.CDFILCENTCMP IS NULL)
                              AND INSTR(NVL(P_CDREGIAO, FILIAL.CDREGIAO), FILIAL.CDREGIAO) <> 0
                              AND (FILIAL.CDFILIAL = PRODACOMPRAR.CDFILIAL)
                         ) PRODACOMPRAR
                   WHERE PARASUPRI.CDFILIAL = P_CDFILIAL
                     AND NVL(PARASUPRI.IDCONSPRSOL, 'N') = 'S'
                     AND COMPLETO.CDPRODUTO = PRODACOMPRAR.CDPRODUTO
                     AND COMPLETO.CDREGIAO  = PRODACOMPRAR.CDREGIAO
                     AND FILI.CDFILIAL = P_CDFILIPROC
                     AND ((FILI.IDFUNCAOFILI IS NULL) OR (FILI.IDFUNCAOFILI = 'O'))
                     AND NOT EXISTS ( SELECT 1
                                        FROM REFORFIL
                                       WHERE REFORFIL.CDFORNECED = COMPLETO.CDFORNECED
                                         AND REFORFIL.CDFILIAL  = PRODACOMPRAR.CDFILIAL
                                         AND REFORFIL.CDPERIENTR IS NULL)

                  UNION ALL

                  SELECT COMPLETO.CDREGIAO, COMPLETO.NMREGIAO, COMPLETO.CDOPERADOR, COMPLETO.NMOPERADOR,
                         COMPLETO.CDFORNECED, COMPLETO.NRINSJURFORN, COMPLETO.IDTPIJURFORN, COMPLETO.NMRAZSOCFORN,
                         COMPLETO.NMFANTFORN, COMPLETO.CDPRODUTO, COMPLETO.NMPRODUTO, COMPLETO.SGUNIDADE,
                         COMPLETO.CDPRODESTO, COMPLETO.IDTPFRETFORN, COMPLETO.CDMARCA, COMPLETO.NMMARCA,
                         COMPLETO.CDMARCAPADR, COMPLETO.CDARVPROD, NVL(PRODACOMPRAR.QTACOMPRAR, 0) AS QTACOMPRAR
                    FROM PARASUPRI,
                         ( SELECT REGIAO.CDREGIAO, REGIAO.NMREGIAO, OPERADOR.CDOPERADOR, OPERADOR.NMOPERADOR,
                                  PRODFORNCOMP.CDFORNECED, FORNECEDOR.NRINSJURFORN, FORNECEDOR.IDTPIJURFORN, FORNECEDOR.NMRAZSOCFORN,
                                  FORNECEDOR.NMFANTFORN, PRODUTO.CDPRODUTO, PRODUTO.NMPRODUTO, PRODUTO.SGUNIDADE, PRODUTO.CDPRODESTO,
                                  FORNECEDOR.IDTPFRETFORN, NVL(MARCPRODCOMP.CDMARCA, PARASUPRI.CDMARCA) AS CDMARCA,
                                  REPLACE(REPLACE(MARCA.NMMARCA, CHR(13), ''), CHR(10), '') NMMARCA,
                                  PRODUTO.CDARVPROD, PARASUPRI.CDMARCA AS CDMARCAPADR
                             FROM OPERADOR, MARCA, PRODUTO, PRODFORNCOMP, MARCPRODCOMP, FORNECEDOR, REGIAO, PARASUPRI
                            WHERE INSTR(NVL(P_CDCOMPRADOR, OPERADOR.CDOPERADOR), OPERADOR.CDOPERADOR) <> 0
                              AND PARASUPRI.CDFILIAL = P_CDFILIAL
                              AND ((NVL(PARASUPRI.IDUTLPROCMP, 'N') = 'N') OR (NVL(PARASUPRI.IDUTLPROCMP, 'N') = 'S' AND
                                                                               PRODUTO.CDPRODUTO <> PRODUTO.CDPRODESTO))
                              AND ((PRODUTO.CDARVPROD BETWEEN P_CDPRODINI AND P_CDPRODFIN) OR (P_TPRODUTO = 'T'))
                              AND INSTR(NVL(P_CDFORNECED, FORNECEDOR.CDFORNECED), FORNECEDOR.CDFORNECED) <> 0
                              AND INSTR(NVL(P_CDREGIAO, REGIAO.CDREGIAO), REGIAO.CDREGIAO) <> 0
                              AND NVL(MARCPRODCOMP.CDMARCA, PARASUPRI.CDMARCA) IS NOT NULL
                              AND MARCA.IDMARCAATIVA       = 'A'
                              AND INSTR(NVL(P_CDMARCA, MARCPRODCOMP.CDMARCA(+)), MARCPRODCOMP.CDMARCA(+))<> 0
                              AND FORNECEDOR.CDFORNECED = PRODFORNCOMP.CDFORNECED
                              AND PRODUTO.CDPRODUTO = PRODFORNCOMP.CDPRODCOMPL
                              AND PRODFORNCOMP.CDPRODCOMPL = MARCPRODCOMP.CDPRMARCOMPL(+)
                              AND MARCA.CDMARCA = NVL(MARCPRODCOMP.CDMARCA, PARASUPRI.CDMARCA)
                              AND (NVL(PRODUTO.IDPRODATIVPR, 'N') =  'S')
                              AND NOT EXISTS ( SELECT REFOREG.CDREGIAO, REFOREG.CDFORNECED
                                                 FROM REFOREG
                                                WHERE REFOREG.CDREGIAO = REGIAO.CDREGIAO
                                                  AND REFOREG.CDFORNECED = FORNECEDOR.CDFORNECED)
                              AND EXISTS ( SELECT PRODCOMP.CDPRODUTO, PRODCOMP.CDOPERADOR
                                             FROM PRODCOMP, PRODUTO PR
                                            WHERE PRODCOMP.CDPRODUTO = PR.CDPRODUTO
                                              AND PRODUTO.CDARVPROD LIKE PR.CDARVPROD || '%'
                                              AND OPERADOR.CDOPERADOR = PRODCOMP.CDOPERADOR)
                              AND NOT EXISTS ( SELECT QUALIFICACAO.CDQUALIF   /* QUALIFICACAO DO FORNECEDOR */
                                                 FROM QUALIFICACAO
                                                WHERE (FORNECEDOR.CDQUALIF       = QUALIFICACAO.CDQUALIF)
                                                  AND (FORNECEDOR.IDFORNAUTO     = 'N')
                                                  AND ((QUALIFICACAO.IDPERCOTCMP = '2') OR ((PARASUPRI.IDULTIDTVALQ  = 'D' AND
                                                                                             TO_DATE(SYSDATE) > FORNECEDOR.DTVALQUALIF) OR (PARASUPRI.IDULTIDTVALQ = 'M' AND
                                                                                                                                            TO_DATE(SYSDATE) > LAST_DAY(FORNECEDOR.DTVALQUALIF)))))
                              AND NOT EXISTS ( SELECT QFOMARPROD.CDMARCA   /* QUALIFICACAO DE PRODUTO/MARCA */
                                                 FROM QFOMARPROD
                                                WHERE (QFOMARPROD.CDPRODUTO    = PRODUTO.CDPRODUTO)
                                                  AND (QFOMARPROD.CDMARCA      = NVL(MARCPRODCOMP.CDMARCA, PARASUPRI.CDMARCA))
                                                  AND ((QFOMARPROD.IDAPRMARPRO = 'N' AND QFOMARPROD.IDAUTMARPRO = 'N') OR ((QFOMARPROD.IDAPRMARPRO = 'S') AND
                                                                                                                           ((PARASUPRI.IDULTIDTVALQ = 'M' AND
                                                                                                                             TO_DATE(SYSDATE) > LAST_DAY(QFOMARPROD.DTVALAPROVA)) OR
                                                                                                                            (PARASUPRI.IDULTIDTVALQ = 'D' AND TO_DATE(SYSDATE) > QFOMARPROD.DTVALAPROVA)))))
                              AND EXISTS ( SELECT QFOMARPROD.CDMARCA /* QUALIFICACAO DE PRODUTO/MARCA */
                                             FROM QFOMARPROD
                                            WHERE QFOMARPROD.CDPRODUTO = PRODUTO.CDPRODUTO
                                              AND QFOMARPROD.CDMARCA   = NVL(MARCPRODCOMP.CDMARCA, PARASUPRI.CDMARCA)
                                            UNION
                                           SELECT PARASUPRI.CDMARCA
                                             FROM PARASUPRI
                                            WHERE PARASUPRI.CDFILIAL    = P_CDFILIAL
                                              AND (PARASUPRI.IDMARSEMQUA = 'N' OR PARASUPRI.IDMARSEMQUA IS NULL))
                              AND NOT EXISTS ( SELECT QFOPRODFORN.CDPRODUTO /* QUALIFICACAO DE PRODUTO/FORNECEDOR */
                                                 FROM QFOPRODFORN
                                                WHERE (QFOPRODFORN.CDPRODUTO = PRODFORNCOMP.CDPRODCOMPL)
                                                  AND (QFOPRODFORN.CDFORNECED= PRODFORNCOMP.CDFORNECED)
                                                  AND ((QFOPRODFORN.IDFORNAPROV = 'N' AND
                                                        QFOPRODFORN.IDFORNAUTOR = 'N') OR (QFOPRODFORN.IDFORNAPROV = 'S' AND
                                                                                           ((PARASUPRI.IDULTIDTVALQ = 'M' AND
                                                                                             TO_DATE(SYSDATE) > LAST_DAY(QFOPRODFORN.DTVALPRFORN)) OR
                                                                                            (PARASUPRI.IDULTIDTVALQ = 'D' AND
                                                                                             TO_DATE(SYSDATE) > QFOPRODFORN.DTVALPRFORN)))))
                              AND EXISTS (  SELECT 1
                                              FROM MARCFORNPEDCOL
                                             WHERE MARCFORNPEDCOL.CDFORNECED = FORNECEDOR.CDFORNECED
                                               AND MARCFORNPEDCOL.CDMARCA    = MARCA.CDMARCA
                                             UNION ALL
                                            SELECT 1
                                              FROM DUAL
                                             WHERE NOT EXISTS (  SELECT 1
                                                                   FROM MARCFORNPEDCOL
                                                                  WHERE MARCFORNPEDCOL.CDFORNECED = FORNECEDOR.CDFORNECED))
                         ) COMPLETO,
                         ( SELECT FILIAL.CDREGIAO, PRODACOMPRAR.CDFILIAL, PRODACOMPRAR.CDPRODUTO, NVL(PRODACOMPRAR.QTACOMPRAR, 0) AS QTACOMPRAR
                             FROM ( SELECT COMP.CDFILIAL, COMP.DTPROGENTR, COMP.CDPRODUTO, ROUND((COMP.QTDECOMP-NVL(JACOMP.QTDECOMP,0)) / COMP.VRFATOCONV, 5) AS QTACOMPRAR
                                      FROM ( SELECT ITEMSOLI.CDFILSOLI AS CDFILIAL, ITEMSOLI.DTPROGENTR, PRODUTO.CDPRODUTO, PRODUTO.CDPRODESTO, PRODUTO.VRFATOCONV,
                                                    SUM(ITEMSOLI.QTSOLIPROD*PRODUTO.VRFATOCONV) AS QTDECOMP
                                               FROM PRODUTO, ITEMSOLI
                                              WHERE (ITEMSOLI.IDITMCONS = 'N')
                                                AND (NVL(ITEMSOLI.IDSOLIAPROV,'S') = 'S')
                                                AND (ITEMSOLI.CDPRODUTO = PRODUTO.CDPRODUTO)
                                                AND (PRODUTO.CDARVPROD   BETWEEN P_CDPRODINI AND P_CDPRODFIN OR P_TPRODUTO = 'T')
                                                AND (ITEMSOLI.DTPROGENTR BETWEEN P_DTINI AND P_DTFIN)
                                              GROUP BY ITEMSOLI.CDFILSOLI, ITEMSOLI.DTPROGENTR, PRODUTO.CDPRODESTO, PRODUTO.CDPRODUTO, PRODUTO.VRFATOCONV
                                           ) COMP,
                                           ( SELECT ITEMAUTF.CDFILDEST AS CDFILIAL, ITEMAUTF.DTENTRITMSOL, PRODUTO.CDPRODESTO,
                                                    SUM(ITEMAUTF.QTPROGENTAF*PRODUTO.VRFATOCONV) AS QTDECOMP
                                               FROM PRODUTO, ITEMAUTF, AUTOFORNE
                                              WHERE (AUTOFORNE.CDFILDEST = ITEMAUTF.CDFILDEST)
                                                AND (AUTOFORNE.CDFILLANC = ITEMAUTF.CDFILLANC)
                                                AND (AUTOFORNE.NRAUTOFORN = ITEMAUTF.NRAUTOFORN)
                                                AND (ITEMAUTF.CDPRODUTO = PRODUTO.CDPRODUTO)
                                                AND (AUTOFORNE.IDSITUATUAAF IS NULL)
                                                AND (AUTOFORNE.IDAFFORALIM = 'N')
                                                AND (AUTOFORNE.IDAUTOFORNEX = 'N')
                                                AND (ITEMAUTF.DTENTRITMSOL BETWEEN P_DTINI AND P_DTFIN)
                                                AND NVL(AUTOFORNE.IDBAIXAAF, '0') <> '5'
                                              GROUP BY ITEMAUTF.CDFILDEST, ITEMAUTF.DTENTRITMSOL, PRODUTO.CDPRODESTO
                                           ) JACOMP
                                     WHERE COMP.CDFILIAL = JACOMP.CDFILIAL (+)
                                       AND COMP.DTPROGENTR = JACOMP.DTENTRITMSOL (+)
                                       AND COMP.CDPRODESTO = JACOMP.CDPRODESTO (+)
                                       AND ROUND((COMP.QTDECOMP-NVL(JACOMP.QTDECOMP,0)) / COMP.VRFATOCONV, 5) > 0
                                  ) PRODACOMPRAR, FILIAL
                            WHERE (FILIAL.CDFILCENTCMP = P_CDFILIAL OR FILIAL.CDFILIAL = P_CDFILIAL AND FILIAL.CDFILCENTCMP IS NULL)
                              AND INSTR(NVL(P_CDREGIAO, FILIAL.CDREGIAO), FILIAL.CDREGIAO) <> 0
                              AND (FILIAL.CDFILIAL = PRODACOMPRAR.CDFILIAL)
                         ) PRODACOMPRAR,
                         ( SELECT PARAMPRODSUP.CDREGIAO, PARAMPRODSUP.CDPRODUTO
                             FROM PARAMPRODSUP, FILIAL
                            WHERE FILIAL.CDFILIAL = P_CDFILIPROC
                              AND FILIAL.IDFUNCAOFILI = 'C'
                              AND FILIAL.CDFILIAL = PARAMPRODSUP.CDFILICTRL
                              AND PARAMPRODSUP.IDFILINEGCOR = 'S'
                            UNION ALL
                           SELECT PARAMPRODSUP.CDREGIAO, PARAMPRODSUP.CDPRODUTO
                             FROM PARAMPRODSUP, FILIAL
                            WHERE FILIAL.CDFILIAL = P_CDFILIPROC
                              AND FILIAL.IDFUNCAOFILI = 'R'
                              AND FILIAL.CDFILIAL = PARAMPRODSUP.CDFILICTRL
                              AND PARAMPRODSUP.IDFILINEGREG = 'S'
                         ) PARAMPRODSUP
                   WHERE PARASUPRI.CDFILIAL = P_CDFILIAL
                     AND NVL(PARASUPRI.IDCONSPRSOL, 'N') = 'S'
                     AND COMPLETO.CDPRODUTO = PRODACOMPRAR.CDPRODUTO
                     AND COMPLETO.CDREGIAO  = PRODACOMPRAR.CDREGIAO
                     AND PARAMPRODSUP.CDPRODUTO = COMPLETO.CDPRODUTO
                     AND PARAMPRODSUP.CDREGIAO  = COMPLETO.CDREGIAO
                     AND NOT EXISTS ( SELECT 1
                                        FROM REFORFIL
                                       WHERE REFORFIL.CDFORNECED = COMPLETO.CDFORNECED
                                         AND REFORFIL.CDFILIAL  = PRODACOMPRAR.CDFILIAL
                                         AND REFORFIL.CDPERIENTR IS NULL)
                )
          GROUP BY CDREGIAO, NMREGIAO, CDOPERADOR, NMOPERADOR, CDFORNECED, NRINSJURFORN,
                  IDTPIJURFORN, NMRAZSOCFORN, NMFANTFORN, CDPRODUTO, NMPRODUTO, SGUNIDADE,
                  CDPRODESTO, IDTPFRETFORN, CDMARCA, NMMARCA, CDMARCAPADR, CDARVPROD;
   BEGIN
      FOR CONTADOR IN PED_COL_ACOMP LOOP
         V_PIPE.EXTEND;
         V_PIPE(V_INDICE) := CONTADOR;
         PIPE ROW(V_PIPE(V_INDICE));
         V_INDICE := V_INDICE+1;
      END LOOP;
      RETURN;
   END PED_COL_ACOMP;

   FUNCTION PED_COL_COTACAO( P_CDCOMPRADOR   VARCHAR2,
                             P_CDFILIAL      VARCHAR2,
                             P_CDPRODINI     VARCHAR2,
                             P_CDPRODFIN     VARCHAR2,
                             P_TPRODUTO      VARCHAR2,
                             P_CDFORNECED    VARCHAR2,
                             P_CDREGIAO      VARCHAR2,
                             P_CDMARCA       VARCHAR2,
                             P_CDFILIPROC    VARCHAR2,
                             P_NRCOLEPRECO   VARCHAR2,
                             P_DTINI         DATE,
                             P_DTFIN         DATE) RETURN TABELA PIPELINED IS

      V_PIPE TABELA := TABELA();
      V_INDICE NUMBER := 1;

      CURSOR PED_COL_COTACAO IS
         SELECT A.CDREGIAO, A.NMREGIAO, A.CDOPERADOR, A.NMOPERADOR, A.CDFORNECED, A.NRINSJURFORN,
                A.IDTPIJURFORN, A.NMRAZSOCFORN, A.NMFANTFORN, A.CDPRODUTO, A.NMPRODUTO, A.SGUNIDADE,
                A.CDPRODESTO, A.IDTPFRETFORN, A.CDMARCA, A.NMMARCA, A.CDMARCAPADR, A.CDARVPROD,
                A.QTACOMPRAR, ' ' AS NRCOMPRA
           FROM ( SELECT FORNECEDOR.CDFORNECED, FORNECEDOR.IDTPIJURFORN, FORNECEDOR.NRINSJURFORN, FORNECEDOR.NMRAZSOCFORN,
                         FORNECEDOR.IDTPFRETFORN, FORNECEDOR.DTVALQUALIF, FORNECEDOR.IDFORNAUTO, FORNECEDOR.CDQUALIF,
                         PARASUPRI.IDULTIDTVALQ, REGIAO.NMREGIAO, MARCA.CDMARCA, PRODUTO.CDPRODESTO, OPERADOR.CDOPERADOR,
                         PRODUTO.CDARVPROD, PRODUTO.SGUNIDADE, PRODUTO.NMPRODUTO, FORNECEDOR.NMFANTFORN,
                         NVL(ITEMCOLE.QTACMPITMCOL, 0) AS QTACOMPRAR, REGIAO.CDREGIAO, PRODUTO.CDPRODUTO,
                         OPERADOR.NMOPERADOR, REPLACE(REPLACE(MARCA.NMMARCA, CHR(13), ''), CHR(10), '') NMMARCA,
                         MARCA.CDMARCA AS CDMARCAPADR, ' ' AS NRCOMPRA
                    FROM PARASUPRI, COLETAPR, ITEMCOLE, PRODUTO, FILIAL FILI,
                         ( SELECT CDREGIAO, NMREGIAO
                             FROM REGIAO
                            WHERE INSTR(NVL(P_CDREGIAO, REGIAO.CDREGIAO), REGIAO.CDREGIAO) <> 0) REGIAO,
                         ( SELECT CDOPERADOR, NMOPERADOR
                             FROM OPERADOR
                            WHERE INSTR(NVL(P_CDCOMPRADOR, OPERADOR.CDOPERADOR), OPERADOR.CDOPERADOR) <> 0) OPERADOR,
                         ( SELECT CDFORNECED, IDTPIJURFORN, NRINSJURFORN, NMRAZSOCFORN, NMFANTFORN, IDTPFRETFORN,
                                  DTVALQUALIF, IDFORNAUTO, CDQUALIF
                             FROM FORNECEDOR
                            WHERE INSTR(NVL(P_CDFORNECED, FORNECEDOR.CDFORNECED), FORNECEDOR.CDFORNECED) <> 0) FORNECEDOR,
                         ( SELECT CDMARCA, NMMARCA, IDMARCAATIVA
                             FROM MARCA
                            WHERE INSTR(NVL(P_CDMARCA, CDMARCA), CDMARCA) <> 0) MARCA
                   WHERE PARASUPRI.CDFILIAL = P_CDFILIAL
                     AND NVL(PARASUPRI.IDCONSPRSOL, 'N') <> 'S'
                     AND COLETAPR.CDFILIAL    = P_CDFILIAL
                     AND COLETAPR.NRCOLEPRECO = P_NRCOLEPRECO
                     AND COLETAPR.CDOPERADOR  = OPERADOR.CDOPERADOR
                     AND ITEMCOLE.CDFILIAL    = P_CDFILIAL
                     AND ITEMCOLE.NRCOLEPRECO = COLETAPR.NRCOLEPRECO
                     AND (PRODUTO.CDARVPROD BETWEEN P_CDPRODINI AND P_CDPRODFIN)
                     AND ITEMCOLE.CDPRODUTO  = PRODUTO.CDPRODUTO
                     AND ITEMCOLE.CDREGIAO   = REGIAO.CDREGIAO
                     AND ITEMCOLE.CDFORNECED = FORNECEDOR.CDFORNECED
                     AND ITEMCOLE.CDMARCA    = MARCA.CDMARCA
                     AND MARCA.IDMARCAATIVA  = 'A'
                     AND FILI.CDFILIAL = P_CDFILIPROC
                     AND ((FILI.IDFUNCAOFILI IS NULL) OR (FILI.IDFUNCAOFILI = 'O'))
                     AND EXISTS (   SELECT 1
                                      FROM MARCFORNPEDCOL
                                     WHERE MARCFORNPEDCOL.CDFORNECED = FORNECEDOR.CDFORNECED
                                       AND MARCFORNPEDCOL.CDMARCA    = MARCA.CDMARCA
                                     UNION ALL
                                    SELECT 1
                                      FROM DUAL
                                     WHERE NOT EXISTS (SELECT 1
                                                         FROM MARCFORNPEDCOL
                                                        WHERE MARCFORNPEDCOL.CDFORNECED = FORNECEDOR.CDFORNECED))


                  UNION ALL

                  SELECT FORNECEDOR.CDFORNECED, FORNECEDOR.IDTPIJURFORN, FORNECEDOR.NRINSJURFORN, FORNECEDOR.NMRAZSOCFORN,
                         FORNECEDOR.IDTPFRETFORN, FORNECEDOR.DTVALQUALIF, FORNECEDOR.IDFORNAUTO, FORNECEDOR.CDQUALIF,
                         PARASUPRI.IDULTIDTVALQ, REGIAO.NMREGIAO, MARCA.CDMARCA, PRODUTO.CDPRODESTO, OPERADOR.CDOPERADOR,
                         PRODUTO.CDARVPROD, PRODUTO.SGUNIDADE, PRODUTO.NMPRODUTO, FORNECEDOR.NMFANTFORN, NVL(ITEMCOLE.QTACMPITMCOL, 0) AS QTACOMPRAR,
                         REGIAO.CDREGIAO, PRODUTO.CDPRODUTO, OPERADOR.NMOPERADOR, REPLACE(REPLACE(MARCA.NMMARCA, CHR(13), ''), CHR(10), '') NMMARCA,
                         MARCA.CDMARCA AS CDMARCAPADR, ' ' AS NRCOMPRA
                    FROM PARASUPRI, COLETAPR, ITEMCOLE, PRODUTO,
                         ( SELECT CDREGIAO, NMREGIAO
                             FROM REGIAO
                            WHERE INSTR(NVL(P_CDREGIAO, REGIAO.CDREGIAO), REGIAO.CDREGIAO) <> 0) REGIAO,
                         ( SELECT CDOPERADOR, NMOPERADOR
                             FROM OPERADOR
                            WHERE INSTR(NVL(P_CDCOMPRADOR, OPERADOR.CDOPERADOR), OPERADOR.CDOPERADOR) <> 0 ) OPERADOR,
                         ( SELECT CDFORNECED, IDTPIJURFORN, NRINSJURFORN, NMRAZSOCFORN, NMFANTFORN, IDTPFRETFORN,
                                  DTVALQUALIF, IDFORNAUTO, CDQUALIF
                             FROM FORNECEDOR
                            WHERE INSTR(NVL(P_CDFORNECED, FORNECEDOR.CDFORNECED), FORNECEDOR.CDFORNECED) <> 0 ) FORNECEDOR,
                         ( SELECT CDMARCA, NMMARCA, IDMARCAATIVA
                             FROM MARCA
                            WHERE INSTR(NVL(P_CDMARCA, CDMARCA), CDMARCA) <> 0) MARCA,
                         ( SELECT PARAMPRODSUP.CDREGIAO, PARAMPRODSUP.CDPRODUTO
                             FROM PARAMPRODSUP, FILIAL
                            WHERE FILIAL.CDFILIAL = P_CDFILIPROC
                              AND FILIAL.IDFUNCAOFILI = 'C'
                              AND FILIAL.CDFILIAL = PARAMPRODSUP.CDFILICTRL
                              AND PARAMPRODSUP.IDFILINEGCOR = 'S'
                            UNION ALL
                           SELECT PARAMPRODSUP.CDREGIAO, PARAMPRODSUP.CDPRODUTO
                             FROM PARAMPRODSUP, FILIAL
                            WHERE FILIAL.CDFILIAL = P_CDFILIPROC
                              AND FILIAL.IDFUNCAOFILI = 'R'
                              AND FILIAL.CDFILIAL = PARAMPRODSUP.CDFILICTRL
                              AND PARAMPRODSUP.IDFILINEGREG = 'S') PARAMPRODSUP
                   WHERE PARASUPRI.CDFILIAL = P_CDFILIAL
                     AND NVL(PARASUPRI.IDCONSPRSOL, 'N') <> 'S'
                     AND COLETAPR.CDFILIAL    = P_CDFILIAL
                     AND COLETAPR.NRCOLEPRECO = P_NRCOLEPRECO
                     AND COLETAPR.CDOPERADOR  = OPERADOR.CDOPERADOR
                     AND ITEMCOLE.CDFILIAL    = P_CDFILIAL
                     AND ITEMCOLE.NRCOLEPRECO = COLETAPR.NRCOLEPRECO
                     AND (PRODUTO.CDARVPROD BETWEEN P_CDPRODINI AND P_CDPRODFIN)
                     AND ITEMCOLE.CDPRODUTO  = PRODUTO.CDPRODUTO
                     AND ITEMCOLE.CDREGIAO   = REGIAO.CDREGIAO
                     AND ITEMCOLE.CDFORNECED = FORNECEDOR.CDFORNECED
                     AND ITEMCOLE.CDMARCA    = MARCA.CDMARCA
                     AND MARCA.IDMARCAATIVA       = 'A'
                     AND PARAMPRODSUP.CDPRODUTO = ITEMCOLE.CDPRODUTO
                     AND PARAMPRODSUP.CDREGIAO  = ITEMCOLE.CDREGIAO
                     AND EXISTS ( SELECT 1
                                    FROM MARCFORNPEDCOL
                                   WHERE MARCFORNPEDCOL.CDFORNECED = FORNECEDOR.CDFORNECED
                                     AND MARCFORNPEDCOL.CDMARCA    = MARCA.CDMARCA
                                   UNION ALL
                                  SELECT 1
                                    FROM DUAL
                                   WHERE NOT EXISTS (SELECT 1
                                                       FROM MARCFORNPEDCOL
                                                      WHERE MARCFORNPEDCOL.CDFORNECED = FORNECEDOR.CDFORNECED))

                  /*################################## IDCONSPRSOL DA PARASUPRI #############################################*/

                  UNION ALL

                  SELECT FORNECEDOR.CDFORNECED, FORNECEDOR.IDTPIJURFORN, FORNECEDOR.NRINSJURFORN, FORNECEDOR.NMRAZSOCFORN,
                         FORNECEDOR.IDTPFRETFORN, FORNECEDOR.DTVALQUALIF, FORNECEDOR.IDFORNAUTO, FORNECEDOR.CDQUALIF,
                         PARASUPRI.IDULTIDTVALQ, REGIAO.NMREGIAO, MARCA.CDMARCA, PRODUTO.CDPRODESTO, OPERADOR.CDOPERADOR,
                         PRODUTO.CDARVPROD, PRODUTO.SGUNIDADE, PRODUTO.NMPRODUTO, FORNECEDOR.NMFANTFORN, NVL(ITEMCOLE.QTACMPITMCOL, 0) AS QTACOMPRAR,
                         REGIAO.CDREGIAO, PRODUTO.CDPRODUTO, OPERADOR.NMOPERADOR, REPLACE(REPLACE(MARCA.NMMARCA, CHR(13), ''), CHR(10), '') NMMARCA,
                         MARCA.CDMARCA AS CDMARCAPADR, ' ' AS NRCOMPRA
                    FROM PARASUPRI, COLETAPR, ITEMCOLE, PRODUTO, FILIAL FILI,
                         ( SELECT CDREGIAO, NMREGIAO
                             FROM REGIAO
                            WHERE INSTR(NVL(P_CDREGIAO, REGIAO.CDREGIAO), REGIAO.CDREGIAO) <> 0 ) REGIAO,
                         ( SELECT CDOPERADOR, NMOPERADOR
                             FROM OPERADOR
                            WHERE INSTR(NVL(P_CDCOMPRADOR, OPERADOR.CDOPERADOR), OPERADOR.CDOPERADOR) <> 0 )  OPERADOR,
                         ( SELECT CDFORNECED, IDTPIJURFORN, NRINSJURFORN, NMRAZSOCFORN, NMFANTFORN, IDTPFRETFORN, DTVALQUALIF,
                                  IDFORNAUTO, CDQUALIF
                             FROM FORNECEDOR
                            WHERE INSTR(NVL(P_CDFORNECED, FORNECEDOR.CDFORNECED), FORNECEDOR.CDFORNECED) <> 0 ) FORNECEDOR,
                         ( SELECT CDMARCA, NMMARCA, IDMARCAATIVA
                             FROM MARCA
                            WHERE INSTR(NVL(P_CDMARCA, CDMARCA), CDMARCA) <> 0) MARCA
                   WHERE PARASUPRI.CDFILIAL = P_CDFILIAL
                     AND NVL(PARASUPRI.IDCONSPRSOL, 'N') = 'S'
                     AND COLETAPR.CDFILIAL    = P_CDFILIAL
                     AND COLETAPR.NRCOLEPRECO = P_NRCOLEPRECO
                     AND COLETAPR.CDOPERADOR  = OPERADOR.CDOPERADOR
                     AND ITEMCOLE.CDFILIAL    = P_CDFILIAL
                     AND ITEMCOLE.NRCOLEPRECO = COLETAPR.NRCOLEPRECO
                     AND (PRODUTO.CDARVPROD BETWEEN P_CDPRODINI AND P_CDPRODFIN)
                     AND ITEMCOLE.CDPRODUTO  = PRODUTO.CDPRODUTO
                     AND ITEMCOLE.CDREGIAO   = REGIAO.CDREGIAO
                     AND ITEMCOLE.CDFORNECED = FORNECEDOR.CDFORNECED
                     AND ITEMCOLE.CDMARCA    = MARCA.CDMARCA
                     AND MARCA.IDMARCAATIVA  = 'A'
                     AND FILI.CDFILIAL = P_CDFILIPROC
                     AND ((FILI.IDFUNCAOFILI IS NULL) OR (FILI.IDFUNCAOFILI = 'O'))
                     AND EXISTS ( SELECT 1
                                    FROM MARCFORNPEDCOL
                                   WHERE MARCFORNPEDCOL.CDFORNECED = FORNECEDOR.CDFORNECED
                                     AND MARCFORNPEDCOL.CDMARCA    = MARCA.CDMARCA
                                   UNION ALL
                                  SELECT 1
                                    FROM DUAL
                                   WHERE NOT EXISTS ( SELECT 1
                                                        FROM MARCFORNPEDCOL
                                                       WHERE MARCFORNPEDCOL.CDFORNECED = FORNECEDOR.CDFORNECED))

                  UNION ALL

                  SELECT FORNECEDOR.CDFORNECED, FORNECEDOR.IDTPIJURFORN, FORNECEDOR.NRINSJURFORN, FORNECEDOR.NMRAZSOCFORN,
                         FORNECEDOR.IDTPFRETFORN, FORNECEDOR.DTVALQUALIF, FORNECEDOR.IDFORNAUTO, FORNECEDOR.CDQUALIF,
                         PARASUPRI.IDULTIDTVALQ, REGIAO.NMREGIAO, MARCA.CDMARCA, PRODUTO.CDPRODESTO, OPERADOR.CDOPERADOR,
                         PRODUTO.CDARVPROD, PRODUTO.SGUNIDADE, PRODUTO.NMPRODUTO, FORNECEDOR.NMFANTFORN, NVL(ITEMCOLE.QTACMPITMCOL, 0) AS QTACOMPRAR,
                         REGIAO.CDREGIAO, PRODUTO.CDPRODUTO, OPERADOR.NMOPERADOR, REPLACE(REPLACE(MARCA.NMMARCA, CHR(13), ''), CHR(10), '') NMMARCA,
                         MARCA.CDMARCA AS CDMARCAPADR, ' ' AS NRCOMPRA
                    FROM PARASUPRI, COLETAPR, ITEMCOLE, PRODUTO,
                         ( SELECT CDREGIAO, NMREGIAO
                             FROM REGIAO
                            WHERE INSTR(NVL(P_CDREGIAO, REGIAO.CDREGIAO), REGIAO.CDREGIAO) <> 0 ) REGIAO,
                         ( SELECT CDOPERADOR, NMOPERADOR
                             FROM OPERADOR
                            WHERE INSTR(NVL(P_CDCOMPRADOR, OPERADOR.CDOPERADOR), OPERADOR.CDOPERADOR) <> 0 )  OPERADOR,
                         ( SELECT CDFORNECED, IDTPIJURFORN, NRINSJURFORN, NMRAZSOCFORN, NMFANTFORN, IDTPFRETFORN, DTVALQUALIF, IDFORNAUTO, CDQUALIF
                             FROM FORNECEDOR
                            WHERE INSTR(NVL(P_CDFORNECED, FORNECEDOR.CDFORNECED), FORNECEDOR.CDFORNECED) <> 0 ) FORNECEDOR,
                         ( SELECT CDMARCA, NMMARCA, IDMARCAATIVA
                             FROM MARCA
                            WHERE INSTR(NVL(P_CDMARCA, CDMARCA), CDMARCA) <> 0) MARCA,
                         ( SELECT PARAMPRODSUP.CDREGIAO, PARAMPRODSUP.CDPRODUTO
                             FROM PARAMPRODSUP, FILIAL
                            WHERE FILIAL.CDFILIAL = P_CDFILIPROC
                              AND FILIAL.IDFUNCAOFILI = 'C'
                              AND FILIAL.CDFILIAL = PARAMPRODSUP.CDFILICTRL
                              AND PARAMPRODSUP.IDFILINEGCOR = 'S'
                            UNION ALL
                           SELECT PARAMPRODSUP.CDREGIAO, PARAMPRODSUP.CDPRODUTO
                             FROM PARAMPRODSUP, FILIAL
                            WHERE FILIAL.CDFILIAL = P_CDFILIPROC
                              AND FILIAL.IDFUNCAOFILI = 'R'
                              AND FILIAL.CDFILIAL = PARAMPRODSUP.CDFILICTRL
                              AND PARAMPRODSUP.IDFILINEGREG = 'S') PARAMPRODSUP

                   WHERE PARASUPRI.CDFILIAL = P_CDFILIAL
                     AND NVL(PARASUPRI.IDCONSPRSOL, 'N') = 'S'
                     AND COLETAPR.CDFILIAL    = P_CDFILIAL
                     AND COLETAPR.NRCOLEPRECO = P_NRCOLEPRECO
                     AND COLETAPR.CDOPERADOR  = OPERADOR.CDOPERADOR
                     AND ITEMCOLE.CDFILIAL    = P_CDFILIAL
                     AND ITEMCOLE.NRCOLEPRECO = COLETAPR.NRCOLEPRECO
                     AND (PRODUTO.CDARVPROD BETWEEN P_CDPRODINI AND P_CDPRODFIN)
                     AND ITEMCOLE.CDPRODUTO  = PRODUTO.CDPRODUTO
                     AND ITEMCOLE.CDREGIAO   = REGIAO.CDREGIAO
                     AND ITEMCOLE.CDFORNECED = FORNECEDOR.CDFORNECED
                     AND ITEMCOLE.CDMARCA    = MARCA.CDMARCA
                     AND MARCA.IDMARCAATIVA       = 'A'
                     AND PARAMPRODSUP.CDPRODUTO = ITEMCOLE.CDPRODUTO
                     AND PARAMPRODSUP.CDREGIAO  = ITEMCOLE.CDREGIAO
                     AND EXISTS ( SELECT 1
                                    FROM MARCFORNPEDCOL
                                   WHERE MARCFORNPEDCOL.CDFORNECED = FORNECEDOR.CDFORNECED
                                     AND MARCFORNPEDCOL.CDMARCA    = MARCA.CDMARCA
                                   UNION ALL
                                  SELECT 1
                                    FROM DUAL
                                   WHERE NOT EXISTS (SELECT 1
                                                       FROM MARCFORNPEDCOL
                                                      WHERE MARCFORNPEDCOL.CDFORNECED = FORNECEDOR.CDFORNECED))
                ) A, MARCPRODCOMP, PARASUPRI, PRODFORNCOMP
          WHERE PARASUPRI.CDFILIAL = P_CDFILIAL
            AND NVL(MARCPRODCOMP.CDMARCA, PARASUPRI.CDMARCA) IS NOT NULL
            AND INSTR(NVL(P_CDMARCA, MARCPRODCOMP.CDMARCA(+)), MARCPRODCOMP.CDMARCA(+)) <> 0
            AND A.CDFORNECED = PRODFORNCOMP.CDFORNECED
            AND A.CDPRODUTO = PRODFORNCOMP.CDPRODCOMPL
            AND PRODFORNCOMP.CDPRODCOMPL = MARCPRODCOMP.CDPRMARCOMPL(+)
            AND A.CDMARCA = NVL(MARCPRODCOMP.CDMARCA, PARASUPRI.CDMARCA)
            AND NOT EXISTS ( SELECT REFOREG.CDREGIAO, REFOREG.CDFORNECED
                               FROM REFOREG
                              WHERE REFOREG.CDREGIAO = A.CDREGIAO
                                AND REFOREG.CDFORNECED = A.CDFORNECED)
            AND EXISTS ( SELECT PRODCOMP.CDPRODUTO, PRODCOMP.CDOPERADOR
                           FROM PRODCOMP, PRODUTO PR
                          WHERE PRODCOMP.CDPRODUTO = PR.CDPRODUTO
                            AND A.CDARVPROD LIKE PR.CDARVPROD || '%'
                            AND A.CDOPERADOR = PRODCOMP.CDOPERADOR)
            AND NOT EXISTS ( SELECT QUALIFICACAO.CDQUALIF   /* QUALIFICACAO DO FORNECEDOR */
                               FROM QUALIFICACAO
                              WHERE (A.CDQUALIF   = QUALIFICACAO.CDQUALIF)
                                AND (A.IDFORNAUTO = 'N')
                                AND ((QUALIFICACAO.IDPERCOTCMP = '2') OR
                                    ((A.IDULTIDTVALQ = 'D'   AND TO_DATE(SYSDATE) > A.DTVALQUALIF) OR
                                    (A.IDULTIDTVALQ = 'M'    AND TO_DATE(SYSDATE) > LAST_DAY(A.DTVALQUALIF)))))
            AND NOT EXISTS ( SELECT QFOMARPROD.CDMARCA   /* QUALIFICACAO DE PRODUTO/MARCA */
                               FROM QFOMARPROD
                              WHERE (QFOMARPROD.CDPRODUTO    = A.CDPRODUTO) AND
                                    (QFOMARPROD.CDMARCA      = NVL(MARCPRODCOMP.CDMARCA, PARASUPRI.CDMARCA)) AND
                                    ((QFOMARPROD.IDAPRMARPRO = 'N' AND QFOMARPROD.IDAUTMARPRO = 'N')   OR
                                    ((QFOMARPROD.IDAPRMARPRO = 'S') AND ((PARASUPRI.IDULTIDTVALQ = 'M' AND
                                      TO_DATE(SYSDATE) > LAST_DAY(QFOMARPROD.DTVALAPROVA)) OR
                                    (PARASUPRI.IDULTIDTVALQ = 'D' AND TO_DATE(SYSDATE) > QFOMARPROD.DTVALAPROVA)))))
            AND EXISTS ( SELECT QFOMARPROD.CDMARCA /* QUALIFICACAO DE PRODUTO/MARCA */
                           FROM QFOMARPROD
                          WHERE QFOMARPROD.CDPRODUTO = A.CDPRODUTO
                            AND QFOMARPROD.CDMARCA   = NVL(MARCPRODCOMP.CDMARCA, PARASUPRI.CDMARCA)
                          UNION
                         SELECT PARASUPRI.CDMARCA
                           FROM PARASUPRI
                          WHERE PARASUPRI.CDFILIAL    = P_CDFILIAL
                            AND (PARASUPRI.IDMARSEMQUA = 'N' OR PARASUPRI.IDMARSEMQUA IS NULL))
            AND NOT EXISTS ( SELECT QFOPRODFORN.CDPRODUTO /* QUALIFICACAO DE PRODUTO/FORNECEDOR */
                               FROM QFOPRODFORN
                              WHERE (QFOPRODFORN.CDPRODUTO = PRODFORNCOMP.CDPRODCOMPL)
                                AND (QFOPRODFORN.CDFORNECED= PRODFORNCOMP.CDFORNECED)
                                AND ((QFOPRODFORN.IDFORNAPROV = 'N' AND QFOPRODFORN.IDFORNAUTOR = 'N') OR
                                    ((QFOPRODFORN.IDFORNAPROV = 'S') AND
                                    ((PARASUPRI.IDULTIDTVALQ = 'M' AND
                                      TO_DATE(SYSDATE) > LAST_DAY(QFOPRODFORN.DTVALPRFORN)) OR
                                      (PARASUPRI.IDULTIDTVALQ = 'D' AND
                                       TO_DATE(SYSDATE) > QFOPRODFORN.DTVALPRFORN)))))
            AND EXISTS ( SELECT 1
                           FROM MARCFORNPEDCOL
                          WHERE MARCFORNPEDCOL.CDFORNECED = A.CDFORNECED
                            AND MARCFORNPEDCOL.CDMARCA    = A.CDMARCA
                          UNION ALL
                         SELECT 1
                           FROM DUAL
                          WHERE NOT EXISTS (SELECT 1
                                              FROM MARCFORNPEDCOL
                                             WHERE MARCFORNPEDCOL.CDFORNECED = A.CDFORNECED))
          GROUP BY A.CDFORNECED, A.IDTPIJURFORN, A.NRINSJURFORN, A.NMRAZSOCFORN, A.IDTPFRETFORN,
                   A.NMREGIAO, A.CDMARCA, A.CDPRODESTO, A.CDOPERADOR, A.CDARVPROD, A.SGUNIDADE,
                   A.NMPRODUTO, A.NMFANTFORN, A.QTACOMPRAR, A.CDREGIAO, A.CDPRODUTO, A.NMOPERADOR,
                   A.NMMARCA, A.CDMARCAPADR;

   BEGIN
      FOR CONTADOR IN PED_COL_COTACAO LOOP
         V_PIPE.EXTEND;
         V_PIPE(V_INDICE) := CONTADOR;
         PIPE ROW(V_PIPE(V_INDICE));
         V_INDICE := V_INDICE+1;
      END LOOP;
      RETURN;
   END PED_COL_COTACAO;

   FUNCTION PED_COL_COTAFORN( P_CDCOMPRADOR   VARCHAR2,
                              P_CDFILIAL      VARCHAR2,
                              P_CDPRODINI     VARCHAR2,
                              P_CDPRODFIN     VARCHAR2,
                              P_TPRODUTO      VARCHAR2,
                              P_CDFORNECED    VARCHAR2,
                              P_CDREGIAO      VARCHAR2,
                              P_CDMARCA       VARCHAR2,
                              P_CDFILIPROC    VARCHAR2,
                              P_NRCOLEPRECO   VARCHAR2,
                              P_DTINI         DATE,
                              P_DTFIN         DATE) RETURN TABELA PIPELINED IS

      V_PIPE TABELA := TABELA();
      V_INDICE NUMBER := 1;

      CURSOR PED_COL_COTAFORN IS
         SELECT A.CDREGIAO, A.NMREGIAO, A.CDOPERADOR, A.NMOPERADOR, A.CDFORNECED, A.NRINSJURFORN,
                A.IDTPIJURFORN, A.NMRAZSOCFORN, A.NMFANTFORN, A.CDPRODUTO, A.NMPRODUTO, A.SGUNIDADE,
                A.CDPRODESTO, A.IDTPFRETFORN, A.CDMARCA, A.NMMARCA, A.CDMARCAPADR, A.CDARVPROD,
                A.QTACOMPRAR, ' ' AS NRCOMPRA
           FROM ( SELECT FORNECEDOR.CDFORNECED, FORNECEDOR.IDTPIJURFORN, FORNECEDOR.NRINSJURFORN, FORNECEDOR.NMRAZSOCFORN,
                         FORNECEDOR.IDTPFRETFORN, FORNECEDOR.DTVALQUALIF, FORNECEDOR.IDFORNAUTO, FORNECEDOR.CDQUALIF,
                         PARASUPRI.IDULTIDTVALQ, REGIAO.NMREGIAO, MARCA.CDMARCA, PRODUTO.CDPRODESTO, OPERADOR.CDOPERADOR,
                         PRODUTO.CDARVPROD, PRODUTO.SGUNIDADE, PRODUTO.NMPRODUTO, FORNECEDOR.NMFANTFORN, NVL(ITEMCOLE.QTACMPITMCOL, 0) AS QTACOMPRAR,
                         REGIAO.CDREGIAO, PRODUTO.CDPRODUTO, OPERADOR.NMOPERADOR, REPLACE(REPLACE(MARCA.NMMARCA, CHR(13), ''), CHR(10), '') NMMARCA,
                         MARCA.CDMARCA AS CDMARCAPADR, ' ' AS NRCOMPRA
                    FROM PARASUPRI, COLETAPR, ITEMCOLE, PRODUTO, FILIAL FILI,
                         ( SELECT CDREGIAO, NMREGIAO
                             FROM REGIAO
                            WHERE INSTR(NVL(P_CDREGIAO, REGIAO.CDREGIAO), REGIAO.CDREGIAO) <> 0 )REGIAO,
                         ( SELECT CDOPERADOR, NMOPERADOR
                             FROM OPERADOR
                            WHERE INSTR(NVL(P_CDCOMPRADOR, OPERADOR.CDOPERADOR), OPERADOR.CDOPERADOR) <> 0 )OPERADOR,
                         ( SELECT CDFORNECED, IDTPIJURFORN, NRINSJURFORN, NMRAZSOCFORN, NMFANTFORN, IDTPFRETFORN, DTVALQUALIF, IDFORNAUTO, CDQUALIF
                             FROM FORNECEDOR
                            WHERE INSTR(P_CDFORNECED, CDFORNECED) <> 0  )FORNECEDOR,
                         ( SELECT CDMARCA, NMMARCA, IDMARCAATIVA
                             FROM MARCA
                            WHERE INSTR(NVL(P_CDMARCA, CDMARCA), CDMARCA) <> 0) MARCA
                   WHERE PARASUPRI.CDFILIAL = P_CDFILIAL
                     AND NVL(PARASUPRI.IDCONSPRSOL, 'N') <> 'S'
                     AND COLETAPR.CDFILIAL    = P_CDFILIAL
                     AND COLETAPR.NRCOLEPRECO = P_NRCOLEPRECO
                     AND COLETAPR.CDOPERADOR  = OPERADOR.CDOPERADOR
                     AND ITEMCOLE.CDFILIAL    = P_CDFILIAL
                     AND ITEMCOLE.NRCOLEPRECO = P_NRCOLEPRECO
                     AND (PRODUTO.CDARVPROD BETWEEN P_CDPRODINI AND P_CDPRODFIN)
                     AND ITEMCOLE.CDPRODUTO  = PRODUTO.CDPRODUTO
                     AND ITEMCOLE.CDREGIAO   = REGIAO.CDREGIAO
                     AND ITEMCOLE.CDMARCA    = MARCA.CDMARCA
                     AND MARCA.IDMARCAATIVA  = 'A'
                     AND NVL(PRODUTO.IDPRODATIVPR, 'N') =  'S'
                     AND ITEMCOLE.CDMARCA    = MARCA.CDMARCA
                     AND MARCA.IDMARCAATIVA  = 'A'
                     AND FILI.CDFILIAL = P_CDFILIPROC
                     AND ((FILI.IDFUNCAOFILI IS NULL) OR (FILI.IDFUNCAOFILI = 'O'))
                     AND EXISTS (SELECT 1
                                   FROM MARCFORNPEDCOL
                                  WHERE MARCFORNPEDCOL.CDFORNECED = FORNECEDOR.CDFORNECED
                                    AND MARCFORNPEDCOL.CDMARCA    = MARCA.CDMARCA
                                  UNION ALL
                                 SELECT 1
                                   FROM DUAL
                                  WHERE NOT EXISTS (SELECT 1
                                                      FROM MARCFORNPEDCOL
                                                     WHERE MARCFORNPEDCOL.CDFORNECED = FORNECEDOR.CDFORNECED))
                  UNION ALL

                  SELECT FORNECEDOR.CDFORNECED, FORNECEDOR.IDTPIJURFORN, FORNECEDOR.NRINSJURFORN, FORNECEDOR.NMRAZSOCFORN, FORNECEDOR.IDTPFRETFORN,
                         FORNECEDOR.DTVALQUALIF, FORNECEDOR.IDFORNAUTO, FORNECEDOR.CDQUALIF, PARASUPRI.IDULTIDTVALQ, REGIAO.NMREGIAO, MARCA.CDMARCA,
                         PRODUTO.CDPRODESTO, OPERADOR.CDOPERADOR, PRODUTO.CDARVPROD, PRODUTO.SGUNIDADE, PRODUTO.NMPRODUTO, FORNECEDOR.NMFANTFORN,
                         NVL(ITEMCOLE.QTACMPITMCOL, 0) AS QTACOMPRAR, REGIAO.CDREGIAO, PRODUTO.CDPRODUTO, OPERADOR.NMOPERADOR,
                         REPLACE(REPLACE(MARCA.NMMARCA, CHR(13), ''), CHR(10), '') NMMARCA, MARCA.CDMARCA AS CDMARCAPADR, ' ' AS NRCOMPRA
                    FROM PARASUPRI, COLETAPR, ITEMCOLE, PRODUTO,
                         ( SELECT CDREGIAO, NMREGIAO
                             FROM REGIAO
                            WHERE INSTR(NVL(P_CDREGIAO, REGIAO.CDREGIAO), REGIAO.CDREGIAO) <> 0 )REGIAO,
                         ( SELECT CDOPERADOR, NMOPERADOR
                             FROM OPERADOR
                            WHERE INSTR(NVL(P_CDCOMPRADOR, OPERADOR.CDOPERADOR), OPERADOR.CDOPERADOR) <> 0 )OPERADOR,
                         ( SELECT CDFORNECED, IDTPIJURFORN, NRINSJURFORN, NMRAZSOCFORN, NMFANTFORN, IDTPFRETFORN, DTVALQUALIF, IDFORNAUTO, CDQUALIF
                             FROM FORNECEDOR
                            WHERE INSTR(P_CDFORNECED, CDFORNECED) <> 0 ) FORNECEDOR,
                         ( SELECT CDMARCA, NMMARCA, IDMARCAATIVA
                             FROM MARCA
                            WHERE INSTR(NVL(P_CDMARCA, CDMARCA), CDMARCA) <> 0) MARCA,
                         ( SELECT PARAMPRODSUP.CDREGIAO, PARAMPRODSUP.CDPRODUTO
                             FROM PARAMPRODSUP, FILIAL
                            WHERE FILIAL.CDFILIAL = P_CDFILIPROC
                              AND FILIAL.IDFUNCAOFILI = 'C'
                              AND FILIAL.CDFILIAL = PARAMPRODSUP.CDFILICTRL
                              AND PARAMPRODSUP.IDFILINEGCOR = 'S'
                            UNION ALL
                           SELECT PARAMPRODSUP.CDREGIAO, PARAMPRODSUP.CDPRODUTO
                             FROM PARAMPRODSUP, FILIAL
                            WHERE FILIAL.CDFILIAL = P_CDFILIPROC
                              AND FILIAL.IDFUNCAOFILI = 'R'
                              AND FILIAL.CDFILIAL = PARAMPRODSUP.CDFILICTRL
                              AND PARAMPRODSUP.IDFILINEGREG = 'S') PARAMPRODSUP
                   WHERE PARASUPRI.CDFILIAL = P_CDFILIAL
                     AND NVL(PARASUPRI.IDCONSPRSOL, 'N') <> 'S'
                     AND COLETAPR.CDFILIAL    = P_CDFILIAL
                     AND COLETAPR.NRCOLEPRECO = P_NRCOLEPRECO
                     AND COLETAPR.CDOPERADOR  = OPERADOR.CDOPERADOR
                     AND ITEMCOLE.CDFILIAL    = P_CDFILIAL
                     AND ITEMCOLE.NRCOLEPRECO = P_NRCOLEPRECO
                     AND (PRODUTO.CDARVPROD BETWEEN P_CDPRODINI AND P_CDPRODFIN)
                     AND ITEMCOLE.CDPRODUTO  = PRODUTO.CDPRODUTO
                     AND ITEMCOLE.CDREGIAO   = REGIAO.CDREGIAO
                     AND ITEMCOLE.CDMARCA    = MARCA.CDMARCA
                     AND MARCA.IDMARCAATIVA  = 'A'
                     AND (NVL(PRODUTO.IDPRODATIVPR, 'N') =  'S')
                     AND ITEMCOLE.CDMARCA    = MARCA.CDMARCA
                     AND MARCA.IDMARCAATIVA       = 'A'
                     AND PARAMPRODSUP.CDPRODUTO = ITEMCOLE.CDPRODUTO
                     AND PARAMPRODSUP.CDREGIAO  = ITEMCOLE.CDREGIAO
                     AND EXISTS ( SELECT 1
                                    FROM MARCFORNPEDCOL
                                   WHERE MARCFORNPEDCOL.CDFORNECED = FORNECEDOR.CDFORNECED
                                     AND MARCFORNPEDCOL.CDMARCA    = MARCA.CDMARCA
                                   UNION ALL
                                  SELECT 1
                                    FROM DUAL
                                   WHERE NOT EXISTS ( SELECT 1
                                                        FROM MARCFORNPEDCOL
                                                       WHERE MARCFORNPEDCOL.CDFORNECED = FORNECEDOR.CDFORNECED))

                  /*################################## IDCONSPRSOL DA PARASUPRI #############################################*/
                  UNION ALL

                  SELECT FORNECEDOR.CDFORNECED, FORNECEDOR.IDTPIJURFORN, FORNECEDOR.NRINSJURFORN, FORNECEDOR.NMRAZSOCFORN,
                         FORNECEDOR.IDTPFRETFORN, FORNECEDOR.DTVALQUALIF, FORNECEDOR.IDFORNAUTO, FORNECEDOR.CDQUALIF, PARASUPRI.IDULTIDTVALQ,
                         REGIAO.NMREGIAO, MARCA.CDMARCA, PRODUTO.CDPRODESTO, OPERADOR.CDOPERADOR, PRODUTO.CDARVPROD, PRODUTO.SGUNIDADE,
                         PRODUTO.NMPRODUTO, FORNECEDOR.NMFANTFORN, NVL(ITEMCOLE.QTACMPITMCOL, 0) AS QTACOMPRAR, REGIAO.CDREGIAO, PRODUTO.CDPRODUTO,
                         OPERADOR.NMOPERADOR, REPLACE(REPLACE(MARCA.NMMARCA, CHR(13), ''), CHR(10), '') NMMARCA, MARCA.CDMARCA AS CDMARCAPADR,
                         ' ' AS NRCOMPRA
                    FROM PARASUPRI, COLETAPR, ITEMCOLE, PRODUTO, FILIAL FILI,
                         ( SELECT CDREGIAO, NMREGIAO
                             FROM REGIAO
                            WHERE INSTR(NVL(P_CDREGIAO, REGIAO.CDREGIAO), REGIAO.CDREGIAO) <> 0 ) REGIAO,
                         ( SELECT CDOPERADOR, NMOPERADOR
                             FROM OPERADOR
                            WHERE INSTR(NVL(P_CDCOMPRADOR, OPERADOR.CDOPERADOR), OPERADOR.CDOPERADOR) <> 0 ) OPERADOR,
                         ( SELECT CDFORNECED, IDTPIJURFORN, NRINSJURFORN, NMRAZSOCFORN, NMFANTFORN, IDTPFRETFORN, DTVALQUALIF, IDFORNAUTO, CDQUALIF
                             FROM FORNECEDOR
                            WHERE INSTR(P_CDFORNECED, CDFORNECED) <> 0 ) FORNECEDOR,
                         ( SELECT CDMARCA, NMMARCA, IDMARCAATIVA
                             FROM MARCA
                            WHERE INSTR(NVL(P_CDMARCA, CDMARCA), CDMARCA) <> 0) MARCA
                   WHERE PARASUPRI.CDFILIAL = P_CDFILIAL
                     AND NVL(PARASUPRI.IDCONSPRSOL, 'N') = 'S'
                     AND COLETAPR.CDFILIAL    = P_CDFILIAL
                     AND COLETAPR.NRCOLEPRECO = P_NRCOLEPRECO
                     AND COLETAPR.CDOPERADOR  = OPERADOR.CDOPERADOR
                     AND ITEMCOLE.CDFILIAL    = P_CDFILIAL
                     AND ITEMCOLE.NRCOLEPRECO = P_NRCOLEPRECO
                     AND (PRODUTO.CDARVPROD BETWEEN P_CDPRODINI AND P_CDPRODFIN)
                     AND ITEMCOLE.CDPRODUTO  = PRODUTO.CDPRODUTO
                     AND ITEMCOLE.CDREGIAO   = REGIAO.CDREGIAO
                     AND ITEMCOLE.CDMARCA    = MARCA.CDMARCA
                     AND MARCA.IDMARCAATIVA  = 'A'
                     AND NVL(PRODUTO.IDPRODATIVPR, 'N') =  'S'
                     AND ITEMCOLE.CDMARCA    = MARCA.CDMARCA
                     AND MARCA.IDMARCAATIVA       = 'A'
                     AND FILI.CDFILIAL = P_CDFILIPROC
                     AND ((FILI.IDFUNCAOFILI IS NULL) OR (FILI.IDFUNCAOFILI = 'O'))
                     AND EXISTS ( SELECT 1
                                    FROM MARCFORNPEDCOL
                                   WHERE MARCFORNPEDCOL.CDFORNECED = FORNECEDOR.CDFORNECED
                                     AND MARCFORNPEDCOL.CDMARCA    = MARCA.CDMARCA
                                   UNION ALL
                                  SELECT 1
                                    FROM DUAL
                                   WHERE NOT EXISTS (SELECT 1
                                                       FROM MARCFORNPEDCOL
                                                      WHERE MARCFORNPEDCOL.CDFORNECED = FORNECEDOR.CDFORNECED))

                  UNION ALL

                  SELECT FORNECEDOR.CDFORNECED, FORNECEDOR.IDTPIJURFORN, FORNECEDOR.NRINSJURFORN, FORNECEDOR.NMRAZSOCFORN, FORNECEDOR.IDTPFRETFORN,
                         FORNECEDOR.DTVALQUALIF, FORNECEDOR.IDFORNAUTO, FORNECEDOR.CDQUALIF, PARASUPRI.IDULTIDTVALQ, REGIAO.NMREGIAO, MARCA.CDMARCA,
                         PRODUTO.CDPRODESTO, OPERADOR.CDOPERADOR, PRODUTO.CDARVPROD, PRODUTO.SGUNIDADE, PRODUTO.NMPRODUTO, FORNECEDOR.NMFANTFORN,
                         NVL(ITEMCOLE.QTACMPITMCOL, 0) AS QTACOMPRAR, REGIAO.CDREGIAO, PRODUTO.CDPRODUTO, OPERADOR.NMOPERADOR,
                         REPLACE(REPLACE(MARCA.NMMARCA, CHR(13), ''), CHR(10), '') NMMARCA, MARCA.CDMARCA AS CDMARCAPADR, ' ' AS NRCOMPRA
                    FROM PARASUPRI, COLETAPR, ITEMCOLE, PRODUTO,
                         ( SELECT CDREGIAO, NMREGIAO
                             FROM REGIAO
                            WHERE INSTR(NVL(P_CDREGIAO, REGIAO.CDREGIAO), REGIAO.CDREGIAO) <> 0 ) REGIAO,
                         ( SELECT CDOPERADOR, NMOPERADOR
                             FROM OPERADOR
                            WHERE INSTR(NVL(P_CDCOMPRADOR, OPERADOR.CDOPERADOR), OPERADOR.CDOPERADOR) <> 0 ) OPERADOR,
                         ( SELECT CDFORNECED, IDTPIJURFORN, NRINSJURFORN, NMRAZSOCFORN, NMFANTFORN, IDTPFRETFORN, DTVALQUALIF, IDFORNAUTO,
                                  CDQUALIF
                             FROM FORNECEDOR
                            WHERE INSTR(P_CDFORNECED, CDFORNECED) <> 0 ) FORNECEDOR,
                         ( SELECT CDMARCA, NMMARCA, IDMARCAATIVA
                             FROM MARCA
                            WHERE INSTR(NVL(P_CDMARCA, CDMARCA), CDMARCA) <> 0) MARCA,
                         ( SELECT PARAMPRODSUP.CDREGIAO, PARAMPRODSUP.CDPRODUTO
                             FROM PARAMPRODSUP, FILIAL
                            WHERE FILIAL.CDFILIAL = P_CDFILIPROC
                              AND FILIAL.IDFUNCAOFILI = 'C'
                              AND FILIAL.CDFILIAL = PARAMPRODSUP.CDFILICTRL
                              AND PARAMPRODSUP.IDFILINEGCOR = 'S'
                            UNION ALL
                           SELECT PARAMPRODSUP.CDREGIAO, PARAMPRODSUP.CDPRODUTO
                             FROM PARAMPRODSUP, FILIAL
                            WHERE FILIAL.CDFILIAL = P_CDFILIPROC
                              AND FILIAL.IDFUNCAOFILI = 'R'
                              AND FILIAL.CDFILIAL = PARAMPRODSUP.CDFILICTRL
                              AND PARAMPRODSUP.IDFILINEGREG = 'S') PARAMPRODSUP
                   WHERE PARASUPRI.CDFILIAL = P_CDFILIAL
                     AND NVL(PARASUPRI.IDCONSPRSOL, 'N') = 'S'
                     AND COLETAPR.CDFILIAL    = P_CDFILIAL
                     AND COLETAPR.NRCOLEPRECO = P_NRCOLEPRECO
                     AND COLETAPR.CDOPERADOR  = OPERADOR.CDOPERADOR
                     AND ITEMCOLE.CDFILIAL    = P_CDFILIAL
                     AND ITEMCOLE.NRCOLEPRECO = P_NRCOLEPRECO
                     AND (PRODUTO.CDARVPROD BETWEEN P_CDPRODINI AND P_CDPRODFIN)
                     AND ITEMCOLE.CDPRODUTO  = PRODUTO.CDPRODUTO
                     AND ITEMCOLE.CDREGIAO   = REGIAO.CDREGIAO
                     AND ITEMCOLE.CDMARCA    = MARCA.CDMARCA
                     AND MARCA.IDMARCAATIVA  = 'A'
                     AND NVL(PRODUTO.IDPRODATIVPR, 'N') =  'S'
                     AND ITEMCOLE.CDMARCA    = MARCA.CDMARCA
                     AND MARCA.IDMARCAATIVA       = 'A'
                     AND PARAMPRODSUP.CDPRODUTO = ITEMCOLE.CDPRODUTO
                     AND PARAMPRODSUP.CDREGIAO  = ITEMCOLE.CDREGIAO
                     AND EXISTS ( SELECT 1
                                    FROM MARCFORNPEDCOL
                                   WHERE MARCFORNPEDCOL.CDFORNECED = FORNECEDOR.CDFORNECED
                                     AND MARCFORNPEDCOL.CDMARCA    = MARCA.CDMARCA
                                   UNION ALL
                                  SELECT 1
                                    FROM DUAL
                                   WHERE NOT EXISTS ( SELECT 1
                                                        FROM MARCFORNPEDCOL
                                                       WHERE MARCFORNPEDCOL.CDFORNECED = FORNECEDOR.CDFORNECED))

                ) A, PARASUPRI, PRODFORNCOMP LEFT JOIN MARCPRODCOMP
                                                    ON PRODFORNCOMP.CDPRODCOMPL = MARCPRODCOMP.CDPRMARCOMPL
          WHERE PARASUPRI.CDFILIAL = P_CDFILIAL
            AND NVL(MARCPRODCOMP.CDMARCA, PARASUPRI.CDMARCA) IS NOT NULL
            AND INSTR(NVL(P_CDMARCA, MARCPRODCOMP.CDMARCA), MARCPRODCOMP.CDMARCA) <> 0
            AND A.CDFORNECED = PRODFORNCOMP.CDFORNECED
            AND A.CDPRODUTO = PRODFORNCOMP.CDPRODCOMPL
            AND A.CDMARCA = NVL(MARCPRODCOMP.CDMARCA, PARASUPRI.CDMARCA)
            AND NOT EXISTS ( SELECT REFOREG.CDREGIAO, REFOREG.CDFORNECED
                               FROM REFOREG
                              WHERE REFOREG.CDREGIAO = A.CDREGIAO
                                AND REFOREG.CDFORNECED = A.CDFORNECED )
            AND EXISTS ( SELECT PRODCOMP.CDPRODUTO, PRODCOMP.CDOPERADOR
                           FROM PRODCOMP, PRODUTO PR
                          WHERE PRODCOMP.CDPRODUTO = PR.CDPRODUTO
                            AND A.CDARVPROD LIKE PR.CDARVPROD || '%'
                            AND A.CDOPERADOR = PRODCOMP.CDOPERADOR)
            AND NOT EXISTS ( SELECT QUALIFICACAO.CDQUALIF   /* QUALIFICACAO DO FORNECEDOR */
                               FROM QUALIFICACAO
                              WHERE A.CDQUALIF   = QUALIFICACAO.CDQUALIF
                                AND A.IDFORNAUTO = 'N'
                                AND ((QUALIFICACAO.IDPERCOTCMP = '2') OR ((A.IDULTIDTVALQ = 'D' AND
                                                                           TO_DATE(SYSDATE) > A.DTVALQUALIF) OR (A.IDULTIDTVALQ = 'M' AND
                                                                                                                 TO_DATE(SYSDATE) > LAST_DAY(A.DTVALQUALIF)))))
            AND NOT EXISTS ( SELECT QFOMARPROD.CDMARCA   /* QUALIFICACAO DE PRODUTO/MARCA */
                               FROM QFOMARPROD
                              WHERE QFOMARPROD.CDPRODUTO     = A.CDPRODUTO
                                AND QFOMARPROD.CDMARCA       = NVL(MARCPRODCOMP.CDMARCA, PARASUPRI.CDMARCA)
                                AND ((QFOMARPROD.IDAPRMARPRO = 'N' AND
                                      QFOMARPROD.IDAUTMARPRO = 'N') OR ((QFOMARPROD.IDAPRMARPRO = 'S') AND
                                                                        ((PARASUPRI.IDULTIDTVALQ = 'M' AND
                                                                          TO_DATE(SYSDATE) > LAST_DAY(QFOMARPROD.DTVALAPROVA)) OR (PARASUPRI.IDULTIDTVALQ = 'D' AND
                                                                                                                                   TO_DATE(SYSDATE) > QFOMARPROD.DTVALAPROVA)))))
            AND EXISTS (SELECT QFOMARPROD.CDMARCA /* QUALIFICACAO DE PRODUTO/MARCA */
                          FROM QFOMARPROD
                         WHERE QFOMARPROD.CDPRODUTO = A.CDPRODUTO
                           AND QFOMARPROD.CDMARCA   = NVL(MARCPRODCOMP.CDMARCA, PARASUPRI.CDMARCA)
                         UNION
                        SELECT PARASUPRI.CDMARCA
                          FROM PARASUPRI
                         WHERE PARASUPRI.CDFILIAL    = P_CDFILIAL
                           AND (PARASUPRI.IDMARSEMQUA = 'N' OR PARASUPRI.IDMARSEMQUA IS NULL))
            AND NOT EXISTS ( SELECT QFOPRODFORN.CDPRODUTO /* QUALIFICACAO DE PRODUTO/FORNECEDOR */
                               FROM QFOPRODFORN
                              WHERE QFOPRODFORN.CDPRODUTO = PRODFORNCOMP.CDPRODCOMPL
                                AND QFOPRODFORN.CDFORNECED= PRODFORNCOMP.CDFORNECED
                                AND ((QFOPRODFORN.IDFORNAPROV = 'N' AND
                                      QFOPRODFORN.IDFORNAUTOR = 'N') OR ((QFOPRODFORN.IDFORNAPROV = 'S') AND
                                                                         ((PARASUPRI.IDULTIDTVALQ = 'M' AND
                                                                           TO_DATE(SYSDATE) > LAST_DAY(QFOPRODFORN.DTVALPRFORN)) OR (PARASUPRI.IDULTIDTVALQ = 'D' AND
                                                                                                                                     TO_DATE(SYSDATE) > QFOPRODFORN.DTVALPRFORN)))))
            AND EXISTS ( SELECT 1
                           FROM MARCFORNPEDCOL
                          WHERE MARCFORNPEDCOL.CDFORNECED = A.CDFORNECED
                            AND MARCFORNPEDCOL.CDMARCA    = A.CDMARCA
                          UNION ALL
                         SELECT 1
                           FROM DUAL
                          WHERE NOT EXISTS (SELECT 1
                                              FROM MARCFORNPEDCOL
                                             WHERE MARCFORNPEDCOL.CDFORNECED = A.CDFORNECED))
          GROUP BY A.CDFORNECED, A.IDTPIJURFORN, A.NRINSJURFORN, A.NMRAZSOCFORN, A.IDTPFRETFORN, A.NMREGIAO, A.CDMARCA, A.CDPRODESTO,
                A.CDOPERADOR, A.CDARVPROD, A.SGUNIDADE, A.NMPRODUTO, A.NMFANTFORN, A.QTACOMPRAR, A.CDREGIAO, A.CDPRODUTO, A.NMOPERADOR,
                A.NMMARCA, A.CDMARCAPADR;
   BEGIN
      FOR CONTADOR IN PED_COL_COTAFORN LOOP
         V_PIPE.EXTEND;
         V_PIPE(V_INDICE) := CONTADOR;
         PIPE ROW(V_PIPE(V_INDICE));
         V_INDICE := V_INDICE+1;
      END LOOP;
      RETURN;
   END PED_COL_COTAFORN;

   FUNCTION PED_COL_GERALISTPREC( P_CDCOMPRADOR   VARCHAR2,
                                  P_CDFILIAL      VARCHAR2,
                                  P_CDPRODINI     VARCHAR2,
                                  P_CDPRODFIN     VARCHAR2,
                                  P_TPRODUTO      VARCHAR2,
                                  P_CDFORNECED    VARCHAR2,
                                  P_CDREGIAO      VARCHAR2,
                                  P_CDMARCA       VARCHAR2,
                                  P_CDFILIPROC    VARCHAR2,
                                  P_NRSEQPRELIST  VARCHAR2,
                                  P_DTINI         DATE,
                                  P_DTFIN         DATE) RETURN TABELA PIPELINED IS

      V_PIPE TABELA := TABELA();
      V_INDICE NUMBER := 1;

      CURSOR PED_COL_GERALISTPREC IS
         SELECT CDREGIAO, NMREGIAO, CDOPERADOR, NMOPERADOR, CDFORNECED, NRINSJURFORN,
                IDTPIJURFORN, NMRAZSOCFORN, NMFANTFORN, CDPRODUTO, NMPRODUTO, SGUNIDADE,
                CDPRODESTO, IDTPFRETFORN, CDMARCA, NMMARCA, CDMARCAPADR, CDARVPROD, SUM(QTACOMPRAR) AS QTACOMPRAR,
                NRCOLEPRECO AS NRCOMPRA
           FROM ( SELECT FORNECEDOR.CDFORNECED, FORNECEDOR.IDTPIJURFORN, FORNECEDOR.NRINSJURFORN, FORNECEDOR.NMRAZSOCFORN,
                         FORNECEDOR.IDTPFRETFORN, REGIAO.NMREGIAO, MARCA.CDMARCA, PRODUTO.CDPRODESTO, OPERADOR.CDOPERADOR,
                         PRODUTO.CDARVPROD, PRODUTO.SGUNIDADE, PRODUTO.NMPRODUTO, FORNECEDOR.NMFANTFORN, ITEMCOLE.NRCOLEPRECO,
                         NVL(PRODACOMPRAR.QTACOMPRAR, 0) AS QTACOMPRAR, REGIAO.CDREGIAO, PRODUTO.CDPRODUTO, OPERADOR.NMOPERADOR,
                         REPLACE(REPLACE(MARCA.NMMARCA, CHR(13), ''), CHR(10), '') NMMARCA, MARCA.CDMARCA AS CDMARCAPADR
                    FROM PARASUPRI, COLETAPR, ITEMCOLE, PRODUTO, MARCPRODCOMP, FILIAL FILI,
                         ( SELECT COMP.CDREGIAO, COMP.CDPRODUTO, ROUND(COMP.QTDECOMP-NVL(JACOMP.QTDECOMP/COMP.VRFATOCONV,0), 5) AS QTACOMPRAR
                             FROM ( SELECT FILIAL.CDREGIAO, ESTOQUE.CDPRODESTO, ESTOQUE.CDPRODUTO, ESTOQUE.VRFATOCONV,
                                           SUM(ITEMSOLI.QTSOLIPROD*PRODUTO.VRFATOCONV/ESTOQUE.VRFATOCONV) AS QTDECOMP
                                      FROM PRODUTO ESTOQUE, ITEMSOLI, FILIAL, PRODUTO
                                     WHERE ITEMSOLI.CDFILSOLI = FILIAL.CDFILIAL
                                       AND ITEMSOLI.CDPRODUTO = PRODUTO.CDPRODUTO
                                       AND PRODUTO.CDPRODESTO = ESTOQUE.CDPRODESTO
                                       AND ITEMSOLI.DTPROGENTR BETWEEN P_DTINI AND P_DTFIN
                                       AND PRODUTO.CDARVPROD BETWEEN P_CDPRODINI AND P_CDPRODFIN
                                       AND INSTR(NVL(P_CDREGIAO, FILIAL.CDREGIAO), FILIAL.CDREGIAO) <> 0
                                       AND ITEMSOLI.IDITMCONS = 'N'
                                       AND NVL(ITEMSOLI.IDSOLIAPROV,'S') = 'S'
                                     GROUP BY FILIAL.CDREGIAO, ESTOQUE.CDPRODESTO, ESTOQUE.CDPRODUTO, ESTOQUE.VRFATOCONV) COMP,
                                  ( SELECT FILIAL.CDREGIAO, PRODUTO.CDPRODESTO, SUM(ITEMAUTF.QTPROGENTAF*PRODUTO.VRFATOCONV) AS QTDECOMP
                                      FROM ITEMAUTF, AUTOFORNE, FILIAL, PRODUTO
                                     WHERE AUTOFORNE.CDFILDEST = ITEMAUTF.CDFILDEST
                                       AND AUTOFORNE.CDFILLANC = ITEMAUTF.CDFILLANC
                                       AND AUTOFORNE.NRAUTOFORN = ITEMAUTF.NRAUTOFORN
                                       AND AUTOFORNE.CDFILDEST = FILIAL.CDFILIAL
                                       AND ITEMAUTF.CDPRODUTO = PRODUTO.CDPRODUTO
                                       AND ITEMAUTF.DTENTRITMSOL BETWEEN P_DTINI AND P_DTFIN
                                       AND INSTR(NVL(P_CDREGIAO, FILIAL.CDREGIAO), FILIAL.CDREGIAO) <> 0
                                       AND AUTOFORNE.IDSITUATUAAF IS NULL
                                       AND AUTOFORNE.IDAFFORALIM = 'N'
                                       AND AUTOFORNE.IDAUTOFORNEX = 'N'
                                       AND NVL(AUTOFORNE.IDBAIXAAF, '0') <> '5'
                                     GROUP BY FILIAL.CDREGIAO, PRODUTO.CDPRODESTO) JACOMP
                            WHERE COMP.CDREGIAO = JACOMP.CDREGIAO(+)
                              AND COMP.CDPRODESTO = JACOMP.CDPRODESTO (+)
                              AND COMP.QTDECOMP-NVL(JACOMP.QTDECOMP/COMP.VRFATOCONV,0) > 0) PRODACOMPRAR,
                         ( SELECT CDREGIAO, NMREGIAO
                             FROM REGIAO
                            WHERE INSTR(NVL(P_CDREGIAO, REGIAO.CDREGIAO), REGIAO.CDREGIAO) <> 0 ) REGIAO,
                         ( SELECT CDOPERADOR, NMOPERADOR
                             FROM OPERADOR
                            WHERE INSTR(NVL(P_CDCOMPRADOR, OPERADOR.CDOPERADOR), OPERADOR.CDOPERADOR) <> 0 ) OPERADOR,
                         ( SELECT CDFORNECED, IDTPIJURFORN, NRINSJURFORN, NMRAZSOCFORN, NMFANTFORN, IDTPFRETFORN
                             FROM FORNECEDOR
                            WHERE INSTR(NVL(P_CDFORNECED, FORNECEDOR.CDFORNECED), FORNECEDOR.CDFORNECED) <> 0 ) FORNECEDOR,
                         ( SELECT CDMARCA, NMMARCA, IDMARCAATIVA
                             FROM MARCA
                            WHERE INSTR(NVL(P_CDMARCA, CDMARCA), CDMARCA) <> 0) MARCA
                   WHERE PARASUPRI.CDFILIAL = P_CDFILIAL
                     AND NVL(PARASUPRI.IDCONSPRSOL, 'N') <> 'S'
                     AND COLETAPR.CDFILIAL     = ITEMCOLE.CDFILIAL
                     AND COLETAPR.NRCOLEPRECO  = ITEMCOLE.NRCOLEPRECO
                     AND COLETAPR.CDOPERADOR   = OPERADOR.CDOPERADOR
                     AND ITEMCOLE.CDFILIAL     = P_CDFILIAL
                     AND ITEMCOLE.NRSEQPRELIST = P_NRSEQPRELIST
                     AND PRODUTO.CDARVPROD BETWEEN P_CDPRODINI AND P_CDPRODFIN
                     AND ITEMCOLE.CDREGIAO = PRODACOMPRAR.CDREGIAO(+)
                     AND ITEMCOLE.CDPRODUTO = PRODACOMPRAR.CDPRODUTO(+)
                     AND ITEMCOLE.CDPRODUTO  = PRODUTO.CDPRODUTO
                     AND ITEMCOLE.CDREGIAO   = REGIAO.CDREGIAO
                     AND ITEMCOLE.CDFORNECED = FORNECEDOR.CDFORNECED
                     AND ITEMCOLE.CDPRODUTO  = MARCPRODCOMP.CDPRMARCOMPL
                     AND ITEMCOLE.CDMARCA    = MARCPRODCOMP.CDMARCA
                     AND MARCA.IDMARCAATIVA       = 'A'
                     AND MARCPRODCOMP.CDMARCA = MARCA.CDMARCA
                     AND FILI.CDFILIAL = P_CDFILIPROC
                     AND ((FILI.IDFUNCAOFILI IS NULL) OR (FILI.IDFUNCAOFILI = 'O'))
                     
                  UNION ALL

                  SELECT FORNECEDOR.CDFORNECED, FORNECEDOR.IDTPIJURFORN, FORNECEDOR.NRINSJURFORN, FORNECEDOR.NMRAZSOCFORN,
                         FORNECEDOR.IDTPFRETFORN, REGIAO.NMREGIAO, MARCA.CDMARCA, PRODUTO.CDPRODESTO, OPERADOR.CDOPERADOR,
                         PRODUTO.CDARVPROD, PRODUTO.SGUNIDADE, PRODUTO.NMPRODUTO, FORNECEDOR.NMFANTFORN, ITEMCOLE.NRCOLEPRECO,
                         NVL(PRODACOMPRAR.QTACOMPRAR, 0) AS QTACOMPRAR, REGIAO.CDREGIAO, PRODUTO.CDPRODUTO, OPERADOR.NMOPERADOR,
                         REPLACE(REPLACE(MARCA.NMMARCA, CHR(13), ''), CHR(10), '') NMMARCA, MARCA.CDMARCA AS CDMARCAPADR
                    FROM PARASUPRI, COLETAPR, ITEMCOLE, PRODUTO, MARCPRODCOMP,
                         ( SELECT COMP.CDREGIAO, COMP.CDPRODUTO, ROUND(COMP.QTDECOMP-NVL(JACOMP.QTDECOMP/COMP.VRFATOCONV,0), 5) AS QTACOMPRAR
                             FROM ( SELECT FILIAL.CDREGIAO, ESTOQUE.CDPRODESTO, ESTOQUE.CDPRODUTO, ESTOQUE.VRFATOCONV,
                                           SUM(ITEMSOLI.QTSOLIPROD*PRODUTO.VRFATOCONV/ESTOQUE.VRFATOCONV) AS QTDECOMP
                                      FROM PRODUTO ESTOQUE, ITEMSOLI, FILIAL, PRODUTO
                                     WHERE ITEMSOLI.CDFILSOLI = FILIAL.CDFILIAL
                                       AND ITEMSOLI.CDPRODUTO = PRODUTO.CDPRODUTO
                                       AND PRODUTO.CDPRODESTO = ESTOQUE.CDPRODESTO
                                       AND ITEMSOLI.DTPROGENTR BETWEEN P_DTINI AND P_DTFIN
                                       AND PRODUTO.CDARVPROD BETWEEN P_CDPRODINI AND P_CDPRODFIN
                                       AND INSTR(NVL(P_CDREGIAO, FILIAL.CDREGIAO), FILIAL.CDREGIAO) <> 0
                                       AND ITEMSOLI.IDITMCONS = 'N'
                                       AND NVL(ITEMSOLI.IDSOLIAPROV,'S') = 'S'
                                     GROUP BY FILIAL.CDREGIAO, ESTOQUE.CDPRODESTO, ESTOQUE.CDPRODUTO, ESTOQUE.VRFATOCONV) COMP,
                                  ( SELECT FILIAL.CDREGIAO, PRODUTO.CDPRODESTO, SUM(ITEMAUTF.QTPROGENTAF*PRODUTO.VRFATOCONV) AS QTDECOMP
                                      FROM ITEMAUTF, AUTOFORNE, FILIAL, PRODUTO
                                     WHERE AUTOFORNE.CDFILDEST = ITEMAUTF.CDFILDEST
                                       AND AUTOFORNE.CDFILLANC = ITEMAUTF.CDFILLANC
                                       AND AUTOFORNE.NRAUTOFORN = ITEMAUTF.NRAUTOFORN
                                       AND AUTOFORNE.CDFILDEST = FILIAL.CDFILIAL
                                       AND ITEMAUTF.CDPRODUTO = PRODUTO.CDPRODUTO
                                       AND ITEMAUTF.DTENTRITMSOL BETWEEN P_DTINI AND P_DTFIN
                                       AND INSTR(NVL(P_CDREGIAO, FILIAL.CDREGIAO), FILIAL.CDREGIAO) <> 0
                                       AND AUTOFORNE.IDSITUATUAAF IS NULL
                                       AND AUTOFORNE.IDAFFORALIM = 'N'
                                       AND AUTOFORNE.IDAUTOFORNEX = 'N'
                                       AND NVL(AUTOFORNE.IDBAIXAAF, '0') <> '5'
                                     GROUP BY FILIAL.CDREGIAO, PRODUTO.CDPRODESTO) JACOMP
                            WHERE COMP.CDREGIAO = JACOMP.CDREGIAO (+)
                              AND COMP.CDPRODESTO = JACOMP.CDPRODESTO (+)
                              AND COMP.QTDECOMP-NVL(JACOMP.QTDECOMP/COMP.VRFATOCONV,0) > 0) PRODACOMPRAR,
                         ( SELECT CDREGIAO, NMREGIAO
                             FROM REGIAO
                            WHERE INSTR(NVL(P_CDREGIAO, REGIAO.CDREGIAO), REGIAO.CDREGIAO) <> 0 ) REGIAO,
                         ( SELECT CDOPERADOR, NMOPERADOR
                             FROM OPERADOR
                            WHERE INSTR(NVL(P_CDCOMPRADOR, OPERADOR.CDOPERADOR), OPERADOR.CDOPERADOR) <> 0 ) OPERADOR,
                         ( SELECT CDFORNECED, IDTPIJURFORN, NRINSJURFORN, NMRAZSOCFORN, NMFANTFORN, IDTPFRETFORN
                             FROM FORNECEDOR
                            WHERE INSTR(NVL(P_CDFORNECED, FORNECEDOR.CDFORNECED), FORNECEDOR.CDFORNECED) <> 0 ) FORNECEDOR,
                         ( SELECT CDMARCA, NMMARCA, IDMARCAATIVA
                             FROM MARCA
                            WHERE INSTR(NVL(P_CDMARCA, CDMARCA), CDMARCA) <> 0) MARCA,
                         ( SELECT PARAMPRODSUP.CDREGIAO, PARAMPRODSUP.CDPRODUTO
                             FROM PARAMPRODSUP, FILIAL
                            WHERE FILIAL.CDFILIAL = P_CDFILIPROC
                              AND FILIAL.IDFUNCAOFILI = 'C'
                              AND FILIAL.CDFILIAL = PARAMPRODSUP.CDFILICTRL
                              AND PARAMPRODSUP.IDFILINEGCOR = 'S'
                            UNION ALL
                           SELECT PARAMPRODSUP.CDREGIAO, PARAMPRODSUP.CDPRODUTO
                             FROM PARAMPRODSUP, FILIAL
                            WHERE FILIAL.CDFILIAL = P_CDFILIPROC
                              AND FILIAL.IDFUNCAOFILI = 'R'
                              AND FILIAL.CDFILIAL = PARAMPRODSUP.CDFILICTRL
                              AND PARAMPRODSUP.IDFILINEGREG = 'S') PARAMPRODSUP
                   WHERE PARASUPRI.CDFILIAL = P_CDFILIAL
                     AND NVL(PARASUPRI.IDCONSPRSOL, 'N') <> 'S'
                     AND COLETAPR.CDFILIAL     = ITEMCOLE.CDFILIAL
                     AND COLETAPR.NRCOLEPRECO  = ITEMCOLE.NRCOLEPRECO
                     AND COLETAPR.CDOPERADOR   = OPERADOR.CDOPERADOR
                     AND ITEMCOLE.CDFILIAL     = P_CDFILIAL
                     AND ITEMCOLE.NRSEQPRELIST = P_NRSEQPRELIST
                     AND PRODUTO.CDARVPROD BETWEEN P_CDPRODINI AND P_CDPRODFIN
                     AND ITEMCOLE.CDREGIAO = PRODACOMPRAR.CDREGIAO(+)
                     AND ITEMCOLE.CDPRODUTO = PRODACOMPRAR.CDPRODUTO(+)
                     AND ITEMCOLE.CDPRODUTO  = PRODUTO.CDPRODUTO
                     AND ITEMCOLE.CDREGIAO   = REGIAO.CDREGIAO
                     AND ITEMCOLE.CDFORNECED = FORNECEDOR.CDFORNECED
                     AND ITEMCOLE.CDPRODUTO  = MARCPRODCOMP.CDPRMARCOMPL
                     AND ITEMCOLE.CDMARCA    = MARCPRODCOMP.CDMARCA
                     AND MARCA.IDMARCAATIVA       = 'A'
                     AND MARCPRODCOMP.CDMARCA = MARCA.CDMARCA
                     AND PARAMPRODSUP.CDPRODUTO = ITEMCOLE.CDPRODUTO
                     AND PARAMPRODSUP.CDREGIAO  = ITEMCOLE.CDREGIAO

                  /*################################## IDCONSPRSOL DA PARASUPRI #############################################*/

                  UNION ALL

                  SELECT FORNECEDOR.CDFORNECED, FORNECEDOR.IDTPIJURFORN, FORNECEDOR.NRINSJURFORN, FORNECEDOR.NMRAZSOCFORN,
                         FORNECEDOR.IDTPFRETFORN, REGIAO.NMREGIAO, MARCA.CDMARCA, PRODUTO.CDPRODESTO, OPERADOR.CDOPERADOR,
                         PRODUTO.CDARVPROD, PRODUTO.SGUNIDADE, PRODUTO.NMPRODUTO, FORNECEDOR.NMFANTFORN, ITEMCOLE.NRCOLEPRECO,
                         NVL(PRODACOMPRAR.QTACOMPRAR, 0) AS QTACOMPRAR, REGIAO.CDREGIAO, PRODUTO.CDPRODUTO, OPERADOR.NMOPERADOR,
                         REPLACE(REPLACE(MARCA.NMMARCA, CHR(13), ''), CHR(10), '') NMMARCA, MARCA.CDMARCA AS CDMARCAPADR
                    FROM PARASUPRI, COLETAPR, ITEMCOLE, PRODUTO, MARCPRODCOMP, FILIAL FILI,
                         ( SELECT COMP.CDREGIAO, COMP.CDPRODUTO, ROUND((COMP.QTDECOMP-NVL(JACOMP.QTDECOMP,0)) / COMP.VRFATOCONV, 5) AS QTACOMPRAR
                             FROM ( SELECT FILIAL.CDREGIAO, PRODUTO.CDPRODESTO, PRODUTO.CDPRODUTO, PRODUTO.VRFATOCONV,
                                           SUM(ITEMSOLI.QTSOLIPROD*PRODUTO.VRFATOCONV) AS QTDECOMP
                                      FROM ITEMSOLI, FILIAL, PRODUTO
                                     WHERE ITEMSOLI.CDFILSOLI = FILIAL.CDFILIAL
                                       AND ITEMSOLI.CDPRODUTO = PRODUTO.CDPRODUTO
                                       AND ITEMSOLI.DTPROGENTR BETWEEN P_DTINI AND P_DTFIN
                                       AND PRODUTO.CDARVPROD BETWEEN P_CDPRODINI AND P_CDPRODFIN
                                       AND INSTR(NVL(P_CDREGIAO, FILIAL.CDREGIAO), FILIAL.CDREGIAO) <> 0
                                       AND ITEMSOLI.IDITMCONS = 'N'
                                       AND NVL(ITEMSOLI.IDSOLIAPROV,'S') = 'S'
                                     GROUP BY FILIAL.CDREGIAO, PRODUTO.CDPRODESTO, PRODUTO.CDPRODUTO, PRODUTO.VRFATOCONV) COMP,
                                  ( SELECT FILIAL.CDREGIAO, PRODUTO.CDPRODESTO, SUM(ITEMAUTF.QTPROGENTAF*PRODUTO.VRFATOCONV) AS QTDECOMP
                                      FROM ITEMAUTF, AUTOFORNE, FILIAL, PRODUTO
                                     WHERE AUTOFORNE.CDFILDEST = ITEMAUTF.CDFILDEST
                                       AND AUTOFORNE.CDFILLANC = ITEMAUTF.CDFILLANC
                                       AND AUTOFORNE.NRAUTOFORN = ITEMAUTF.NRAUTOFORN
                                       AND AUTOFORNE.CDFILDEST = FILIAL.CDFILIAL
                                       AND ITEMAUTF.CDPRODUTO = PRODUTO.CDPRODUTO
                                       AND ITEMAUTF.DTENTRITMSOL BETWEEN P_DTINI AND P_DTFIN
                                       AND INSTR(NVL(P_CDREGIAO, FILIAL.CDREGIAO), FILIAL.CDREGIAO) <> 0
                                       AND AUTOFORNE.IDSITUATUAAF IS NULL
                                       AND AUTOFORNE.IDAFFORALIM = 'N'
                                       AND AUTOFORNE.IDAUTOFORNEX = 'N'
                                       AND NVL(AUTOFORNE.IDBAIXAAF, '0') <> '5'
                                     GROUP BY FILIAL.CDREGIAO, PRODUTO.CDPRODESTO) JACOMP
                            WHERE COMP.CDREGIAO = JACOMP.CDREGIAO (+)
                              AND COMP.CDPRODESTO = JACOMP.CDPRODESTO (+)
                              AND ROUND((COMP.QTDECOMP-NVL(JACOMP.QTDECOMP,0)) / COMP.VRFATOCONV, 5) > 0) PRODACOMPRAR,
                         ( SELECT CDREGIAO, NMREGIAO
                             FROM REGIAO
                            WHERE INSTR(NVL(P_CDREGIAO, REGIAO.CDREGIAO), REGIAO.CDREGIAO) <> 0 ) REGIAO,
                         ( SELECT CDOPERADOR, NMOPERADOR
                             FROM OPERADOR
                            WHERE INSTR(NVL(P_CDCOMPRADOR, OPERADOR.CDOPERADOR), OPERADOR.CDOPERADOR) <> 0 ) OPERADOR,
                         ( SELECT CDFORNECED, IDTPIJURFORN, NRINSJURFORN, NMRAZSOCFORN, NMFANTFORN, IDTPFRETFORN
                             FROM FORNECEDOR
                            WHERE INSTR(NVL(P_CDFORNECED, FORNECEDOR.CDFORNECED), FORNECEDOR.CDFORNECED) <> 0 ) FORNECEDOR,
                         ( SELECT CDMARCA, NMMARCA, IDMARCAATIVA
                             FROM MARCA
                            WHERE INSTR(NVL(P_CDMARCA, CDMARCA), CDMARCA) <> 0) MARCA
                   WHERE PARASUPRI.CDFILIAL = P_CDFILIAL
                     AND NVL(PARASUPRI.IDCONSPRSOL, 'N') = 'S'
                     AND COLETAPR.CDFILIAL     = ITEMCOLE.CDFILIAL
                     AND COLETAPR.NRCOLEPRECO  = ITEMCOLE.NRCOLEPRECO
                     AND COLETAPR.CDOPERADOR   = OPERADOR.CDOPERADOR
                     AND ITEMCOLE.CDFILIAL     = P_CDFILIAL
                     AND ITEMCOLE.NRSEQPRELIST = P_NRSEQPRELIST
                     AND PRODUTO.CDARVPROD BETWEEN P_CDPRODINI AND P_CDPRODFIN
                     AND ITEMCOLE.CDREGIAO = PRODACOMPRAR.CDREGIAO(+)
                     AND ITEMCOLE.CDPRODUTO = PRODACOMPRAR.CDPRODUTO(+)
                     AND ITEMCOLE.CDPRODUTO  = PRODUTO.CDPRODUTO
                     AND ITEMCOLE.CDREGIAO   = REGIAO.CDREGIAO
                     AND ITEMCOLE.CDFORNECED = FORNECEDOR.CDFORNECED
                     AND ITEMCOLE.CDPRODUTO  = MARCPRODCOMP.CDPRMARCOMPL
                     AND ITEMCOLE.CDMARCA    = MARCPRODCOMP.CDMARCA
                     AND MARCPRODCOMP.CDMARCA = MARCA.CDMARCA
                     AND MARCA.IDMARCAATIVA       = 'A'
                     AND FILI.CDFILIAL = P_CDFILIPROC
                     AND ((FILI.IDFUNCAOFILI IS NULL) OR (FILI.IDFUNCAOFILI = 'O'))

                  UNION ALL

                  SELECT FORNECEDOR.CDFORNECED, FORNECEDOR.IDTPIJURFORN, FORNECEDOR.NRINSJURFORN, FORNECEDOR.NMRAZSOCFORN,
                         FORNECEDOR.IDTPFRETFORN, REGIAO.NMREGIAO, MARCA.CDMARCA, PRODUTO.CDPRODESTO, OPERADOR.CDOPERADOR,
                         PRODUTO.CDARVPROD, PRODUTO.SGUNIDADE, PRODUTO.NMPRODUTO, FORNECEDOR.NMFANTFORN, ITEMCOLE.NRCOLEPRECO,
                         NVL(PRODACOMPRAR.QTACOMPRAR, 0) AS QTACOMPRAR, REGIAO.CDREGIAO, PRODUTO.CDPRODUTO, OPERADOR.NMOPERADOR,
                         REPLACE(REPLACE(MARCA.NMMARCA, CHR(13), ''), CHR(10), '') NMMARCA, MARCA.CDMARCA AS CDMARCAPADR
                    FROM PARASUPRI, COLETAPR, ITEMCOLE, PRODUTO, MARCPRODCOMP,
                         ( SELECT COMP.CDREGIAO, COMP.CDPRODUTO, ROUND((COMP.QTDECOMP-NVL(JACOMP.QTDECOMP,0)) / COMP.VRFATOCONV, 5) AS QTACOMPRAR
                             FROM ( SELECT FILIAL.CDREGIAO, PRODUTO.CDPRODESTO, PRODUTO.CDPRODUTO, PRODUTO.VRFATOCONV,
                                           SUM(ITEMSOLI.QTSOLIPROD*PRODUTO.VRFATOCONV) AS QTDECOMP
                                      FROM ITEMSOLI, FILIAL, PRODUTO
                                     WHERE ITEMSOLI.CDFILSOLI = FILIAL.CDFILIAL
                                       AND ITEMSOLI.CDPRODUTO = PRODUTO.CDPRODUTO
                                       AND ITEMSOLI.DTPROGENTR BETWEEN P_DTINI AND P_DTFIN
                                       AND PRODUTO.CDARVPROD BETWEEN P_CDPRODINI AND P_CDPRODFIN
                                       AND INSTR(NVL(P_CDREGIAO, FILIAL.CDREGIAO), FILIAL.CDREGIAO) <> 0
                                       AND ITEMSOLI.IDITMCONS = 'N'
                                       AND NVL(ITEMSOLI.IDSOLIAPROV,'S') = 'S'
                                     GROUP BY FILIAL.CDREGIAO, PRODUTO.CDPRODESTO, PRODUTO.CDPRODUTO, PRODUTO.VRFATOCONV) COMP,
                                  ( SELECT FILIAL.CDREGIAO, PRODUTO.CDPRODESTO, SUM(ITEMAUTF.QTPROGENTAF*PRODUTO.VRFATOCONV) AS QTDECOMP
                                      FROM ITEMAUTF, AUTOFORNE, FILIAL, PRODUTO
                                     WHERE AUTOFORNE.CDFILDEST = ITEMAUTF.CDFILDEST
                                       AND AUTOFORNE.CDFILLANC = ITEMAUTF.CDFILLANC
                                       AND AUTOFORNE.NRAUTOFORN = ITEMAUTF.NRAUTOFORN
                                       AND AUTOFORNE.CDFILDEST = FILIAL.CDFILIAL
                                       AND ITEMAUTF.CDPRODUTO = PRODUTO.CDPRODUTO
                                       AND ITEMAUTF.DTENTRITMSOL BETWEEN P_DTINI AND P_DTFIN
                                       AND INSTR(NVL(P_CDREGIAO, FILIAL.CDREGIAO), FILIAL.CDREGIAO) <> 0
                                       AND AUTOFORNE.IDSITUATUAAF IS NULL
                                       AND AUTOFORNE.IDAFFORALIM = 'N'
                                       AND AUTOFORNE.IDAUTOFORNEX = 'N'
                                       AND NVL(AUTOFORNE.IDBAIXAAF, '0') <> '5'
                                     GROUP BY FILIAL.CDREGIAO, PRODUTO.CDPRODESTO) JACOMP
                            WHERE COMP.CDREGIAO = JACOMP.CDREGIAO (+)
                              AND COMP.CDPRODESTO = JACOMP.CDPRODESTO (+)
                              AND ROUND((COMP.QTDECOMP-NVL(JACOMP.QTDECOMP,0)) / COMP.VRFATOCONV, 5) > 0) PRODACOMPRAR,
                         ( SELECT CDREGIAO, NMREGIAO
                             FROM REGIAO
                            WHERE INSTR(NVL(P_CDREGIAO, REGIAO.CDREGIAO), REGIAO.CDREGIAO) <> 0 ) REGIAO,
                         ( SELECT CDOPERADOR, NMOPERADOR
                             FROM OPERADOR
                            WHERE INSTR(NVL(P_CDCOMPRADOR, OPERADOR.CDOPERADOR), OPERADOR.CDOPERADOR) <> 0 ) OPERADOR,
                         ( SELECT CDFORNECED, IDTPIJURFORN, NRINSJURFORN, NMRAZSOCFORN, NMFANTFORN, IDTPFRETFORN
                             FROM FORNECEDOR
                            WHERE INSTR(NVL(P_CDFORNECED, FORNECEDOR.CDFORNECED), FORNECEDOR.CDFORNECED) <> 0 ) FORNECEDOR,
                         ( SELECT CDMARCA, NMMARCA, IDMARCAATIVA
                             FROM MARCA
                            WHERE INSTR(NVL(P_CDMARCA, CDMARCA), CDMARCA) <> 0) MARCA,
                         ( SELECT PARAMPRODSUP.CDREGIAO, PARAMPRODSUP.CDPRODUTO
                             FROM PARAMPRODSUP, FILIAL
                            WHERE FILIAL.CDFILIAL = P_CDFILIPROC
                              AND FILIAL.IDFUNCAOFILI = 'C'
                              AND FILIAL.CDFILIAL = PARAMPRODSUP.CDFILICTRL
                              AND PARAMPRODSUP.IDFILINEGCOR = 'S'
                            UNION ALL
                           SELECT PARAMPRODSUP.CDREGIAO, PARAMPRODSUP.CDPRODUTO
                             FROM PARAMPRODSUP, FILIAL
                            WHERE FILIAL.CDFILIAL = P_CDFILIPROC
                              AND FILIAL.IDFUNCAOFILI = 'R'
                              AND FILIAL.CDFILIAL = PARAMPRODSUP.CDFILICTRL
                              AND PARAMPRODSUP.IDFILINEGREG = 'S') PARAMPRODSUP
                   WHERE PARASUPRI.CDFILIAL = P_CDFILIAL
                     AND NVL(PARASUPRI.IDCONSPRSOL, 'N') = 'S'
                     AND COLETAPR.CDFILIAL     = ITEMCOLE.CDFILIAL
                     AND COLETAPR.NRCOLEPRECO  = ITEMCOLE.NRCOLEPRECO
                     AND COLETAPR.CDOPERADOR   = OPERADOR.CDOPERADOR
                     AND ITEMCOLE.CDFILIAL     = P_CDFILIAL
                     AND ITEMCOLE.NRSEQPRELIST = P_NRSEQPRELIST
                     AND PRODUTO.CDARVPROD BETWEEN P_CDPRODINI AND P_CDPRODFIN
                     AND ITEMCOLE.CDREGIAO = PRODACOMPRAR.CDREGIAO(+)
                     AND ITEMCOLE.CDPRODUTO = PRODACOMPRAR.CDPRODUTO(+)
                     AND ITEMCOLE.CDPRODUTO  = PRODUTO.CDPRODUTO
                     AND ITEMCOLE.CDREGIAO   = REGIAO.CDREGIAO
                     AND ITEMCOLE.CDFORNECED = FORNECEDOR.CDFORNECED
                     AND ITEMCOLE.CDPRODUTO  = MARCPRODCOMP.CDPRMARCOMPL
                     AND ITEMCOLE.CDMARCA    = MARCPRODCOMP.CDMARCA
                     AND MARCPRODCOMP.CDMARCA = MARCA.CDMARCA
                     AND MARCA.IDMARCAATIVA       = 'A'
                     AND PARAMPRODSUP.CDPRODUTO = ITEMCOLE.CDPRODUTO
                     AND PARAMPRODSUP.CDREGIAO  = ITEMCOLE.CDREGIAO) A
                GROUP BY CDREGIAO, NMREGIAO, CDOPERADOR, NMOPERADOR, CDFORNECED, NRINSJURFORN,
            IDTPIJURFORN, NMRAZSOCFORN, NMFANTFORN, CDPRODUTO, NMPRODUTO, SGUNIDADE,
            CDPRODESTO, IDTPFRETFORN, CDMARCA, NMMARCA, CDMARCAPADR, CDARVPROD, NRCOLEPRECO;

   BEGIN
      FOR CONTADOR IN PED_COL_GERALISTPREC LOOP
         V_PIPE.EXTEND;
         V_PIPE(V_INDICE) := CONTADOR;
         PIPE ROW(V_PIPE(V_INDICE));
         V_INDICE := V_INDICE+1;
      END LOOP;
      RETURN;
   END PED_COL_GERALISTPREC;

   FUNCTION PED_COL_LISTAPREC( P_CDCOMPRADOR   VARCHAR2,
                               P_CDFILIAL      VARCHAR2,
                               P_CDPRODINI     VARCHAR2,
                               P_CDPRODFIN     VARCHAR2,
                               P_TPRODUTO      VARCHAR2,
                               P_CDFORNECED    VARCHAR2,
                               P_CDREGIAO      VARCHAR2,
                               P_CDMARCA       VARCHAR2,
                               P_CDFILIPROC    VARCHAR2,
                               P_NRSEQPRELIST  VARCHAR2,
                               P_DTINI         DATE,
                               P_DTFIN         DATE) RETURN TABELA PIPELINED IS

      V_PIPE TABELA := TABELA();
      V_INDICE NUMBER := 1;

      CURSOR PED_COL_LISTAPREC IS
         SELECT CDREGIAO, NMREGIAO, CDOPERADOR, NMOPERADOR, CDFORNECED, NRINSJURFORN,
                IDTPIJURFORN, NMRAZSOCFORN, NMFANTFORN, CDPRODUTO, NMPRODUTO, SGUNIDADE,
                CDPRODESTO, IDTPFRETFORN, CDMARCA, NMMARCA, CDMARCAPADR, CDARVPROD, SUM(QTACOMPRAR) AS QTACOMPRAR,
                ' ' AS NRCOMPRA
           FROM ( SELECT FORNECEDOR.CDFORNECED, FORNECEDOR.IDTPIJURFORN, FORNECEDOR.NRINSJURFORN, FORNECEDOR.NMRAZSOCFORN,
                         FORNECEDOR.IDTPFRETFORN, REGIAO.NMREGIAO, MARCA.CDMARCA, PRODUTO.CDPRODESTO, OPERADOR.CDOPERADOR,
                         PRODUTO.CDARVPROD, PRODUTO.SGUNIDADE, PRODUTO.NMPRODUTO, FORNECEDOR.NMFANTFORN,
                         NVL(ITEMCOLE.QTACMPITMCOL, 0) AS QTACOMPRAR, REGIAO.CDREGIAO, PRODUTO.CDPRODUTO, OPERADOR.NMOPERADOR,
                         REPLACE(REPLACE(MARCA.NMMARCA, CHR(13), ''), CHR(10), '') NMMARCA, MARCA.CDMARCA AS CDMARCAPADR
                    FROM PARASUPRI, COLETAPR, ITEMCOLE, PRODUTO, FILIAL FILI,
                         ( SELECT CDREGIAO, NMREGIAO
                             FROM REGIAO
                            WHERE INSTR(NVL(P_CDREGIAO, REGIAO.CDREGIAO), REGIAO.CDREGIAO) <> 0 ) REGIAO,
                         ( SELECT CDOPERADOR, NMOPERADOR
                             FROM OPERADOR
                            WHERE INSTR(NVL(P_CDCOMPRADOR, OPERADOR.CDOPERADOR), OPERADOR.CDOPERADOR) <> 0 ) OPERADOR,
                         ( SELECT CDFORNECED, IDTPIJURFORN, NRINSJURFORN, NMRAZSOCFORN, NMFANTFORN, IDTPFRETFORN, DTVALQUALIF, IDFORNAUTO, CDQUALIF
                             FROM FORNECEDOR
                            WHERE INSTR(NVL(P_CDFORNECED, FORNECEDOR.CDFORNECED), FORNECEDOR.CDFORNECED) <> 0 ) FORNECEDOR,
                         ( SELECT CDMARCA, NMMARCA, IDMARCAATIVA
                             FROM MARCA
                            WHERE INSTR(NVL(P_CDMARCA, CDMARCA), CDMARCA) <> 0) MARCA,
                         PRODFORNCOMP LEFT JOIN MARCPRODCOMP
                                             ON PRODFORNCOMP.CDPRODCOMPL = MARCPRODCOMP.CDPRMARCOMPL
                   WHERE PARASUPRI.CDFILIAL = P_CDFILIAL
                     AND NVL(PARASUPRI.IDCONSPRSOL, 'N') <> 'S'
                     AND COLETAPR.CDFILIAL     = ITEMCOLE.CDFILIAL
                     AND COLETAPR.NRCOLEPRECO  = ITEMCOLE.NRCOLEPRECO
                     AND COLETAPR.CDOPERADOR   = OPERADOR.CDOPERADOR
                     AND ITEMCOLE.CDFILIAL     = P_CDFILIAL
                     AND ITEMCOLE.NRSEQPRELIST = P_NRSEQPRELIST
                     AND PRODUTO.CDARVPROD BETWEEN P_CDPRODINI AND P_CDPRODFIN
                     AND ITEMCOLE.CDPRODUTO  = PRODUTO.CDPRODUTO
                     AND ITEMCOLE.CDREGIAO   = REGIAO.CDREGIAO
                     AND ITEMCOLE.CDFORNECED = FORNECEDOR.CDFORNECED
                     AND ITEMCOLE.CDMARCA    = MARCA.CDMARCA
                     AND MARCA.IDMARCAATIVA       = 'A'
                     AND FILI.CDFILIAL = P_CDFILIPROC
                     AND ((FILI.IDFUNCAOFILI IS NULL) OR (FILI.IDFUNCAOFILI = 'O'))
                     AND NOT EXISTS ( SELECT REFOREG.CDREGIAO, REFOREG.CDFORNECED
                                        FROM REFOREG
                                       WHERE REFOREG.CDREGIAO = REGIAO.CDREGIAO
                                         AND REFOREG.CDFORNECED = FORNECEDOR.CDFORNECED)
                     AND EXISTS ( SELECT PRODCOMP.CDPRODUTO, PRODCOMP.CDOPERADOR
                                    FROM PRODCOMP, PRODUTO PR
                                   WHERE PRODCOMP.CDPRODUTO = PR.CDPRODUTO
                                     AND PRODUTO.CDARVPROD LIKE PR.CDARVPROD || '%'
                                     AND OPERADOR.CDOPERADOR = PRODCOMP.CDOPERADOR)
                     AND NOT EXISTS ( SELECT QUALIFICACAO.CDQUALIF   /* QUALIFICACAO DO FORNECEDOR */
                                        FROM QUALIFICACAO
                                       WHERE (FORNECEDOR.CDQUALIF   = QUALIFICACAO.CDQUALIF)
                                         AND (FORNECEDOR.IDFORNAUTO = 'N')
                                         AND ((QUALIFICACAO.IDPERCOTCMP = '2') OR
                                              ((PARASUPRI.IDULTIDTVALQ = 'D'   AND TO_DATE(SYSDATE) > FORNECEDOR.DTVALQUALIF) OR
                                              (PARASUPRI.IDULTIDTVALQ = 'M'    AND TO_DATE(SYSDATE) > LAST_DAY(FORNECEDOR.DTVALQUALIF)))))
                     AND NOT EXISTS ( SELECT QFOMARPROD.CDMARCA   /* QUALIFICACAO DE PRODUTO/MARCA */
                                        FROM QFOMARPROD
                                       WHERE (QFOMARPROD.CDPRODUTO    = PRODUTO.CDPRODUTO) AND
                                             (QFOMARPROD.CDMARCA      = NVL(MARCPRODCOMP.CDMARCA, PARASUPRI.CDMARCA))     AND
                                             ((QFOMARPROD.IDAPRMARPRO = 'N' AND QFOMARPROD.IDAUTMARPRO = 'N')   OR
                                             ((QFOMARPROD.IDAPRMARPRO = 'S') AND ((PARASUPRI.IDULTIDTVALQ = 'M' AND
                                               TO_DATE(SYSDATE) > LAST_DAY(QFOMARPROD.DTVALAPROVA)) OR
                                             (PARASUPRI.IDULTIDTVALQ = 'D' AND TO_DATE(SYSDATE) > QFOMARPROD.DTVALAPROVA)))))
                     AND EXISTS ( SELECT QFOMARPROD.CDMARCA /* QUALIFICACAO DE PRODUTO/MARCA */
                                    FROM QFOMARPROD
                                   WHERE QFOMARPROD.CDPRODUTO = PRODUTO.CDPRODUTO
                                     AND QFOMARPROD.CDMARCA   = NVL(MARCPRODCOMP.CDMARCA, PARASUPRI.CDMARCA)
                                   UNION
                                  SELECT PARASUPRI.CDMARCA
                                    FROM PARASUPRI
                                   WHERE PARASUPRI.CDFILIAL    = P_CDFILIAL
                                     AND (PARASUPRI.IDMARSEMQUA = 'N' OR PARASUPRI.IDMARSEMQUA IS NULL))
                     AND NOT EXISTS (SELECT QFOPRODFORN.CDPRODUTO/* QUALIFICACAO DE PRODUTO/FORNECEDOR */
                                       FROM QFOPRODFORN
                                      WHERE (QFOPRODFORN.CDPRODUTO = PRODFORNCOMP.CDPRODCOMPL)
                                        AND (QFOPRODFORN.CDFORNECED= PRODFORNCOMP.CDFORNECED)
                                        AND ((QFOPRODFORN.IDFORNAPROV = 'N' AND QFOPRODFORN.IDFORNAUTOR = 'N') OR
                                             ((QFOPRODFORN.IDFORNAPROV = 'S') AND
                                               ((PARASUPRI.IDULTIDTVALQ = 'M' AND
                                                  TO_DATE(SYSDATE) > LAST_DAY(QFOPRODFORN.DTVALPRFORN)) OR
                                                 (PARASUPRI.IDULTIDTVALQ = 'D' AND
                                                  TO_DATE(SYSDATE) > QFOPRODFORN.DTVALPRFORN)))))
                     AND EXISTS ( SELECT 1
                                    FROM MARCFORNPEDCOL
                                   WHERE MARCFORNPEDCOL.CDFORNECED = FORNECEDOR.CDFORNECED
                                     AND MARCFORNPEDCOL.CDMARCA    = MARCA.CDMARCA
                                   UNION ALL
                                  SELECT 1
                                    FROM DUAL
                                   WHERE NOT EXISTS (SELECT 1
                                                       FROM MARCFORNPEDCOL
                                                      WHERE MARCFORNPEDCOL.CDFORNECED = FORNECEDOR.CDFORNECED))


                  UNION ALL
                  SELECT FORNECEDOR.CDFORNECED, FORNECEDOR.IDTPIJURFORN, FORNECEDOR.NRINSJURFORN, FORNECEDOR.NMRAZSOCFORN,
                         FORNECEDOR.IDTPFRETFORN, REGIAO.NMREGIAO, MARCA.CDMARCA, PRODUTO.CDPRODESTO, OPERADOR.CDOPERADOR,
                         PRODUTO.CDARVPROD, PRODUTO.SGUNIDADE, PRODUTO.NMPRODUTO, FORNECEDOR.NMFANTFORN,
                         NVL(ITEMCOLE.QTACMPITMCOL, 0) AS QTACOMPRAR, REGIAO.CDREGIAO, PRODUTO.CDPRODUTO, OPERADOR.NMOPERADOR,
                         REPLACE(REPLACE(MARCA.NMMARCA, CHR(13), ''), CHR(10), '') NMMARCA, MARCA.CDMARCA AS CDMARCAPADR
                    FROM PARASUPRI, COLETAPR, ITEMCOLE, PRODUTO,
                         ( SELECT CDREGIAO, NMREGIAO
                             FROM REGIAO
                            WHERE INSTR(NVL(P_CDREGIAO, REGIAO.CDREGIAO), REGIAO.CDREGIAO) <> 0 ) REGIAO,
                         ( SELECT CDOPERADOR, NMOPERADOR
                             FROM OPERADOR
                            WHERE INSTR(NVL(P_CDCOMPRADOR, OPERADOR.CDOPERADOR), OPERADOR.CDOPERADOR) <> 0) OPERADOR,
                         ( SELECT CDFORNECED, IDTPIJURFORN, NRINSJURFORN, NMRAZSOCFORN, NMFANTFORN, IDTPFRETFORN,
                                  DTVALQUALIF, IDFORNAUTO, CDQUALIF
                             FROM FORNECEDOR
                            WHERE INSTR(NVL(P_CDFORNECED, FORNECEDOR.CDFORNECED), FORNECEDOR.CDFORNECED) <> 0 ) FORNECEDOR,
                         ( SELECT CDMARCA, NMMARCA, IDMARCAATIVA
                             FROM MARCA
                            WHERE INSTR(NVL(P_CDMARCA, CDMARCA), CDMARCA) <> 0) MARCA,
                         ( SELECT PARAMPRODSUP.CDREGIAO, PARAMPRODSUP.CDPRODUTO
                             FROM PARAMPRODSUP, FILIAL
                            WHERE FILIAL.CDFILIAL = P_CDFILIPROC
                              AND FILIAL.IDFUNCAOFILI = 'C'
                              AND FILIAL.CDFILIAL = PARAMPRODSUP.CDFILICTRL
                              AND PARAMPRODSUP.IDFILINEGCOR = 'S'
                            UNION ALL
                           SELECT PARAMPRODSUP.CDREGIAO, PARAMPRODSUP.CDPRODUTO
                             FROM PARAMPRODSUP, FILIAL
                            WHERE FILIAL.CDFILIAL = P_CDFILIPROC
                              AND FILIAL.IDFUNCAOFILI = 'R'
                              AND FILIAL.CDFILIAL = PARAMPRODSUP.CDFILICTRL
                              AND PARAMPRODSUP.IDFILINEGREG = 'S') PARAMPRODSUP,
                         PRODFORNCOMP LEFT JOIN MARCPRODCOMP
                                             ON PRODFORNCOMP.CDPRODCOMPL = MARCPRODCOMP.CDPRMARCOMPL
                   WHERE PARASUPRI.CDFILIAL = P_CDFILIAL
                     AND NVL(PARASUPRI.IDCONSPRSOL, 'N') <> 'S'
                     AND COLETAPR.CDFILIAL     = ITEMCOLE.CDFILIAL
                     AND COLETAPR.NRCOLEPRECO  = ITEMCOLE.NRCOLEPRECO
                     AND COLETAPR.CDOPERADOR   = OPERADOR.CDOPERADOR
                     AND ITEMCOLE.CDFILIAL     = P_CDFILIAL
                     AND ITEMCOLE.NRSEQPRELIST = P_NRSEQPRELIST
                     AND PRODUTO.CDARVPROD BETWEEN P_CDPRODINI AND P_CDPRODFIN
                     AND ITEMCOLE.CDPRODUTO  = PRODUTO.CDPRODUTO
                     AND ITEMCOLE.CDREGIAO   = REGIAO.CDREGIAO
                     AND ITEMCOLE.CDFORNECED = FORNECEDOR.CDFORNECED
                     AND ITEMCOLE.CDMARCA    = MARCA.CDMARCA
                     AND MARCA.IDMARCAATIVA       = 'A'
                     AND PARAMPRODSUP.CDPRODUTO = ITEMCOLE.CDPRODUTO
                     AND PARAMPRODSUP.CDREGIAO  = ITEMCOLE.CDREGIAO
                     AND NOT EXISTS ( SELECT REFOREG.CDREGIAO, REFOREG.CDFORNECED
                                        FROM REFOREG
                                       WHERE REFOREG.CDREGIAO = REGIAO.CDREGIAO
                                         AND REFOREG.CDFORNECED = FORNECEDOR.CDFORNECED )
                     AND EXISTS ( SELECT PRODCOMP.CDPRODUTO, PRODCOMP.CDOPERADOR
                                    FROM PRODCOMP, PRODUTO PR
                                   WHERE PRODCOMP.CDPRODUTO = PR.CDPRODUTO
                                     AND PRODUTO.CDARVPROD LIKE PR.CDARVPROD || '%'
                                     AND OPERADOR.CDOPERADOR = PRODCOMP.CDOPERADOR)
                     AND NOT EXISTS ( SELECT QUALIFICACAO.CDQUALIF   /* QUALIFICACAO DO FORNECEDOR */
                                        FROM QUALIFICACAO
                                       WHERE (FORNECEDOR.CDQUALIF   = QUALIFICACAO.CDQUALIF)
                                         AND (FORNECEDOR.IDFORNAUTO = 'N')
                                         AND ((QUALIFICACAO.IDPERCOTCMP = '2') OR
                                             ((PARASUPRI.IDULTIDTVALQ = 'D'   AND TO_DATE(SYSDATE) > FORNECEDOR.DTVALQUALIF) OR
                                             (PARASUPRI.IDULTIDTVALQ = 'M'    AND TO_DATE(SYSDATE) > LAST_DAY(FORNECEDOR.DTVALQUALIF)))))
                     AND NOT EXISTS ( SELECT QFOMARPROD.CDMARCA   /* QUALIFICACAO DE PRODUTO/MARCA */
                                        FROM QFOMARPROD
                                       WHERE (QFOMARPROD.CDPRODUTO    = PRODUTO.CDPRODUTO) AND
                                             (QFOMARPROD.CDMARCA      = NVL(MARCPRODCOMP.CDMARCA, PARASUPRI.CDMARCA))     AND
                                             ((QFOMARPROD.IDAPRMARPRO = 'N' AND QFOMARPROD.IDAUTMARPRO = 'N')   OR
                                             ((QFOMARPROD.IDAPRMARPRO = 'S') AND ((PARASUPRI.IDULTIDTVALQ = 'M' AND
                                               TO_DATE(SYSDATE) > LAST_DAY(QFOMARPROD.DTVALAPROVA)) OR
                                             (PARASUPRI.IDULTIDTVALQ = 'D' AND TO_DATE(SYSDATE) > QFOMARPROD.DTVALAPROVA)))))
                     AND EXISTS ( SELECT QFOMARPROD.CDMARCA /* QUALIFICACAO DE PRODUTO/MARCA */
                                    FROM QFOMARPROD
                                   WHERE QFOMARPROD.CDPRODUTO = PRODUTO.CDPRODUTO
                                     AND QFOMARPROD.CDMARCA   = NVL(MARCPRODCOMP.CDMARCA, PARASUPRI.CDMARCA)
                                   UNION
                                  SELECT PARASUPRI.CDMARCA
                                    FROM PARASUPRI
                                   WHERE PARASUPRI.CDFILIAL    = P_CDFILIAL
                                     AND (PARASUPRI.IDMARSEMQUA = 'N' OR PARASUPRI.IDMARSEMQUA IS NULL))
                     AND NOT EXISTS ( SELECT QFOPRODFORN.CDPRODUTO /* QUALIFICACAO DE PRODUTO/FORNECEDOR */
                                        FROM QFOPRODFORN
                                       WHERE QFOPRODFORN.CDPRODUTO = PRODFORNCOMP.CDPRODCOMPL
                                         AND QFOPRODFORN.CDFORNECED= PRODFORNCOMP.CDFORNECED
                                         AND ((QFOPRODFORN.IDFORNAPROV = 'N' AND QFOPRODFORN.IDFORNAUTOR = 'N') OR
                                             ((QFOPRODFORN.IDFORNAPROV = 'S') AND
                                               ((PARASUPRI.IDULTIDTVALQ = 'M' AND
                                                  TO_DATE(SYSDATE) > LAST_DAY(QFOPRODFORN.DTVALPRFORN)) OR
                                                 (PARASUPRI.IDULTIDTVALQ = 'D' AND
                                                  TO_DATE(SYSDATE) > QFOPRODFORN.DTVALPRFORN)))))
                     AND EXISTS ( SELECT 1
                                    FROM MARCFORNPEDCOL
                                   WHERE MARCFORNPEDCOL.CDFORNECED = FORNECEDOR.CDFORNECED
                                     AND MARCFORNPEDCOL.CDMARCA    = MARCA.CDMARCA
                                   UNION ALL
                                  SELECT 1
                                    FROM DUAL
                                   WHERE NOT EXISTS (SELECT 1
                                                       FROM MARCFORNPEDCOL
                                                      WHERE MARCFORNPEDCOL.CDFORNECED = FORNECEDOR.CDFORNECED))

                  /*################################## IDCONSPRSOL DA PARASUPRI #############################################*/
                  UNION ALL

                  SELECT FORNECEDOR.CDFORNECED, FORNECEDOR.IDTPIJURFORN, FORNECEDOR.NRINSJURFORN, FORNECEDOR.NMRAZSOCFORN,
                         FORNECEDOR.IDTPFRETFORN, REGIAO.NMREGIAO, MARCA.CDMARCA, PRODUTO.CDPRODESTO, OPERADOR.CDOPERADOR,
                         PRODUTO.CDARVPROD, PRODUTO.SGUNIDADE, PRODUTO.NMPRODUTO, FORNECEDOR.NMFANTFORN,
                         NVL(ITEMCOLE.QTACMPITMCOL, 0) AS QTACOMPRAR, REGIAO.CDREGIAO, PRODUTO.CDPRODUTO, OPERADOR.NMOPERADOR,
                         REPLACE(REPLACE(MARCA.NMMARCA, CHR(13), ''), CHR(10), '') NMMARCA, MARCA.CDMARCA AS CDMARCAPADR
                    FROM PARASUPRI, COLETAPR, ITEMCOLE, PRODUTO, FILIAL FILI,
                         ( SELECT CDREGIAO, NMREGIAO
                             FROM REGIAO
                            WHERE INSTR(NVL(P_CDREGIAO, REGIAO.CDREGIAO), REGIAO.CDREGIAO) <> 0 ) REGIAO,
                         ( SELECT CDOPERADOR, NMOPERADOR
                             FROM OPERADOR
                            WHERE INSTR(NVL(P_CDCOMPRADOR, OPERADOR.CDOPERADOR), OPERADOR.CDOPERADOR) <> 0 ) OPERADOR,
                         ( SELECT CDFORNECED, IDTPIJURFORN, NRINSJURFORN, NMRAZSOCFORN, NMFANTFORN, IDTPFRETFORN, DTVALQUALIF, IDFORNAUTO, CDQUALIF
                             FROM FORNECEDOR
                            WHERE INSTR(NVL(P_CDFORNECED, FORNECEDOR.CDFORNECED), FORNECEDOR.CDFORNECED) <> 0 ) FORNECEDOR,
                         ( SELECT CDMARCA, NMMARCA, IDMARCAATIVA
                             FROM MARCA
                            WHERE INSTR(NVL(P_CDMARCA, CDMARCA), CDMARCA) <> 0) MARCA,
                         PRODFORNCOMP LEFT JOIN MARCPRODCOMP
                                             ON PRODFORNCOMP.CDPRODCOMPL = MARCPRODCOMP.CDPRMARCOMPL
                   WHERE PARASUPRI.CDFILIAL = P_CDFILIAL
                     AND NVL(PARASUPRI.IDCONSPRSOL, 'N') = 'S'
                     AND COLETAPR.CDFILIAL     = ITEMCOLE.CDFILIAL
                     AND COLETAPR.NRCOLEPRECO  = ITEMCOLE.NRCOLEPRECO
                     AND COLETAPR.CDOPERADOR   = OPERADOR.CDOPERADOR
                     AND ITEMCOLE.CDFILIAL     = P_CDFILIAL
                     AND ITEMCOLE.NRSEQPRELIST = P_NRSEQPRELIST
                     AND PRODUTO.CDARVPROD BETWEEN P_CDPRODINI AND P_CDPRODFIN
                     AND ITEMCOLE.CDPRODUTO  = PRODUTO.CDPRODUTO
                     AND ITEMCOLE.CDREGIAO   = REGIAO.CDREGIAO
                     AND ITEMCOLE.CDFORNECED = FORNECEDOR.CDFORNECED
                     AND ITEMCOLE.CDMARCA    = MARCA.CDMARCA
                     AND MARCA.IDMARCAATIVA       = 'A'
                     AND FILI.CDFILIAL = P_CDFILIPROC
                     AND ((FILI.IDFUNCAOFILI IS NULL) OR (FILI.IDFUNCAOFILI = 'O'))
                     AND NOT EXISTS ( SELECT REFOREG.CDREGIAO, REFOREG.CDFORNECED
                                        FROM REFOREG
                                       WHERE REFOREG.CDREGIAO = REGIAO.CDREGIAO
                                         AND REFOREG.CDFORNECED = FORNECEDOR.CDFORNECED )
                     AND EXISTS ( SELECT PRODCOMP.CDPRODUTO, PRODCOMP.CDOPERADOR
                                    FROM PRODCOMP, PRODUTO PR
                                   WHERE PRODCOMP.CDPRODUTO = PR.CDPRODUTO
                                     AND PRODUTO.CDARVPROD LIKE PR.CDARVPROD || '%'
                                     AND OPERADOR.CDOPERADOR = PRODCOMP.CDOPERADOR)
                     AND NOT EXISTS ( SELECT QUALIFICACAO.CDQUALIF   /* QUALIFICACAO DO FORNECEDOR */
                                        FROM QUALIFICACAO
                                       WHERE (FORNECEDOR.CDQUALIF   = QUALIFICACAO.CDQUALIF)
                                         AND (FORNECEDOR.IDFORNAUTO = 'N')
                                         AND ((QUALIFICACAO.IDPERCOTCMP = '2') OR
                                             ((PARASUPRI.IDULTIDTVALQ = 'D'   AND TO_DATE(SYSDATE) > FORNECEDOR.DTVALQUALIF) OR
                                             (PARASUPRI.IDULTIDTVALQ = 'M'    AND TO_DATE(SYSDATE) > LAST_DAY(FORNECEDOR.DTVALQUALIF)))))
                     AND NOT EXISTS ( SELECT QFOMARPROD.CDMARCA   /* QUALIFICACAO DE PRODUTO/MARCA */
                                        FROM QFOMARPROD
                                       WHERE (QFOMARPROD.CDPRODUTO    = PRODUTO.CDPRODUTO) AND
                                             (QFOMARPROD.CDMARCA      = NVL(MARCPRODCOMP.CDMARCA, PARASUPRI.CDMARCA))     AND
                                             ((QFOMARPROD.IDAPRMARPRO = 'N' AND QFOMARPROD.IDAUTMARPRO = 'N')   OR
                                             ((QFOMARPROD.IDAPRMARPRO = 'S') AND ((PARASUPRI.IDULTIDTVALQ = 'M' AND
                                               TO_DATE(SYSDATE) > LAST_DAY(QFOMARPROD.DTVALAPROVA)) OR
                                             (PARASUPRI.IDULTIDTVALQ = 'D' AND TO_DATE(SYSDATE) > QFOMARPROD.DTVALAPROVA)))))
                     AND EXISTS ( SELECT QFOMARPROD.CDMARCA /* QUALIFICACAO DE PRODUTO/MARCA */
                                    FROM QFOMARPROD
                                   WHERE QFOMARPROD.CDPRODUTO = PRODUTO.CDPRODUTO
                                     AND QFOMARPROD.CDMARCA   = NVL(MARCPRODCOMP.CDMARCA, PARASUPRI.CDMARCA)
                                   UNION
                                  SELECT PARASUPRI.CDMARCA
                                    FROM PARASUPRI
                                   WHERE PARASUPRI.CDFILIAL    = P_CDFILIAL
                                     AND (PARASUPRI.IDMARSEMQUA = 'N' OR PARASUPRI.IDMARSEMQUA IS NULL))
                     AND NOT EXISTS ( SELECT QFOPRODFORN.CDPRODUTO /* QUALIFICACAO DE PRODUTO/FORNECEDOR */
                                        FROM QFOPRODFORN
                                       WHERE QFOPRODFORN.CDPRODUTO = PRODFORNCOMP.CDPRODCOMPL
                                         AND QFOPRODFORN.CDFORNECED= PRODFORNCOMP.CDFORNECED
                                         AND ((QFOPRODFORN.IDFORNAPROV = 'N' AND QFOPRODFORN.IDFORNAUTOR = 'N') OR
                                             ((QFOPRODFORN.IDFORNAPROV = 'S') AND
                                               ((PARASUPRI.IDULTIDTVALQ = 'M' AND
                                                  TO_DATE(SYSDATE) > LAST_DAY(QFOPRODFORN.DTVALPRFORN)) OR
                                                 (PARASUPRI.IDULTIDTVALQ = 'D' AND
                                                  TO_DATE(SYSDATE) > QFOPRODFORN.DTVALPRFORN)))))
                     AND EXISTS ( SELECT 1
                                    FROM MARCFORNPEDCOL
                                   WHERE MARCFORNPEDCOL.CDFORNECED = FORNECEDOR.CDFORNECED
                                     AND MARCFORNPEDCOL.CDMARCA    = MARCA.CDMARCA
                                   UNION ALL
                                  SELECT 1
                                    FROM DUAL
                                   WHERE NOT EXISTS (SELECT 1
                                                       FROM MARCFORNPEDCOL
                                                      WHERE MARCFORNPEDCOL.CDFORNECED = FORNECEDOR.CDFORNECED))

                  UNION ALL

                  SELECT FORNECEDOR.CDFORNECED, FORNECEDOR.IDTPIJuRFORN, FORNECEDOR.NRINSJURFORN, FORNECEDOR.NMRAZSOCFORN,
                         FORNECEDOR.IDTPFRETFORN, REGIAO.NMREGIAO, MARCA.CDMARCA, PRODUTO.CDPRODESTO, OPERADOR.CDOPERADOR,
                         PRODUTO.CDARVPROD, PRODUTO.SGUNIDADE, PRODUTO.NMPRODUTO, FORNECEDOR.NMFANTFORN,
                         NVL(ITEMCOLE.QTACMPITMCOL, 0) AS QTACOMPRAR, REGIAO.CDREGIAO, PRODUTO.CDPRODUTO, OPERADOR.NMOPERADOR,
                         REPLACE(REPLACE(MARCA.NMMARCA, CHR(13), ''), CHR(10), '') NMMARCA, MARCA.CDMARCA AS CDMARCAPADR
                    FROM PARASUPRI, COLETAPR, ITEMCOLE, PRODUTO,
                         ( SELECT CDREGIAO, NMREGIAO
                             FROM REGIAO
                            WHERE INSTR(NVL(P_CDREGIAO, REGIAO.CDREGIAO), REGIAO.CDREGIAO) <> 0 ) REGIAO,
                         ( SELECT CDOPERADOR, NMOPERADOR
                             FROM OPERADOR
                            WHERE INSTR(NVL(P_CDCOMPRADOR, OPERADOR.CDOPERADOR), OPERADOR.CDOPERADOR) <> 0 ) OPERADOR,
                         ( SELECT CDFORNECED, IDTPIJURFORN, NRINSJURFORN, NMRAZSOCFORN, NMFANTFORN, IDTPFRETFORN, DTVALQUALIF, IDFORNAUTO, CDQUALIF
                             FROM FORNECEDOR
                            WHERE INSTR(NVL(P_CDFORNECED, FORNECEDOR.CDFORNECED), FORNECEDOR.CDFORNECED) <> 0 ) FORNECEDOR,
                         ( SELECT CDMARCA, NMMARCA, MARCA.IDMARCAATIVA
                             FROM MARCA
                            WHERE INSTR(NVL(P_CDMARCA, CDMARCA), CDMARCA) <> 0) MARCA,
                         ( SELECT PARAMPRODSUP.CDREGIAO, PARAMPRODSUP.CDPRODUTO
                             FROM PARAMPRODSUP, FILIAL
                            WHERE FILIAL.CDFILIAL = P_CDFILIPROC
                              AND FILIAL.IDFUNCAOFILI = 'C'
                              AND FILIAL.CDFILIAL = PARAMPRODSUP.CDFILICTRL
                              AND PARAMPRODSUP.IDFILINEGCOR = 'S'
                            UNION ALL
                           SELECT PARAMPRODSUP.CDREGIAO, PARAMPRODSUP.CDPRODUTO
                             FROM PARAMPRODSUP, FILIAL
                            WHERE FILIAL.CDFILIAL = P_CDFILIPROC
                              AND FILIAL.IDFUNCAOFILI = 'R'
                              AND FILIAL.CDFILIAL = PARAMPRODSUP.CDFILICTRL
                              AND PARAMPRODSUP.IDFILINEGREG = 'S') PARAMPRODSUP,
                         PRODFORNCOMP LEFT JOIN MARCPRODCOMP
                                             ON PRODFORNCOMP.CDPRODCOMPL = MARCPRODCOMP.CDPRMARCOMPL
                   WHERE PARASUPRI.CDFILIAL = P_CDFILIAL
                     AND NVL(PARASUPRI.IDCONSPRSOL, 'N') = 'S'
                     AND COLETAPR.CDFILIAL     = ITEMCOLE.CDFILIAL
                     AND COLETAPR.NRCOLEPRECO  = ITEMCOLE.NRCOLEPRECO
                     AND COLETAPR.CDOPERADOR   = OPERADOR.CDOPERADOR
                     AND ITEMCOLE.CDFILIAL     = P_CDFILIAL
                     AND ITEMCOLE.NRSEQPRELIST = P_NRSEQPRELIST
                     AND PRODUTO.CDARVPROD BETWEEN P_CDPRODINI AND P_CDPRODFIN
                     AND ITEMCOLE.CDPRODUTO  = PRODUTO.CDPRODUTO
                     AND ITEMCOLE.CDREGIAO   = REGIAO.CDREGIAO
                     AND ITEMCOLE.CDFORNECED = FORNECEDOR.CDFORNECED
                     AND ITEMCOLE.CDMARCA    = MARCA.CDMARCA
                     AND MARCA.IDMARCAATIVA  = 'A'
                     AND PARAMPRODSUP.CDPRODUTO = ITEMCOLE.CDPRODUTO
                     AND PARAMPRODSUP.CDREGIAO  = ITEMCOLE.CDREGIAO
                     AND NOT EXISTS ( SELECT REFOREG.CDREGIAO, REFOREG.CDFORNECED
                                        FROM REFOREG
                                       WHERE REFOREG.CDREGIAO = REGIAO.CDREGIAO
                                         AND REFOREG.CDFORNECED = FORNECEDOR.CDFORNECED)
                     AND EXISTS (SELECT PRODCOMP.CDPRODUTO, PRODCOMP.CDOPERADOR
                                   FROM PRODCOMP, PRODUTO PR
                                  WHERE PRODCOMP.CDPRODUTO = PR.CDPRODUTO
                                    AND PRODUTO.CDARVPROD LIKE PR.CDARVPROD || '%'
                                    AND OPERADOR.CDOPERADOR = PRODCOMP.CDOPERADOR)
                     AND NOT EXISTS (SELECT QUALIFICACAO.CDQUALIF   /* QUALIFICACAO DO FORNECEDOR */
                                       FROM QUALIFICACAO
                                      WHERE (FORNECEDOR.CDQUALIF   = QUALIFICACAO.CDQUALIF)
                                        AND (FORNECEDOR.IDFORNAUTO = 'N')
                                        AND ((QUALIFICACAO.IDPERCOTCMP = '2') OR
                                            ((PARASUPRI.IDULTIDTVALQ = 'D'   AND TO_DATE(SYSDATE) > FORNECEDOR.DTVALQUALIF) OR
                                            (PARASUPRI.IDULTIDTVALQ = 'M'    AND TO_DATE(SYSDATE) > LAST_DAY(FORNECEDOR.DTVALQUALIF)))))
                     AND NOT EXISTS (SELECT QFOMARPROD.CDMARCA   /* QUALIFICACAO DE PRODUTO/MARCA */
                                       FROM QFOMARPROD
                                      WHERE (QFOMARPROD.CDPRODUTO    = PRODUTO.CDPRODUTO) AND
                                            (QFOMARPROD.CDMARCA      = NVL(MARCPRODCOMP.CDMARCA, PARASUPRI.CDMARCA))     AND
                                            ((QFOMARPROD.IDAPRMARPRO = 'N' AND QFOMARPROD.IDAUTMARPRO = 'N')   OR
                                            ((QFOMARPROD.IDAPRMARPRO = 'S') AND ((PARASUPRI.IDULTIDTVALQ = 'M' AND
                                              TO_DATE(SYSDATE) > LAST_DAY(QFOMARPROD.DTVALAPROVA)) OR
                                            (PARASUPRI.IDULTIDTVALQ = 'D' AND TO_DATE(SYSDATE) > QFOMARPROD.DTVALAPROVA)))))
                     AND EXISTS (SELECT QFOMARPROD.CDMARCA /* QUALIFICACAO DE PRODUTO/MARCA */
                                   FROM QFOMARPROD
                                  WHERE QFOMARPROD.CDPRODUTO = PRODUTO.CDPRODUTO
                                    AND QFOMARPROD.CDMARCA   = NVL(MARCPRODCOMP.CDMARCA, PARASUPRI.CDMARCA)
                                  UNION
                                 SELECT PARASUPRI.CDMARCA
                                   FROM PARASUPRI
                                  WHERE PARASUPRI.CDFILIAL    = P_CDFILIAL
                                    AND (PARASUPRI.IDMARSEMQUA = 'N' OR PARASUPRI.IDMARSEMQUA IS NULL))
                     AND NOT EXISTS (SELECT QFOPRODFORN.CDPRODUTO /* QUALIFICACAO DE PRODUTO/FORNECEDOR */
                                       FROM QFOPRODFORN
                                      WHERE QFOPRODFORN.CDPRODUTO = PRODFORNCOMP.CDPRODCOMPL
                                        AND QFOPRODFORN.CDFORNECED= PRODFORNCOMP.CDFORNECED
                                        AND ((QFOPRODFORN.IDFORNAPROV = 'N' AND QFOPRODFORN.IDFORNAUTOR = 'N') OR
                                            ((QFOPRODFORN.IDFORNAPROV = 'S') AND
                                              ((PARASUPRI.IDULTIDTVALQ = 'M' AND
                                                 TO_DATE(SYSDATE) > LAST_DAY(QFOPRODFORN.DTVALPRFORN)) OR
                                                (PARASUPRI.IDULTIDTVALQ = 'D' AND
                                                 TO_DATE(SYSDATE) > QFOPRODFORN.DTVALPRFORN)))))
                     AND EXISTS (SELECT 1
                                   FROM MARCFORNPEDCOL
                                  WHERE MARCFORNPEDCOL.CDFORNECED = FORNECEDOR.CDFORNECED
                                    AND MARCFORNPEDCOL.CDMARCA    = MARCA.CDMARCA
                                  UNION ALL
                                 SELECT 1
                                   FROM DUAL
                                  WHERE NOT EXISTS (SELECT 1
                                                      FROM MARCFORNPEDCOL
                                                     WHERE MARCFORNPEDCOL.CDFORNECED = FORNECEDOR.CDFORNECED)))
        GROUP BY CDREGIAO, NMREGIAO, CDOPERADOR, NMOPERADOR, CDFORNECED, NRINSJURFORN,
              IDTPIJURFORN, NMRAZSOCFORN, NMFANTFORN, CDPRODUTO, NMPRODUTO, SGUNIDADE,
              CDPRODESTO, IDTPFRETFORN, CDMARCA, NMMARCA, CDMARCAPADR, CDARVPROD;

   BEGIN
      FOR CONTADOR IN PED_COL_LISTAPREC LOOP
         V_PIPE.EXTEND;
         V_PIPE(V_INDICE) := CONTADOR;
         PIPE ROW(V_PIPE(V_INDICE));
         V_INDICE := V_INDICE+1;
      END LOOP;
      RETURN;
   END PED_COL_LISTAPREC;

   FUNCTION PED_COMPRA( P_CDPRODINI     VARCHAR2,
                        P_CDPRODFIN     VARCHAR2,
                        P_TPRODUTO      VARCHAR2,
                        P_CDFORNECED    VARCHAR2,
                        P_CDMARCA       VARCHAR2,
                        P_NRCOMPRA      VARCHAR2,
                        P_DTINI         DATE,
                        P_DTFIN         DATE) RETURN TABELA PIPELINED IS

      V_PIPE TABELA := TABELA();
      V_INDICE NUMBER := 1;

      CURSOR PED_COMPRA IS
         SELECT CDREGIAO, NMREGIAO, CDOPERADOR, NMOPERADOR, CDFORNECED, NRINSJURFORN,
                IDTPIJURFORN, NMRAZSOCFORN, NMFANTFORN, CDPRODUTO, NMPRODUTO, SGUNIDADE,
                CDPRODESTO, IDTPFRETFORN, CDMARCA, NMMARCA, CDMARCAPADR, CDARVPROD, QTACOMPRAR,
                NRCOMPRA
           FROM ( SELECT FORNECEDOR.CDFORNECED, FORNECEDOR.IDTPIJURFORN, FORNECEDOR.NRINSJURFORN, FORNECEDOR.NMRAZSOCFORN, FORNECEDOR.IDTPFRETFORN,
                         REGIAO.NMREGIAO, MARCA.CDMARCA, PRODUTO.CDPRODESTO, OPERADOR.CDOPERADOR, PRODUTO.CDARVPROD, PRODUTO.SGUNIDADE,
                         PRODUTO.NMPRODUTO, FORNECEDOR.NMFANTFORN, NVL(PRODACOMPRAR.QTACOMPRAR, 0) AS QTACOMPRAR, REGIAO.CDREGIAO,
                         PRODUTO.CDPRODUTO, OPERADOR.NMOPERADOR, REPLACE(REPLACE(MARCA.NMMARCA, CHR(13), ''), CHR(10), '') NMMARCA,
                         MARCA.CDMARCA AS CDMARCAPADR, PRODCOMPRA.NRCOMPRA
                    FROM PARASUPRI, COMPRA, PRODCOMPRA, FORPRCOMPRA, PRODUTO, MARCPRODCOMP, FILIAL FILI,
                         ( SELECT COMP.CDREGIAO, COMP.CDPRODUTO, ROUND((COMP.QTDECOMP-NVL(JACOMP.QTDECOMP,0)) / COMP.VRFATOCONV, 5) AS QTACOMPRAR
                             FROM ( SELECT FILIAL.CDREGIAO, PRODUTO.CDPRODESTO, PRODUTO.CDPRODUTO, PRODUTO.VRFATOCONV,
                                           SUM(ITEMSOLI.QTSOLIPROD*PRODUTO.VRFATOCONV) AS QTDECOMP
                                      FROM FILIAL, PRODUTO, PRODCOMPRA, REGIAO, ITEMSOLI
                                     WHERE PRODCOMPRA.CDFILSOLI = FILIAL.CDFILIAL
                                       AND FILIAL.CDREGIAO = REGIAO.CDREGIAO
                                       AND PRODCOMPRA.CDPRODUTO = PRODUTO.CDPRODUTO
                                       AND PRODCOMPRA.DTPROGENTR BETWEEN P_DTINI AND P_DTFIN
                                       AND PRODUTO.CDARVPROD BETWEEN P_CDPRODINI AND P_CDPRODFIN
                                       AND PRODCOMPRA.NRCOMPRA = P_NRCOMPRA
                                       AND PRODCOMPRA.CDFILSOLI = ITEMSOLI.CDFILSOLI
                                       AND PRODCOMPRA.CDFILLAN = ITEMSOLI.CDFILLAN
                                       AND PRODCOMPRA.NRSOLICMP = ITEMSOLI.NRSOLICMP
                                       AND PRODCOMPRA.DTPROGENTR = ITEMSOLI.DTPROGENTR
                                       AND PRODCOMPRA.CDPRODUTO = ITEMSOLI.CDPRODUTO
                                     GROUP BY FILIAL.CDREGIAO, PRODUTO.CDPRODESTO, PRODUTO.CDPRODUTO, PRODUTO.VRFATOCONV) COMP,
                                  ( SELECT FILIAL.CDREGIAO, PRODUTO.CDPRODESTO, SUM(ITEMAUTF.QTPROGENTAF*PRODUTO.VRFATOCONV) AS QTDECOMP
                                      FROM ITEMAUTF, AUTOFORNE, FILIAL, PRODUTO, PRODCOMPRA, REGIAO
                                     WHERE AUTOFORNE.CDFILDEST = ITEMAUTF.CDFILDEST
                                       AND AUTOFORNE.CDFILLANC = ITEMAUTF.CDFILLANC
                                       AND AUTOFORNE.NRAUTOFORN = ITEMAUTF.NRAUTOFORN
                                       AND AUTOFORNE.CDFILDEST = FILIAL.CDFILIAL
                                       AND ITEMAUTF.CDPRODUTO = PRODUTO.CDPRODUTO
                                       AND PRODCOMPRA.CDPRODUTO = PRODUTO.CDPRODUTO
                                       AND PRODCOMPRA.CDFILSOLI = FILIAL.CDFILIAL
                                       AND ITEMAUTF.DTENTRITMSOL BETWEEN P_DTINI AND P_DTFIN
                                       AND FILIAL.CDREGIAO = REGIAO.CDREGIAO
                                       AND AUTOFORNE.IDSITUATUAAF IS NULL
                                       AND AUTOFORNE.IDAFFORALIM = 'N'
                                       AND AUTOFORNE.IDAUTOFORNEX = 'N'
                                       AND NVL(AUTOFORNE.IDBAIXAAF, '0') <> '5'
                                     GROUP BY FILIAL.CDREGIAO, PRODUTO.CDPRODESTO) JACOMP
                            WHERE COMP.CDREGIAO = JACOMP.CDREGIAO (+)
                              AND COMP.CDPRODESTO = JACOMP.CDPRODESTO (+)
                              AND ROUND((COMP.QTDECOMP-NVL(JACOMP.QTDECOMP,0)) / COMP.VRFATOCONV, 5) > 0) PRODACOMPRAR,
                         ( SELECT CDFORNECED, IDTPIJURFORN, NRINSJURFORN, NMRAZSOCFORN, NMFANTFORN, IDTPFRETFORN
                             FROM FORNECEDOR
                            WHERE INSTR(NVL(P_CDFORNECED, FORNECEDOR.CDFORNECED), FORNECEDOR.CDFORNECED) <> 0 ) FORNECEDOR,
                         ( SELECT CDMARCA, NMMARCA, IDMARCAATIVA
                             FROM MARCA
                            WHERE INSTR(NVL(P_CDMARCA, CDMARCA), CDMARCA) <> 0) MARCA,
                         REGIAO, OPERADOR
                   WHERE FILI.CDFILIAL = PRODCOMPRA.CDFILSOLI
                     AND PARASUPRI.CDFILIAL = NVL(FILI.CDFILCENTCMP, FILI.CDFILIAL)
                     AND FILI.CDREGIAO = REGIAO.CDREGIAO
                     AND NVL(PARASUPRI.IDCONSPRSOL, 'N') <> 'S'
                     AND COMPRA.NRCOMPRA = P_NRCOMPRA
                     AND PRODUTO.CDARVPROD BETWEEN P_CDPRODINI AND P_CDPRODFIN
                     AND COMPRA.CDCOMPRADOR  = OPERADOR.CDOPERADOR
                     AND COMPRA.NRCOMPRA = PRODCOMPRA.NRCOMPRA
                     AND PRODCOMPRA.CDPRODUTO = PRODACOMPRAR.CDPRODUTO(+)
                     AND PRODCOMPRA.CDPRODUTO  = PRODUTO.CDPRODUTO
                     AND FORPRCOMPRA.CDFORNECED = FORNECEDOR.CDFORNECED
                     AND PRODCOMPRA.CDPRODUTO  = MARCPRODCOMP.CDPRMARCOMPL
                     AND MARCPRODCOMP.CDMARCA = MARCA.CDMARCA
                     AND MARCA.IDMARCAATIVA       = 'A'
                     AND ((FILI.IDFUNCAOFILI IS NULL) OR (FILI.IDFUNCAOFILI = 'O'))
                     AND FORPRCOMPRA.NRCOMPRA = COMPRA.NRCOMPRA

                   UNION ALL

                  SELECT FORNECEDOR.CDFORNECED, FORNECEDOR.IDTPIJURFORN, FORNECEDOR.NRINSJURFORN, FORNECEDOR.NMRAZSOCFORN,
                         FORNECEDOR.IDTPFRETFORN, REGIAO.NMREGIAO, MARCA.CDMARCA, PRODUTO.CDPRODESTO, OPERADOR.CDOPERADOR,
                         PRODUTO.CDARVPROD, PRODUTO.SGUNIDADE, PRODUTO.NMPRODUTO, FORNECEDOR.NMFANTFORN,
                         NVL(PRODACOMPRAR.QTACOMPRAR, 0) AS QTACOMPRAR, REGIAO.CDREGIAO, PRODUTO.CDPRODUTO, OPERADOR.NMOPERADOR,
                         REPLACE(REPLACE(MARCA.NMMARCA, CHR(13), ''), CHR(10), '') NMMARCA, MARCA.CDMARCA AS CDMARCAPADR,
                         PRODCOMPRA.NRCOMPRA
                    FROM PARASUPRI, COMPRA, PRODCOMPRA, FORPRCOMPRA, PRODUTO, MARCPRODCOMP, REGIAO, FILIAL, OPERADOR,
                         ( SELECT COMP.CDREGIAO, COMP.CDPRODUTO, ROUND(COMP.QTDECOMP-NVL(JACOMP.QTDECOMP/COMP.VRFATOCONV,0), 5) AS QTACOMPRAR
                             FROM ( SELECT FILIAL.CDREGIAO, ESTOQUE.CDPRODESTO, ESTOQUE.CDPRODUTO, ESTOQUE.VRFATOCONV,
                                           SUM(ITEMSOLI.QTSOLIPROD*PRODUTO.VRFATOCONV/ESTOQUE.VRFATOCONV) AS QTDECOMP
                                      FROM PRODUTO ESTOQUE,  FILIAL, PRODUTO, PRODCOMPRA, REGIAO, ITEMSOLI
                                     WHERE PRODCOMPRA.CDFILSOLI = FILIAL.CDFILIAL
                                       AND PRODCOMPRA.DTPROGENTR BETWEEN P_DTINI AND P_DTFIN
                                       AND PRODUTO.CDARVPROD BETWEEN P_CDPRODINI AND P_CDPRODFIN
                                       AND PRODCOMPRA.CDPRODUTO = PRODUTO.CDPRODUTO
                                       AND PRODUTO.CDPRODESTO = ESTOQUE.CDPRODESTO
                                       AND FILIAL.CDREGIAO = REGIAO.CDREGIAO
                                       AND PRODCOMPRA.CDFILSOLI = ITEMSOLI.CDFILSOLI
                                       AND PRODCOMPRA.CDFILLAN = ITEMSOLI.CDFILLAN
                                       AND PRODCOMPRA.NRSOLICMP = ITEMSOLI.NRSOLICMP
                                       AND PRODCOMPRA.DTPROGENTR = ITEMSOLI.DTPROGENTR
                                       AND PRODCOMPRA.CDPRODUTO = ITEMSOLI.CDPRODUTO
                                     GROUP BY FILIAL.CDREGIAO, ESTOQUE.CDPRODESTO, ESTOQUE.CDPRODUTO, ESTOQUE.VRFATOCONV) COMP,
                                  ( SELECT FILIAL.CDREGIAO, PRODUTO.CDPRODESTO, SUM(ITEMAUTF.QTPROGENTAF*PRODUTO.VRFATOCONV) AS QTDECOMP
                                      FROM ITEMAUTF, AUTOFORNE, FILIAL, PRODUTO, REGIAO
                                     WHERE AUTOFORNE.CDFILDEST = ITEMAUTF.CDFILDEST
                                       AND AUTOFORNE.CDFILLANC = ITEMAUTF.CDFILLANC
                                       AND AUTOFORNE.NRAUTOFORN = ITEMAUTF.NRAUTOFORN
                                       AND AUTOFORNE.CDFILDEST = FILIAL.CDFILIAL
                                       AND ITEMAUTF.DTENTRITMSOL BETWEEN P_DTINI AND P_DTFIN
                                       AND ITEMAUTF.CDPRODUTO = PRODUTO.CDPRODUTO
                                       AND AUTOFORNE.CDFILDEST = FILIAL.CDFILIAL
                                       AND FILIAL.CDREGIAO = REGIAO.CDREGIAO
                                       AND AUTOFORNE.IDSITUATUAAF IS NULL
                                       AND AUTOFORNE.IDAFFORALIM = 'N'
                                       AND AUTOFORNE.IDAUTOFORNEX = 'N'
                                       AND NVL(AUTOFORNE.IDBAIXAAF, '0') <> '5'
                                     GROUP BY FILIAL.CDREGIAO, PRODUTO.CDPRODESTO) JACOMP
                            WHERE COMP.CDREGIAO = JACOMP.CDREGIAO (+)
                              AND COMP.CDPRODESTO = JACOMP.CDPRODESTO (+)
                              AND COMP.QTDECOMP-NVL(JACOMP.QTDECOMP/COMP.VRFATOCONV,0) > 0)PRODACOMPRAR,

                         ( SELECT CDMARCA, NMMARCA, IDMARCAATIVA
                             FROM MARCA
                            WHERE INSTR(NVL(P_CDMARCA, CDMARCA), CDMARCA) <> 0) MARCA,
                         ( SELECT CDFORNECED, IDTPIJURFORN, NRINSJURFORN, NMRAZSOCFORN, NMFANTFORN, IDTPFRETFORN
                             FROM FORNECEDOR
                            WHERE INSTR(NVL(P_CDFORNECED, FORNECEDOR.CDFORNECED), FORNECEDOR.CDFORNECED) <> 0 ) FORNECEDOR,
                         ( SELECT PARAMPRODSUP.CDREGIAO, PARAMPRODSUP.CDPRODUTO
                             FROM PARAMPRODSUP, FILIAL, PRODCOMPRA
                            WHERE PRODCOMPRA.CDFILSOLI = FILIAL.CDFILIAL
                              AND FILIAL.IDFUNCAOFILI = 'C'
                              AND FILIAL.CDFILIAL = PARAMPRODSUP.CDFILICTRL
                              AND PARAMPRODSUP.IDFILINEGCOR = 'S'
                            UNION ALL
                           SELECT PARAMPRODSUP.CDREGIAO, PARAMPRODSUP.CDPRODUTO
                             FROM PARAMPRODSUP, FILIAL, PRODCOMPRA
                            WHERE PRODCOMPRA.CDFILSOLI = FILIAL.CDFILIAL
                              AND FILIAL.IDFUNCAOFILI = 'R'
                              AND FILIAL.CDFILIAL = PARAMPRODSUP.CDFILICTRL
                              AND PARAMPRODSUP.IDFILINEGREG = 'S') PARAMPRODSUP
                   WHERE COMPRA.NRCOMPRA = P_NRCOMPRA
                     AND FILIAL.CDFILIAL = PRODCOMPRA.CDFILSOLI
                     AND PARASUPRI.CDFILIAL = NVL(FILIAL.CDFILCENTCMP, FILIAL.CDFILIAL)
                     AND NVL(PARASUPRI.IDCONSPRSOL, 'N') <> 'S'
                     AND COMPRA.NRCOMPRA = PRODCOMPRA.NRCOMPRA
                     AND PRODCOMPRA.NRCOMPRA = FORPRCOMPRA.NRCOMPRA
                     AND COMPRA.CDCOMPRADOR  = OPERADOR.CDOPERADOR
                     AND PRODCOMPRA.CDFILSOLI = FILIAL.CDFILIAL
                     AND FILIAL.CDREGIAO = REGIAO.CDREGIAO
                     AND PRODUTO.CDARVPROD BETWEEN P_CDPRODINI AND P_CDPRODFIN
                     AND PRODCOMPRA.CDPRODUTO = PRODACOMPRAR.CDPRODUTO(+)
                     AND PRODCOMPRA.CDPRODUTO  = PRODUTO.CDPRODUTO
                     AND FORPRCOMPRA.CDFORNECED = FORNECEDOR.CDFORNECED
                     AND PRODCOMPRA.CDPRODUTO  = MARCPRODCOMP.CDPRMARCOMPL
                     AND MARCPRODCOMP.CDMARCA = MARCA.CDMARCA
                     AND MARCA.IDMARCAATIVA       = 'A'
                     AND PARAMPRODSUP.CDPRODUTO = PRODCOMPRA.CDPRODUTO

                  /*################################## IDCONSPRSOL DA PARASUPRI #############################################*/

                   UNION ALL
                  SELECT FORNECEDOR.CDFORNECED, FORNECEDOR.IDTPIJURFORN, FORNECEDOR.NRINSJURFORN, FORNECEDOR.NMRAZSOCFORN, FORNECEDOR.IDTPFRETFORN,
                         REGIAO.NMREGIAO, MARCA.CDMARCA, PRODUTO.CDPRODESTO, OPERADOR.CDOPERADOR, PRODUTO.CDARVPROD, PRODUTO.SGUNIDADE,
                         PRODUTO.NMPRODUTO, FORNECEDOR.NMFANTFORN, NVL(PRODACOMPRAR.QTACOMPRAR, 0) AS QTACOMPRAR, REGIAO.CDREGIAO,
                         PRODUTO.CDPRODUTO, OPERADOR.NMOPERADOR, REPLACE(REPLACE(MARCA.NMMARCA, CHR(13), ''), CHR(10), '') NMMARCA,
                         MARCA.CDMARCA AS CDMARCAPADR, PRODCOMPRA.NRCOMPRA
                    FROM PARASUPRI, PRODUTO, MARCPRODCOMP, FILIAL FILI, COMPRA, PRODCOMPRA, FORPRCOMPRA, REGIAO, OPERADOR,
                         ( SELECT COMP.CDREGIAO, COMP.CDPRODUTO, ROUND((COMP.QTDECOMP-NVL(JACOMP.QTDECOMP,0)) / COMP.VRFATOCONV, 5) AS QTACOMPRAR
                             FROM ( SELECT FILIAL.CDREGIAO, PRODUTO.CDPRODESTO, PRODUTO.CDPRODUTO, PRODUTO.VRFATOCONV,
                                           SUM(ITEMSOLI.QTSOLIPROD*PRODUTO.VRFATOCONV) AS QTDECOMP
                                      FROM FILIAL, PRODUTO, PRODCOMPRA, REGIAO, ITEMSOLI
                                     WHERE PRODCOMPRA.CDFILSOLI = FILIAL.CDFILIAL
                                       AND PRODCOMPRA.CDPRODUTO = PRODUTO.CDPRODUTO
                                       AND PRODCOMPRA.DTPROGENTR BETWEEN P_DTINI AND P_DTFIN
                                       AND PRODUTO.CDARVPROD BETWEEN P_CDPRODINI AND P_CDPRODFIN
                                       AND FILIAL.CDREGIAO = REGIAO.CDREGIAO
                                       AND PRODCOMPRA.CDFILSOLI = ITEMSOLI.CDFILSOLI
                                       AND PRODCOMPRA.CDFILLAN = ITEMSOLI.CDFILLAN
                                       AND PRODCOMPRA.NRSOLICMP = ITEMSOLI.NRSOLICMP
                                       AND PRODCOMPRA.DTPROGENTR = ITEMSOLI.DTPROGENTR
                                       AND PRODCOMPRA.CDPRODUTO = ITEMSOLI.CDPRODUTO
                                     GROUP BY FILIAL.CDREGIAO, PRODUTO.CDPRODESTO, PRODUTO.CDPRODUTO, PRODUTO.VRFATOCONV) COMP,
                                  ( SELECT FILIAL.CDREGIAO, PRODUTO.CDPRODESTO, SUM(ITEMAUTF.QTPROGENTAF*PRODUTO.VRFATOCONV) AS QTDECOMP
                                      FROM ITEMAUTF, AUTOFORNE, FILIAL, PRODUTO, PRODCOMPRA, REGIAO
                                     WHERE AUTOFORNE.CDFILDEST = ITEMAUTF.CDFILDEST
                                       AND AUTOFORNE.CDFILLANC = ITEMAUTF.CDFILLANC
                                       AND AUTOFORNE.NRAUTOFORN = ITEMAUTF.NRAUTOFORN
                                       AND AUTOFORNE.CDFILDEST = FILIAL.CDFILIAL
                                       AND ITEMAUTF.CDPRODUTO = PRODUTO.CDPRODUTO
                                       AND ITEMAUTF.DTENTRITMSOL BETWEEN P_DTINI AND P_DTFIN
                                       AND PRODCOMPRA.CDFILSOLI = FILIAL.CDFILIAL
                                       AND FILIAL.CDREGIAO = REGIAO.CDREGIAO
                                       AND AUTOFORNE.IDSITUATUAAF IS NULL
                                       AND AUTOFORNE.IDAFFORALIM = 'N'
                                       AND AUTOFORNE.IDAUTOFORNEX = 'N'
                                       AND NVL(AUTOFORNE.IDBAIXAAF, '0') <> '5'
                                     GROUP BY FILIAL.CDREGIAO, PRODUTO.CDPRODESTO) JACOMP
                            WHERE COMP.CDREGIAO = JACOMP.CDREGIAO (+)
                              AND COMP.CDPRODESTO = JACOMP.CDPRODESTO (+)
                              AND ROUND((COMP.QTDECOMP-NVL(JACOMP.QTDECOMP,0)) / COMP.VRFATOCONV, 5) > 0) PRODACOMPRAR,
                         ( SELECT CDFORNECED, IDTPIJURFORN, NRINSJURFORN, NMRAZSOCFORN, NMFANTFORN, IDTPFRETFORN
                             FROM FORNECEDOR
                            WHERE INSTR(NVL(P_CDFORNECED, FORNECEDOR.CDFORNECED), FORNECEDOR.CDFORNECED) <> 0 ) FORNECEDOR,
                         ( SELECT CDMARCA, NMMARCA, IDMARCAATIVA
                             FROM MARCA
                            WHERE INSTR(NVL(P_CDMARCA, CDMARCA), CDMARCA) <> 0) MARCA
                   WHERE FILI.CDFILIAL = PRODCOMPRA.CDFILSOLI
                     AND PARASUPRI.CDFILIAL = NVL(FILI.CDFILCENTCMP, FILI.CDFILIAL)
                     AND FILI.CDREGIAO = REGIAO.CDREGIAO
                     AND NVL(PARASUPRI.IDCONSPRSOL, 'N') = 'S'
                     AND COMPRA.NRCOMPRA = P_NRCOMPRA
                     AND PRODUTO.CDARVPROD BETWEEN P_CDPRODINI AND P_CDPRODFIN
                     AND COMPRA.CDCOMPRADOR  = OPERADOR.CDOPERADOR
                     AND COMPRA.NRCOMPRA = PRODCOMPRA.NRCOMPRA
                     AND FORPRCOMPRA.NRCOMPRA = PRODCOMPRA.NRCOMPRA
                     AND PRODCOMPRA.CDPRODUTO = PRODACOMPRAR.CDPRODUTO(+)
                     AND PRODCOMPRA.CDPRODUTO  = PRODUTO.CDPRODUTO
                     AND FORPRCOMPRA.CDFORNECED = FORNECEDOR.CDFORNECED
                     AND PRODCOMPRA.CDPRODUTO  = MARCPRODCOMP.CDPRMARCOMPL
                     AND MARCPRODCOMP.CDMARCA = MARCA.CDMARCA
                     AND MARCA.IDMARCAATIVA       = 'A'
                     AND ((FILI.IDFUNCAOFILI IS NULL) OR (FILI.IDFUNCAOFILI = 'O'))

                   UNION ALL

                  SELECT FORNECEDOR.CDFORNECED, FORNECEDOR.IDTPIJURFORN, FORNECEDOR.NRINSJURFORN, FORNECEDOR.NMRAZSOCFORN,
                         FORNECEDOR.IDTPFRETFORN, REGIAO.NMREGIAO, MARCA.CDMARCA, PRODUTO.CDPRODESTO, OPERADOR.CDOPERADOR,
                         PRODUTO.CDARVPROD, PRODUTO.SGUNIDADE, PRODUTO.NMPRODUTO, FORNECEDOR.NMFANTFORN,
                         NVL(PRODACOMPRAR.QTACOMPRAR, 0) AS QTACOMPRAR, REGIAO.CDREGIAO, PRODUTO.CDPRODUTO,
                         OPERADOR.NMOPERADOR, REPLACE(REPLACE(MARCA.NMMARCA, CHR(13), ''), CHR(10), '') NMMARCA,
                         MARCA.CDMARCA AS CDMARCAPADR, PRODCOMPRA.NRCOMPRA
                    FROM PARASUPRI, COMPRA, PRODCOMPRA, FORPRCOMPRA, PRODUTO, MARCPRODCOMP, REGIAO, OPERADOR, FILIAL,
                         ( SELECT COMP.CDREGIAO, COMP.CDPRODUTO, ROUND((COMP.QTDECOMP-NVL(JACOMP.QTDECOMP,0)) / COMP.VRFATOCONV, 5) AS QTACOMPRAR
                             FROM ( SELECT FILIAL.CDREGIAO, PRODUTO.CDPRODESTO, PRODUTO.CDPRODUTO, PRODUTO.VRFATOCONV,
                                           SUM(ITEMSOLI.QTSOLIPROD*PRODUTO.VRFATOCONV) AS QTDECOMP
                                      FROM FILIAL, PRODUTO, PRODCOMPRA, REGIAO, ITEMSOLI
                                     WHERE PRODCOMPRA.CDFILSOLI = FILIAL.CDFILIAL
                                       AND PRODCOMPRA.DTPROGENTR BETWEEN P_DTINI AND P_DTFIN
                                       AND PRODUTO.CDARVPROD BETWEEN P_CDPRODINI AND P_CDPRODFIN
                                       AND FILIAL.CDREGIAO = REGIAO.CDREGIAO
                                       AND PRODCOMPRA.CDPRODUTO = PRODUTO.CDPRODUTO
                                       AND PRODCOMPRA.CDFILSOLI = ITEMSOLI.CDFILSOLI
                                       AND PRODCOMPRA.CDFILLAN = ITEMSOLI.CDFILLAN
                                       AND PRODCOMPRA.NRSOLICMP = ITEMSOLI.NRSOLICMP
                                       AND PRODCOMPRA.DTPROGENTR = ITEMSOLI.DTPROGENTR
                                       AND PRODCOMPRA.CDPRODUTO = ITEMSOLI.CDPRODUTO
                                     GROUP BY FILIAL.CDREGIAO, PRODUTO.CDPRODESTO, PRODUTO.CDPRODUTO, PRODUTO.VRFATOCONV) COMP,
                                  ( SELECT FILIAL.CDREGIAO, PRODUTO.CDPRODESTO, SUM(ITEMAUTF.QTPROGENTAF*PRODUTO.VRFATOCONV) AS QTDECOMP
                                      FROM ITEMAUTF, AUTOFORNE, FILIAL, PRODUTO, PRODCOMPRA, REGIAO
                                     WHERE AUTOFORNE.CDFILDEST = ITEMAUTF.CDFILDEST
                                       AND AUTOFORNE.CDFILLANC = ITEMAUTF.CDFILLANC
                                       AND AUTOFORNE.NRAUTOFORN = ITEMAUTF.NRAUTOFORN
                                       AND AUTOFORNE.CDFILDEST = FILIAL.CDFILIAL
                                       AND ITEMAUTF.DTENTRITMSOL BETWEEN P_DTINI AND P_DTFIN
                                       AND ITEMAUTF.CDPRODUTO = PRODUTO.CDPRODUTO
                                       AND PRODCOMPRA.CDFILSOLI = FILIAL.CDFILIAL
                                       AND FILIAL.CDREGIAO = REGIAO.CDREGIAO
                                       AND AUTOFORNE.IDSITUATUAAF IS NULL
                                       AND AUTOFORNE.IDAFFORALIM = 'N'
                                       AND AUTOFORNE.IDAUTOFORNEX = 'N'
                                       AND NVL(AUTOFORNE.IDBAIXAAF, '0') <> '5'
                                     GROUP BY FILIAL.CDREGIAO, PRODUTO.CDPRODESTO) JACOMP
                            WHERE COMP.CDREGIAO = JACOMP.CDREGIAO (+)
                              AND COMP.CDPRODESTO = JACOMP.CDPRODESTO (+)
                              AND ROUND((COMP.QTDECOMP-NVL(JACOMP.QTDECOMP,0)) / COMP.VRFATOCONV, 5) > 0)PRODACOMPRAR,
                         ( SELECT CDFORNECED, IDTPIJURFORN, NRINSJURFORN, NMRAZSOCFORN, NMFANTFORN, IDTPFRETFORN
                             FROM FORNECEDOR
                            WHERE INSTR(NVL(P_CDFORNECED, FORNECEDOR.CDFORNECED), FORNECEDOR.CDFORNECED) <> 0 ) FORNECEDOR,
                         ( SELECT CDMARCA, NMMARCA, IDMARCAATIVA
                             FROM MARCA
                            WHERE INSTR(NVL(P_CDMARCA, CDMARCA), CDMARCA) <> 0) MARCA,
                         ( SELECT PARAMPRODSUP.CDREGIAO, PARAMPRODSUP.CDPRODUTO
                             FROM PARAMPRODSUP, FILIAL, PRODCOMPRA
                            WHERE PRODCOMPRA.CDFILSOLI = FILIAL.CDFILIAL
                              AND FILIAL.IDFUNCAOFILI = 'C'
                              AND FILIAL.CDFILIAL = PARAMPRODSUP.CDFILICTRL
                              AND PARAMPRODSUP.IDFILINEGCOR = 'S'
                            UNION ALL
                           SELECT PARAMPRODSUP.CDREGIAO, PARAMPRODSUP.CDPRODUTO
                             FROM PARAMPRODSUP, FILIAL, PRODCOMPRA
                            WHERE PRODCOMPRA.CDFILSOLI = FILIAL.CDFILIAL
                              AND FILIAL.IDFUNCAOFILI = 'R'
                              AND FILIAL.CDFILIAL = PARAMPRODSUP.CDFILICTRL
                              AND PARAMPRODSUP.IDFILINEGREG = 'S') PARAMPRODSUP
                   WHERE COMPRA.NRCOMPRA = PRODCOMPRA.NRCOMPRA
                     AND PRODCOMPRA.NRCOMPRA = FORPRCOMPRA.NRCOMPRA
                     AND COMPRA.NRCOMPRA = P_NRCOMPRA
                     AND PRODUTO.CDARVPROD BETWEEN P_CDPRODINI AND P_CDPRODFIN
                     AND FILIAL.CDFILIAL = PRODCOMPRA.CDFILSOLI
                     AND PARASUPRI.CDFILIAL = NVL(FILIAL.CDFILCENTCMP, FILIAL.CDFILIAL)
                     AND FILIAL.CDREGIAO = REGIAO.CDREGIAO
                     AND NVL(PARASUPRI.IDCONSPRSOL, 'N') = 'S'
                     AND COMPRA.CDCOMPRADOR  = OPERADOR.CDOPERADOR
                     AND PRODCOMPRA.CDPRODUTO = PRODACOMPRAR.CDPRODUTO(+)
                     AND PRODCOMPRA.CDPRODUTO  = PRODUTO.CDPRODUTO
                     AND FORPRCOMPRA.CDFORNECED = FORNECEDOR.CDFORNECED
                     AND PRODCOMPRA.CDPRODUTO  = MARCPRODCOMP.CDPRMARCOMPL
                     AND MARCPRODCOMP.CDMARCA = MARCA.CDMARCA
                     AND MARCA.IDMARCAATIVA       = 'A'
                     AND PARAMPRODSUP.CDPRODUTO = PRODCOMPRA.CDPRODUTO
                     AND PARAMPRODSUP.CDREGIAO  = FILIAL.CDREGIAO) A
          GROUP BY CDREGIAO, NMREGIAO, CDOPERADOR, NMOPERADOR, CDFORNECED, NRINSJURFORN,
                IDTPIJURFORN, NMRAZSOCFORN, NMFANTFORN, CDPRODUTO, NMPRODUTO, SGUNIDADE,
                CDPRODESTO, IDTPFRETFORN, CDMARCA, NMMARCA, CDMARCAPADR, CDARVPROD, QTACOMPRAR, NRCOMPRA;

   BEGIN
      FOR CONTADOR IN PED_COMPRA LOOP
         V_PIPE.EXTEND;
         V_PIPE(V_INDICE) := CONTADOR;
         PIPE ROW(V_PIPE(V_INDICE));
         V_INDICE := V_INDICE+1;
      END LOOP;
      RETURN;
   END PED_COMPRA;

   FUNCTION GETPEDCOLETA( P_IDPEDCOL         IN VARCHAR2,
                          P_NRCOTACAO        IN VARCHAR2,
                          P_COMPRADOR        IN VARCHAR2,
                          P_MARCA            IN VARCHAR2,
                          P_FORNECED         IN VARCHAR2,
                          P_REGIAO           IN VARCHAR2,
                          P_PRODINI          IN VARCHAR2,
                          P_PRODFIN          IN VARCHAR2,
                          P_CDFILIAL         IN VARCHAR2,
                          P_CDFILIPROC       IN VARCHAR2,
                          P_NRCOMPRA         IN VARCHAR2,
                          P_CDLEILAO         IN VARCHAR2,
                          P_NRSEQPRELIST     IN VARCHAR2,
                          P_CDOPERLANC       IN VARCHAR2,
                          P_DESCFORNECEDOR   IN VARCHAR2,
                          P_LISTFORNECEDOR   IN VARCHAR2,
                          P_QTMESES          IN VARCHAR2,
                          P_DTINI            IN DATE,
                          P_DTFIN            IN DATE,
                          P_DTEXPIRAPEDCOL   IN DATE,
                          P_BOPEDEMAIL       IN VARCHAR2,
                          P_IDPEDGERALREG    IN VARCHAR2,
                          P_IDPEDGERALFORN   IN VARCHAR2,
                          P_IDCURVAABCAF     IN VARCHAR2,
                          P_IDENVMERCADUM    IN VARCHAR2,
                          P_BOACRESITEM      IN VARCHAR2,
                          P_IDCONSFORNAF     IN VARCHAR2,
                          P_NRORG         VARCHAR2 DEFAULT '1') RETURN TABELA PIPELINED IS
      V_PIPE TABELA := TABELA();
      V_INDICE NUMBER := 1;

      V_PRODINI      PRODUTO.CDARVPROD%TYPE;
      V_PRODFIN      PRODUTO.CDARVPROD%TYPE;
      V_TPRODUTO     VARCHAR2(1);
      V_IDSISDOS     VARCHAR2(1);
      V_CDMARCA      VARCHAR2(1000);
      V_CDREGIAO     VARCHAR2(1000);
      V_CDFORNECED   VARCHAR2(1000);
      V_DATAINICURVA DATE;
      V_DATAFINCURVA DATE;

      CURSOR C_PEDCOLTODOS IS SELECT CDREGIAO,     NMREGIAO,     CDOPERADOR,   NMOPERADOR,  CDFORNECED,   NRINSJURFORN,
                                     IDTPIJURFORN, NMRAZSOCFORN, NMFANTFORN,   CDPRODUTO,   NMPRODUTO,    SGUNIDADE,
                                     CDPRODESTO,   IDTPFRETFORN, CDMARCA,      NMMARCA,     CDMARCAPADR,  CDARVPROD,
                                     QTACOMPRAR,   NRCOMPRA
                                FROM TABLE(PED_COL_TODOS(P_COMPRADOR, P_CDFILIAL, V_PRODINI, V_PRODFIN, V_TPRODUTO, V_CDFORNECED, V_CDREGIAO,
                                                         V_CDMARCA, P_CDFILIPROC, P_DTINI, P_DTFIN))
                               ORDER BY 3,5,1,11;

      CURSOR C_PEDCOLACOMP IS SELECT CDREGIAO,     NMREGIAO,     CDOPERADOR,   NMOPERADOR,  CDFORNECED,   NRINSJURFORN,
                                     IDTPIJURFORN, NMRAZSOCFORN, NMFANTFORN,   CDPRODUTO,   NMPRODUTO,    SGUNIDADE,
                                     CDPRODESTO,   IDTPFRETFORN, CDMARCA,      NMMARCA,     CDMARCAPADR,  CDARVPROD,
                                     QTACOMPRAR,   NRCOMPRA
                                FROM TABLE(PED_COL_ACOMP(P_COMPRADOR, P_CDFILIAL, V_PRODINI, V_PRODFIN, V_TPRODUTO, V_CDFORNECED, V_CDREGIAO,
                                                         V_CDMARCA, P_CDFILIPROC, P_DTINI, P_DTFIN))
                               ORDER BY 3,5,1,11;

      CURSOR C_PEDCOMPRA IS SELECT CDREGIAO,     NMREGIAO,     CDOPERADOR,   NMOPERADOR,  CDFORNECED,   NRINSJURFORN,
                                   IDTPIJURFORN, NMRAZSOCFORN, NMFANTFORN,   CDPRODUTO,   NMPRODUTO,    SGUNIDADE,
                                   CDPRODESTO,   IDTPFRETFORN, CDMARCA,      NMMARCA,     CDMARCAPADR,  CDARVPROD,
                                   QTACOMPRAR,   NRCOMPRA
                              FROM TABLE(PED_COMPRA(V_PRODINI, V_PRODFIN, V_TPRODUTO, V_CDFORNECED, V_CDMARCA, P_NRCOMPRA, P_DTINI, P_DTFIN))
                             ORDER BY 3,5,1,11;
      CURSOR C_GERALISPREC IS SELECT CDREGIAO,     NMREGIAO,     CDOPERADOR,   NMOPERADOR,  CDFORNECED,   NRINSJURFORN,
                                     IDTPIJURFORN, NMRAZSOCFORN, NMFANTFORN,   CDPRODUTO,   NMPRODUTO,    SGUNIDADE,
                                     CDPRODESTO,   IDTPFRETFORN, CDMARCA,      NMMARCA,     CDMARCAPADR,  CDARVPROD,
                                     QTACOMPRAR,   NRCOMPRA 
                                FROM TABLE(PED_COL_GERALISTPREC(P_COMPRADOR, P_CDFILIAL, V_PRODINI, V_PRODFIN, V_TPRODUTO, V_CDFORNECED, 
                                                                V_CDREGIAO, V_CDMARCA, P_CDFILIPROC, P_NRSEQPRELIST, P_DTINI, P_DTFIN))
                               ORDER BY 3,5,1,11;
      CURSOR C_LISTAPREC IS SELECT CDREGIAO,     NMREGIAO,     CDOPERADOR,   NMOPERADOR,  CDFORNECED,   NRINSJURFORN,
                                   IDTPIJURFORN, NMRAZSOCFORN, NMFANTFORN,   CDPRODUTO,   NMPRODUTO,    SGUNIDADE,
                                   CDPRODESTO,   IDTPFRETFORN, CDMARCA,      NMMARCA,     CDMARCAPADR,  CDARVPROD,
                                   QTACOMPRAR,   NRCOMPRA 
                              FROM TABLE(PED_COL_LISTAPREC(P_COMPRADOR, P_CDFILIAL, V_PRODINI, V_PRODFIN, V_TPRODUTO, V_CDFORNECED, 
                                                           V_CDREGIAO, V_CDMARCA, P_CDFILIPROC, P_NRSEQPRELIST, P_DTINI, P_DTFIN))
                             ORDER BY 3,5,1,11;
      CURSOR C_COTACAO IS SELECT CDREGIAO,     NMREGIAO,     CDOPERADOR,   NMOPERADOR,  CDFORNECED,   NRINSJURFORN,
                                 IDTPIJURFORN, NMRAZSOCFORN, NMFANTFORN,   CDPRODUTO,   NMPRODUTO,    SGUNIDADE,
                                 CDPRODESTO,   IDTPFRETFORN, CDMARCA,      NMMARCA,     CDMARCAPADR,  CDARVPROD,
                                 QTACOMPRAR,   NRCOMPRA 
                            FROM TABLE(PED_COL_COTACAO(P_COMPRADOR, P_CDFILIAL, V_PRODINI, V_PRODFIN, V_TPRODUTO, V_CDFORNECED, 
                                                       V_CDREGIAO, V_CDMARCA, P_CDFILIPROC, P_NRCOTACAO, P_DTINI, P_DTFIN))
                           ORDER BY 3,5,1,11;
      CURSOR C_COTACAOFORN IS SELECT CDREGIAO,     NMREGIAO,     CDOPERADOR,   NMOPERADOR,  CDFORNECED,   NRINSJURFORN,
                                     IDTPIJURFORN, NMRAZSOCFORN, NMFANTFORN,   CDPRODUTO,   NMPRODUTO,    SGUNIDADE,
                                     CDPRODESTO,   IDTPFRETFORN, CDMARCA,      NMMARCA,     CDMARCAPADR,  CDARVPROD,
                                     QTACOMPRAR,   NRCOMPRA 
                                FROM TABLE(PED_COL_COTAFORN(P_COMPRADOR, P_CDFILIAL, V_PRODINI, V_PRODFIN, V_TPRODUTO, V_CDFORNECED, 
                                                            V_CDREGIAO, V_CDMARCA, P_CDFILIPROC, P_NRCOTACAO, P_DTINI, P_DTFIN))
                               ORDER BY 3,5,1,11;
   BEGIN
      IF ((P_PRODINI IS NULL) AND (P_PRODFIN IS NULL)) THEN
         V_PRODINI   := '0';
         V_PRODFIN   := RPAD('Z', 20, 'Z');
         V_TPRODUTO  := 'T';
      ELSE
         V_PRODINI   := P_PRODINI;
         V_PRODFIN   := RPAD(P_PRODFIN, 20, 'Z');
         V_TPRODUTO  := ' ';
      END IF;

      IF P_MARCA = 'T' OR P_MARCA = ' ' THEN
         V_CDMARCA := '';
      ELSE
         V_CDMARCA := P_MARCA;
      END IF;

      IF P_FORNECED = 'T' OR P_FORNECED = ' ' THEN
         V_CDFORNECED := '';
      ELSE
         V_CDFORNECED := P_FORNECED;
      END IF;

      IF P_REGIAO = 'T' OR P_REGIAO = ' ' THEN
         V_CDREGIAO := '';
      ELSE
         V_CDREGIAO := P_REGIAO;
      END IF;

      BEGIN
         SELECT TO_DATE('01/'||TO_CHAR(ADD_MONTHS(SYSDATE, - NVL(P_QTMESES, 1)), 'MM/YYYY'), 'DD/MM/YYYY') AS DTINICIAL,
                LAST_DAY(ADD_MONTHS(SYSDATE, -1)) AS DTFINAL,
                IDSISDOS
           INTO V_DATAINICURVA, V_DATAFINCURVA, V_IDSISDOS
           FROM PARAMGERAL;
      EXCEPTION
         WHEN NO_DATA_FOUND THEN
            V_IDSISDOS     := '1';
            V_DATAINICURVA := P_DTINI;
            V_DATAFINCURVA := P_DTFIN;
      END;

      IF P_NRCOMPRA IS NOT NULL THEN
         FOR CONTADOR IN C_PEDCOMPRA LOOP
            V_PIPE.EXTEND;
            V_PIPE(V_INDICE) := CONTADOR;
            PIPE ROW(V_PIPE(V_INDICE));
            V_INDICE := V_INDICE+1;
         END LOOP;
         RETURN;
      ELSE
         IF P_NRSEQPRELIST IS NOT NULL THEN
            IF V_IDSISDOS = '3' THEN
               /*adqGeraListaPrec.SQL;*/
               FOR CONTADOR IN C_GERALISPREC LOOP
                  V_PIPE.EXTEND;
                  V_PIPE(V_INDICE) := CONTADOR;
                  PIPE ROW(V_PIPE(V_INDICE));
                  V_INDICE := V_INDICE+1;
               END LOOP;
               RETURN;
            ELSE
               /*adqListaPrec.SQL;*/ 
               FOR CONTADOR IN C_LISTAPREC LOOP
                  V_PIPE.EXTEND;
                  V_PIPE(V_INDICE) := CONTADOR;
                  PIPE ROW(V_PIPE(V_INDICE));
                  V_INDICE := V_INDICE+1;
               END LOOP;
               RETURN;
            END IF;
         ELSE
            IF P_NRCOTACAO IS NOT NULL THEN
               IF P_DESCFORNECEDOR = 'N' THEN
                  /*adqCotacao.SQL*/ 
                  FOR CONTADOR IN C_COTACAO LOOP
                     V_PIPE.EXTEND;
                     V_PIPE(V_INDICE) := CONTADOR;
                     PIPE ROW(V_PIPE(V_INDICE));
                     V_INDICE := V_INDICE+1;
                  END LOOP;
                  RETURN;
               ELSE
                  /*adqCotacaoForn.SQL*/ 
                  FOR CONTADOR IN C_COTACAOFORN LOOP
                     V_PIPE.EXTEND;
                     V_PIPE(V_INDICE) := CONTADOR;
                     PIPE ROW(V_PIPE(V_INDICE));
                     V_INDICE := V_INDICE+1;
                  END LOOP;
                  RETURN;
               END IF;
            ELSE
               IF P_IDPEDCOL = '0' THEN
                  FOR CONTADOR IN C_PEDCOLTODOS LOOP
                     V_PIPE.EXTEND;
                     V_PIPE(V_INDICE) := CONTADOR;
                     PIPE ROW(V_PIPE(V_INDICE));
                     V_INDICE := V_INDICE+1;
                  END LOOP;
                  RETURN;
               ELSE
                  FOR CONTADOR IN C_PEDCOLACOMP LOOP
                     V_PIPE.EXTEND;
                     V_PIPE(V_INDICE) := CONTADOR;
                     PIPE ROW(V_PIPE(V_INDICE));
                     V_INDICE := V_INDICE+1;
                  END LOOP;
                  RETURN;
               END IF;
            END IF;
         END IF;
      END IF;
   END GETPEDCOLETA;   
   
    FUNCTION SELECT_PEDCOLETA(P_CDFILIAL    IN FILIAL.CDFILIAL%TYPE,
                              P_NRPEDIDOCOL IN PEDCOLETA.NRPEDIDOCOL%TYPE,
                              P_CDFORNECED  IN FORNECEDOR.CDFORNECED%TYPE,
                              P_NRORG       IN PRMARCPEDCOL.NRORG%TYPE) RETURN TAB_PEDCOLETA PIPELINED
    IS
        V_IDORDPLCOT       PARASUPRI.IDORDPLCOT%TYPE;
        V_QTDIASPRAZOEXPED PRAZOFORNEXPEDFILPROD.QTDIASPRAZOEXPED%TYPE;
        V_VRMINFORNREG     PRAZOFORNEXPEDFILPROD.VRMINFORNREG%TYPE;
        V_QTMINFORNREG     PRAZOFORNEXPEDFILPROD.QTMINFORNREG%TYPE;
        
        OUT_RECORD REG_PEDCOLETA;
        
    BEGIN
        BEGIN
            SELECT NVL(IDORDPLCOT, 2)
              INTO V_IDORDPLCOT
              FROM PARASUPRI
             WHERE CDFILIAL = P_CDFILIAL;
        EXCEPTION
            WHEN NO_DATA_FOUND THEN
                V_IDORDPLCOT := 2;
        END;
        
        FOR C_ITENS IN (SELECT PRODUTO.CDARVPROD,
                               PRODUTO.NMPRODUTO,
                               PRODUTO.CDPRODUTO,
                               PRODUTO.CDPRODESTO,
                               PRODUTO.SGUNIDADE,
                               PRODUTO.DSOBSNUTR,
                               PRMARCPEDCOL.IDPRODINCLFOR,
                               PRMARCPEDCOL.CDFILIAL,
                               PRMARCPEDCOL.VRPRECREN,
                               PRMARCPEDCOL.NRPEDIDOCOL,
                               PRMARCPEDCOL.QTDISPPRODMARC,
                               PRMARCPEDCOL.VRPRECUNIPRMARC,
                               PRMARCPEDCOL.VRULTPRECPRMARC,
                               PRMARCPEDCOL.VRPRECOOBJETIVO,
                               PRMARCPEDCOL.IDITPEDPRIONEG,
                               PRMARCPEDCOL.DSOBSRENEGOCIA,
                               PRMARCPEDCOL.NRORG,
                               MARCA.CDMARCA,
                               MARCA.NMMARCA,
                               PRODFORNCOMP.VRPERVARPREPRFO, 
                               PRODFORNCOMP.VRPERVARDESCPRFO, 
                               FORNECEDOR.VRPERVARPREC,
                               FORNECEDOR.VRPERVARDESCPREC,
                               FORNECEDOR.VRMINAUTFOR,
                               FORNECEDOR.QTMINAUTFOT,
                               ITEMPEDCOL.QTPRODPEDCOL,
                               ITEMPEDCOL.IDITEMPEDCOLALT,
                               ITEMPEDCOL.VRPERDESPEDCOL,
                               PEDCOLGERAL.IDRENEGOCIAPCOL
                          FROM PRMARCPEDCOL
                          JOIN PRODUTO     ON PRMARCPEDCOL.CDPRODUTO = PRODUTO.CDPRODUTO
                                          AND PRMARCPEDCOL.NRORG = PRODUTO.NRORG
                          JOIN MARCA       ON PRMARCPEDCOL.CDMARCA = MARCA.CDMARCA
                                          AND PRMARCPEDCOL.NRORG = MARCA.NRORG
                          JOIN FORNECEDOR  ON PRMARCPEDCOL.NRORG = FORNECEDOR.NRORG
                                          AND FORNECEDOR.CDFORNECED = P_CDFORNECED
                          JOIN PEDCOLGERAL ON PRMARCPEDCOL.NRPEDIDOCOL = PEDCOLGERAL.NRPEDIDOCOL
                                          AND PRMARCPEDCOL.CDFILIAL = PEDCOLGERAL.CDFILIAL
                                          AND PRMARCPEDCOL.NRORG = PEDCOLGERAL.NRORG
                          LEFT JOIN (SELECT SUM(NVL(QTPRODPEDCOL, 0)) AS QTPRODPEDCOL,
                                            ITEMPEDCOL.VRPERDESPEDCOL,
                                            ITEMPEDCOL.CDFILIAL,
                                            ITEMPEDCOL.CDPRODUTO,
                                            ITEMPEDCOL.CDMARCA,
                                            ITEMPEDCOL.IDITEMPEDCOLALT,
                                            ITEMPEDCOL.NRORG
                                       FROM ITEMPEDCOL
                                      WHERE ITEMPEDCOL.CDFILIAL = P_CDFILIAL
                                        AND ITEMPEDCOL.CDFORNECED = P_CDFORNECED
                                        AND ITEMPEDCOL.NRORG = P_NRORG
                                        AND EXISTS (SELECT 1
                                                      FROM PEDCOLETA
                                                     WHERE PEDCOLETA.CDFILIAL = ITEMPEDCOL.CDFILIAL
                                                       AND PEDCOLETA.NRPEDCOLETA = ITEMPEDCOL.NRPEDCOLETA
                                                       AND PEDCOLETA.CDFORNECED = ITEMPEDCOL.CDFORNECED
                                                       AND PEDCOLETA.CDREGIAO = ITEMPEDCOL.CDREGIAO
                                                       AND PEDCOLETA.NRORG = ITEMPEDCOL.NRORG
                                                       AND PEDCOLETA.CDFILIAL = P_CDFILIAL
                                                       AND PEDCOLETA.NRPEDIDOCOL = P_NRPEDIDOCOL)
                                      GROUP BY ITEMPEDCOL.VRPERDESPEDCOL,
                                               ITEMPEDCOL.CDFILIAL, 
                                               ITEMPEDCOL.CDPRODUTO,
                                               ITEMPEDCOL.CDMARCA,
                                               ITEMPEDCOL.IDITEMPEDCOLALT,
                                               ITEMPEDCOL.NRORG) ITEMPEDCOL 
                            ON PRMARCPEDCOL.CDFILIAL = ITEMPEDCOL.CDFILIAL 
                           AND PRMARCPEDCOL.CDPRODUTO = ITEMPEDCOL.CDPRODUTO
                           AND PRMARCPEDCOL.CDMARCA = ITEMPEDCOL.CDMARCA 
                           AND PRMARCPEDCOL.NRORG = ITEMPEDCOL.NRORG  
                          LEFT JOIN (SELECT CDPRODCOMPL, 
                                            CDFORNECED, 
                                            VRPERVARPREPRFO, 
                                            VRPERVARDESCPRFO, 
                                            NRORG
                                       FROM PRODFORNCOMP
                                      WHERE PRODFORNCOMP.CDFORNECED = P_CDFORNECED) PRODFORNCOMP
                            ON PRMARCPEDCOL.CDPRODUTO = PRODFORNCOMP.CDPRODCOMPL
                           AND PRMARCPEDCOL.NRORG = PRODFORNCOMP.NRORG
                         WHERE PRMARCPEDCOL.CDFILIAL = P_CDFILIAL
                           AND PRMARCPEDCOL.NRPEDIDOCOL = P_NRPEDIDOCOL
                           AND PRMARCPEDCOL.NRORG = P_NRORG)
        LOOP
            OUT_RECORD.IDORDPLCOT        := V_IDORDPLCOT;
            OUT_RECORD.IDPRODINCLFOR     := C_ITENS.IDPRODINCLFOR;
			OUT_RECORD.CDFILIAL    		 := C_ITENS.CDFILIAL;			
			OUT_RECORD.VRPRECREN         := NVL(C_ITENS.VRPRECREN, 0); 
			OUT_RECORD.NRPEDIDOCOL       := C_ITENS.NRPEDIDOCOL;
			OUT_RECORD.QTDISPPRODMARC    := NVL(C_ITENS.QTDISPPRODMARC, 0);
			OUT_RECORD.VRPRECUNIPRMARC   := C_ITENS.VRPRECUNIPRMARC;
			OUT_RECORD.VRULTPRECPRMARC   := C_ITENS.VRULTPRECPRMARC;
			OUT_RECORD.VRPRECOOBJETIVO   := C_ITENS.VRPRECOOBJETIVO;
			OUT_RECORD.DSOBSRENEGOCIA    := C_ITENS.DSOBSRENEGOCIA;
			OUT_RECORD.IDITPEDPRIONEG    := C_ITENS.IDITPEDPRIONEG;
			OUT_RECORD.NRORG             := C_ITENS.NRORG;
			OUT_RECORD.CDPRODUTO         := C_ITENS.CDPRODUTO;
			OUT_RECORD.CDARVPROD         := C_ITENS.CDARVPROD;
			OUT_RECORD.CDPRODESTO        := C_ITENS.CDPRODESTO;
			OUT_RECORD.NMPRODUTO         := C_ITENS.NMPRODUTO;
			OUT_RECORD.SGUNIDADE         := C_ITENS.SGUNIDADE;
			OUT_RECORD.DSOBSNUTR         := C_ITENS.DSOBSNUTR;
			OUT_RECORD.CDMARCA           := C_ITENS.CDMARCA;
			OUT_RECORD.NMMARCA           := C_ITENS.NMMARCA;
			OUT_RECORD.VRPERVARPREPRFO   := NVL(C_ITENS.VRPERVARPREPRFO, C_ITENS.VRPERVARPREC);
			OUT_RECORD.VRPERVARDESCPRFO  := NVL(C_ITENS.VRPERVARDESCPRFO, C_ITENS.VRPERVARDESCPREC);
			OUT_RECORD.QTPRODPEDCOL      := C_ITENS.QTPRODPEDCOL;
			OUT_RECORD.IDITEMPEDCOLALT   := C_ITENS.IDITEMPEDCOLALT;
			OUT_RECORD.VRPERDESPEDCOL    := C_ITENS.VRPERDESPEDCOL;
			OUT_RECORD.IDRENEGOCIAPCOL   := C_ITENS.IDRENEGOCIAPCOL;
			
			BEGIN
			    SELECT QTDIASPRAZOEXPED, VRMINFORNREG, QTMINFORNREG
			      INTO V_QTDIASPRAZOEXPED, V_VRMINFORNREG, V_QTMINFORNREG
                  FROM PRAZOFORNEXPEDFILPROD PZ
                  JOIN PRODUTO PR ON PZ.CDPRODUTO = PR.CDPRODUTO
                  JOIN (SELECT MAX(PR.CDARVPROD) CDARVPROD
                          FROM PRAZOFORNEXPEDFILPROD PZ
                          JOIN PRODUTO PR ON PZ.CDPRODUTO = PR.CDPRODUTO
                         WHERE PZ.CDFORNECED = P_CDFORNECED
                           AND PZ.CDFILIAL = P_CDFILIAL
                           AND C_ITENS.CDARVPROD LIKE PR.CDARVPROD || '%') PP 
                    ON PR.CDARVPROD = PP.CDARVPROD
                 WHERE PZ.CDFORNECED = P_CDFORNECED
                   AND PZ.CDFILIAL = P_CDFILIAL;
                
                OUT_RECORD.QTDIASPRAZOEXPED := V_QTDIASPRAZOEXPED;
                OUT_RECORD.VRMINFORNREG     := V_VRMINFORNREG;
                OUT_RECORD.QTMINFORNREG     := V_QTMINFORNREG;
            EXCEPTION
                WHEN NO_DATA_FOUND THEN
                    OUT_RECORD.VRMINFORNREG := C_ITENS.VRMINAUTFOR;
                    OUT_RECORD.QTMINFORNREG := C_ITENS.QTMINAUTFOT;
            END;                                   
			
			PIPE ROW (OUT_RECORD);
        END LOOP;
    END SELECT_PEDCOLETA;
END PEDIDO_COLETA;
/