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,
                           P_NRORG         VARCHAR2 DEFAULT '1') 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,
                           P_NRORG         VARCHAR2 DEFAULT '1') 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,
                             P_NRORG         VARCHAR2 DEFAULT '1') 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,
                              P_NRORG         VARCHAR2 DEFAULT '1') 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,
                                  P_NRORG         VARCHAR2 DEFAULT '1') 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,
                               P_NRORG         VARCHAR2 DEFAULT '1') 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,
                        P_NRORG         VARCHAR2 DEFAULT '1') 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         VARCHAR2 DEFAULT '1') RETURN TABELA PIPELINED;


   /*FUNCTION GERAPEDCOLETA(P_IDPEDCOL         VARCHAR2,
                          P_NRCOTACAO        VARCHAR2,
                          P_COMPRADOR        VARCHAR2,
                          P_MARCA            VARCHAR2,
                          P_FORNECED         VARCHAR2,
                          P_REGIAO           VARCHAR2,
                          P_PRODINI          VARCHAR2,
                          P_PRODFIN          VARCHAR2,
                          P_CDFILIAL         VARCHAR2,
                          P_CDFILIPROC       VARCHAR2,
                          P_NRCOMPRA         VARCHAR2,
                          P_CDLEILAO         VARCHAR2,
                          P_NRSEQPRELIST     VARCHAR2,
                          P_CDOPERLANC       VARCHAR2,
                          P_DESCFORNECEDOR   VARCHAR2,
                          P_LISTFORNECEDOR   VARCHAR2,
                          P_QTMESES          VARCHAR2,
                          P_DTINI            DATE,
                          P_DTFIN            DATE,
                          P_DTEXPIRAPEDCOL   DATE,
                          P_BOPEDEMAIL       BOOLEAN,
                          P_IDPEDGERALREG    BOOLEAN,
                          P_IDPEDGERALFORN   BOOLEAN,
                          P_IDCURVAABCAF     BOOLEAN,
                          P_IDENVMERCADUM    BOOLEAN,
                          P_BOACRESITEM      BOOLEAN,
                          P_IDCONSFORNAF     BOOLEAN) RETURN VARCHAR2;*/

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,
                           P_NRORG         VARCHAR2 DEFAULT '1') 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 OPERADOR.NRORG = P_NRORG 
                              AND MARCA.NRORG = P_NRORG  
                              AND PRODUTO.NRORG = P_NRORG 
                              AND PRODFORNCOMP.NRORG = P_NRORG 
                              AND MARCPRODCOMP.NRORG = P_NRORG 
                              AND FORNECEDOR.NRORG = P_NRORG 
                              AND REGIAO.NRORG = P_NRORG 
                              AND PARASUPRI.NRORG = P_NRORG 
                              AND NOT EXISTS ( SELECT REFOREG.CDREGIAO, REFOREG.CDFORNECED
                                                 FROM REFOREG
                                                WHERE REFOREG.CDREGIAO = REGIAO.CDREGIAO
                                                  AND REFOREG.CDFORNECED = FORNECEDOR.CDFORNECED
                                                  AND REFOREG.NRORG = P_NRORG )
                              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 PRODCOMP.NRORG = P_NRORG
                                              AND PR.NRORG = P_NRORG)
                              AND NOT EXISTS ( SELECT QUALIFICACAO.CDQUALIF   /* QUALIFICACAO DO FORNECEDOR */
                                                 FROM QUALIFICACAO
                                                WHERE (FORNECEDOR.CDQUALIF       = QUALIFICACAO.CDQUALIF)
                                                  AND (FORNECEDOR.IDFORNAUTO     = 'N')
                                                  AND QUALIFICACAO.NRORG = P_NRORG
                                                  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.NRORG = P_NRORG
                                                  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.NRORG     = P_NRORG
                                              AND QFOMARPROD.CDMARCA   = NVL(MARCPRODCOMP.CDMARCA, PARASUPRI.CDMARCA)
                                            UNION
                                           SELECT PARASUPRI.CDMARCA
                                             FROM PARASUPRI
                                            WHERE PARASUPRI.CDFILIAL    = P_CDFILIAL
                                              AND PARASUPRI.NRORG       = P_NRORG
                                              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.NRORG = P_NRORG)
                                                                 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
                                              AND MARCFORNPEDCOL.NRORG      = P_NRORG
                                            UNION ALL
                                           SELECT 1
                                             FROM DUAL
                                            WHERE NOT EXISTS (SELECT 1
                                                                FROM MARCFORNPEDCOL
                                                               WHERE MARCFORNPEDCOL.CDFORNECED = FORNECEDOR.CDFORNECED
                                                                 AND MARCFORNPEDCOL.NRORG = P_NRORG))
                         ) 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)
                                                 AND ESTOQUE.NRORG  = P_NRORG
                                                 AND PRODUTO.NRORG  = P_NRORG
                                                 AND ITEMSOLI.NRORG = P_NRORG 
                                               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'
                                                AND PRODUTO.NRORG   = P_NRORG
                                                AND ITEMAUTF.NRORG  = P_NRORG
                                                AND AUTOFORNE.NRORG = P_NRORG
                                              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)
                              AND FILIAL.NRORG = P_NRORG
                         ) PRODACOMPRAR
                   WHERE PARASUPRI.CDFILIAL = P_CDFILIAL
                     AND PARASUPRI.NRORG = P_NRORG
                     AND NVL(PARASUPRI.IDCONSPRSOL, 'N') <> 'S'
                     AND COMPLETO.CDPRODUTO = PRODACOMPRAR.CDPRODUTO(+)
                     AND COMPLETO.CDREGIAO  = PRODACOMPRAR.CDREGIAO(+)
                     AND FILI.CDFILIAL = P_CDFILIPROC
                     AND FILI.NRORG  = P_NRORG
                     AND FILI.IDFUNCAOFILI IS NULL
                     AND NOT EXISTS (SELECT 1
                                       FROM REFORFIL
                                      WHERE REFORFIL.CDFORNECED = COMPLETO.CDFORNECED
                                        AND REFORFIL.CDFILIAL  = PRODACOMPRAR.CDFILIAL
                                        AND REFORFIL.CDPERIENTR IS NULL
                                        AND REFORFIL.NRORG = P_NRORG)

                  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 OPERADOR.NRORG = P_NRORG
                              AND MARCA.NRORG = P_NRORG
                              AND PRODUTO.NRORG = P_NRORG
                              AND PRODFORNCOMP.NRORG = P_NRORG
                              AND MARCPRODCOMP.NRORG = P_NRORG
                              AND FORNECEDOR.NRORG = P_NRORG
                              AND REGIAO.NRORG = P_NRORG
                              AND PARASUPRI.NRORG = P_NRORG
                              AND NOT EXISTS ( SELECT REFOREG.CDREGIAO, REFOREG.CDFORNECED
                                                 FROM REFOREG
                                                WHERE REFOREG.CDREGIAO = REGIAO.CDREGIAO
                                                  AND REFOREG.CDFORNECED = FORNECEDOR.CDFORNECED
                                                  AND REFOREG.NRORG = P_NRORG)
                              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 PRODCOMP.NRORG = P_NRORG
                                              AND PR.NRORG = P_NRORG)
                              AND NOT EXISTS ( SELECT QUALIFICACAO.CDQUALIF   /* QUALIFICACAO DO FORNECEDOR */
                                                 FROM QUALIFICACAO
                                                WHERE (FORNECEDOR.CDQUALIF       = QUALIFICACAO.CDQUALIF)
                                                  AND (FORNECEDOR.IDFORNAUTO     = 'N')
                                                  AND (QUALIFICACAO.NRORG = P_NRORG)
                                                  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.NRORG        = P_NRORG)
                                                  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.NRORG = P_NRORG
                                              AND QFOMARPROD.CDMARCA   = NVL(MARCPRODCOMP.CDMARCA, PARASUPRI.CDMARCA)
                                            UNION
                                           SELECT PARASUPRI.CDMARCA
                                             FROM PARASUPRI
                                            WHERE PARASUPRI.CDFILIAL    = P_CDFILIAL
                                              AND PARASUPRI.NRORG       = P_NRORG
                                              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.NRORG = P_NRORG)
                                                 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
                                              AND MARCFORNPEDCOL.NRORG = P_NRORG
                                            UNION ALL
                                           SELECT 1
                                             FROM DUAL
                                            WHERE NOT EXISTS ( SELECT 1
                                                                 FROM MARCFORNPEDCOL
                                                                WHERE MARCFORNPEDCOL.CDFORNECED = FORNECEDOR.CDFORNECED
                                                                  AND MARCFORNPEDCOL.NRORG      = P_NRORG))
                         ) 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)
                                                AND (PRODUTO.NRORG = P_NRORG)
                                                AND (ESTOQUE.NRORG = P_NRORG)
                                                AND (ITEMSOLI.NRORG = P_NRORG)
                                              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'
                                                AND PRODUTO.NRORG   = P_NRORG
                                                AND ITEMAUTF.NRORG  = P_NRORG
                                                AND AUTOFORNE.NRORG = P_NRORG
                                              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)
                              AND (FILIAL.NRORG = P_NRORG)
                         ) 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'
                              AND PARAMPRODSUP.NRORG = P_NRORG
                              AND FILIAL.NRORG = P_NRORG
                            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'
                              AND PARAMPRODSUP.NRORG = P_NRORG
                              AND FILIAL.NRORG = P_NRORG
                         ) PARAMPRODSUP
                   WHERE PARASUPRI.CDFILIAL = P_CDFILIAL
                     AND NVL(PARASUPRI.IDCONSPRSOL, 'N') <> 'S'
                     AND PARASUPRI.NRORG = P_NRORG
                     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
                                         AND REFORFIL.NRORG = P_NRORG)

         /*######################### 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 OPERADOR.NRORG = P_NRORG
                              AND MARCA.NRORG = P_NRORG
                              AND PRODUTO.NRORG = P_NRORG
                              AND PRODFORNCOMP.NRORG = P_NRORG
                              AND MARCPRODCOMP.NRORG = P_NRORG
                              AND FORNECEDOR.NRORG = P_NRORG
                              AND REGIAO.NRORG = P_NRORG
                              AND PARASUPRI.NRORG = P_NRORG
                              AND NOT EXISTS ( SELECT REFOREG.CDREGIAO, REFOREG.CDFORNECED
                                                 FROM REFOREG
                                                WHERE REFOREG.CDREGIAO = REGIAO.CDREGIAO
                                                  AND REFOREG.CDFORNECED = FORNECEDOR.CDFORNECED
                                                  AND REFOREG.NRORG = P_NRORG)
                              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 PRODCOMP.NRORG = P_NRORG
                                              AND PR.NRORG = P_NRORG)
                              AND NOT EXISTS ( SELECT QUALIFICACAO.CDQUALIF   /* QUALIFICACAO DO FORNECEDOR */
                                                 FROM QUALIFICACAO
                                                WHERE (FORNECEDOR.CDQUALIF       = QUALIFICACAO.CDQUALIF)
                                                  AND (QUALIFICACAO.NRORG        = P_NRORG)
                                                  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.NRORG = P_NRORG)
                                                  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)
                                              AND QFOMARPROD.NRORG     = P_NRORG
                                            UNION
                                           SELECT PARASUPRI.CDMARCA
                                             FROM PARASUPRI
                                            WHERE PARASUPRI.CDFILIAL    = P_CDFILIAL
                                              AND PARASUPRI.NRORG       = P_NRORG
                                              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.NRORG = P_NRORG)
                                                  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
                                              AND MARCFORNPEDCOL.NRORG = P_NRORG
                                            UNION ALL
                                           SELECT 1
                                             FROM DUAL
                                            WHERE NOT EXISTS ( SELECT 1
                                                                 FROM MARCFORNPEDCOL
                                                                WHERE MARCFORNPEDCOL.CDFORNECED = FORNECEDOR.CDFORNECED
                                                                  AND MARCFORNPEDCOL.NRORG      = P_NRORG))
                         ) 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)
                                                AND (PRODUTO.NRORG = P_NRORG)
                                                AND (ITEMSOLI.NRORG = P_NRORG)
                                              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'
                                                AND (PRODUTO.NRORG  = P_NRORG)
                                                AND ITEMAUTF.NRORG  = P_NRORG
                                                AND AUTOFORNE.NRORG = P_NRORG
                                              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)
                              AND FILIAL.NRORG = P_NRORG
                         ) PRODACOMPRAR
                   WHERE PARASUPRI.CDFILIAL = P_CDFILIAL
                     AND NVL(PARASUPRI.IDCONSPRSOL, 'N') = 'S'
                     AND PARASUPRI.NRORG = P_NRORG
                     AND COMPLETO.CDPRODUTO = PRODACOMPRAR.CDPRODUTO(+)
                     AND COMPLETO.CDREGIAO  = PRODACOMPRAR.CDREGIAO(+)
                     AND FILI.CDFILIAL = P_CDFILIPROC
                     AND FILI.NRORG = P_NRORG
                     AND FILI.IDFUNCAOFILI IS NULL
                     AND NOT EXISTS ( SELECT 1
                                        FROM REFORFIL
                                       WHERE REFORFIL.CDFORNECED = COMPLETO.CDFORNECED
                                         AND REFORFIL.CDFILIAL  = PRODACOMPRAR.CDFILIAL
                                         AND REFORFIL.CDPERIENTR IS NULL
                                         AND REFORFIL.NRORG = P_NRORG)

                  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 OPERADOR.NRORG = P_NRORG
                              AND MARCA.NRORG = P_NRORG
                              AND PRODUTO.NRORG = P_NRORG
                              AND PRODFORNCOMP.NRORG = P_NRORG
                              AND MARCPRODCOMP.NRORG = P_NRORG
                              AND FORNECEDOR.NRORG = P_NRORG
                              AND REGIAO.NRORG = P_NRORG
                              AND PARASUPRI.NRORG = P_NRORG
                              AND NOT EXISTS ( SELECT REFOREG.CDREGIAO, REFOREG.CDFORNECED
                                                 FROM REFOREG
                                                WHERE REFOREG.CDREGIAO = REGIAO.CDREGIAO
                                                  AND REFOREG.CDFORNECED = FORNECEDOR.CDFORNECED 
                                                  AND REFOREG.NRORG = P_NRORG)
                              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 PRODCOMP.NRORG = P_NRORG
                                              AND PR.NRORG = P_NRORG)
                              AND NOT EXISTS ( SELECT QUALIFICACAO.CDQUALIF   /* QUALIFICACAO DO FORNECEDOR */
                                                 FROM QUALIFICACAO
                                                WHERE (FORNECEDOR.CDQUALIF       = QUALIFICACAO.CDQUALIF)
                                                  AND (QUALIFICACAO.NRORG        = P_NRORG)
                                                  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.NRORG        = P_NRORG)
                                                  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)
                                              AND QFOMARPROD.NRORG = P_NRORG
                                            UNION
                                           SELECT PARASUPRI.CDMARCA
                                             FROM PARASUPRI
                                            WHERE PARASUPRI.CDFILIAL    = P_CDFILIAL
                                              AND (PARASUPRI.IDMARSEMQUA = 'N' OR PARASUPRI.IDMARSEMQUA IS NULL)
                                              AND PARASUPRI.NRORG = P_NRORG)
                              AND NOT EXISTS ( SELECT QFOPRODFORN.CDPRODUTO /* QUALIFICACAO DE PRODUTO/FORNECEDOR */
                                                 FROM QFOPRODFORN
                                                WHERE (QFOPRODFORN.CDPRODUTO = PRODFORNCOMP.CDPRODCOMPL)
                                                  AND (QFOPRODFORN.CDFORNECED= PRODFORNCOMP.CDFORNECED)
                                                  AND (QFOPRODFORN.NRORG = P_NRORG)
                                                  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
                                               AND MARCFORNPEDCOL.NRORG      = P_NRORG
                                             UNION ALL
                                            SELECT 1
                                              FROM DUAL
                                             WHERE NOT EXISTS (  SELECT 1
                                                                   FROM MARCFORNPEDCOL
                                                                  WHERE MARCFORNPEDCOL.CDFORNECED = FORNECEDOR.CDFORNECED
                                                                    AND MARCFORNPEDCOL.NRORG      = P_NRORG))
                         ) 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)
                                                AND (PRODUTO.NRORG = P_NRORG)
                                                AND (ITEMSOLI.NRORG = P_NRORG)
                                              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'
                                                AND (PRODUTO.NRORG = P_NRORG)
                                                AND ITEMAUTF.NRORG = P_NRORG
                                                AND AUTOFORNE.NRORG = P_NRORG
                                              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.NRORG = P_NRORG)
                              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'
                              AND PARAMPRODSUP.NRORG = P_NRORG
                              AND FILIAL.NRORG = P_NRORG
                            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'
                              AND PARAMPRODSUP.NRORG = P_NRORG
                              AND FILIAL.NRORG = P_NRORG
                         ) PARAMPRODSUP
                   WHERE PARASUPRI.CDFILIAL = P_CDFILIAL
                     AND NVL(PARASUPRI.IDCONSPRSOL, 'N') = 'S'
                     AND PARASUPRI.NRORG = P_NRORG
                     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
                                         AND REFORFIL.NRORG = P_NRORG)
                )
          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,
                           P_NRORG         VARCHAR2 DEFAULT '1') 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 OPERADOR.NRORG = P_NRORG
                              AND MARCA.NRORG = P_NRORG
                              AND PRODUTO.NRORG = P_NRORG
                              AND PRODFORNCOMP.NRORG = P_NRORG
                              AND MARCPRODCOMP.NRORG = P_NRORG
                              AND FORNECEDOR.NRORG = P_NRORG
                              AND REGIAO.NRORG = P_NRORG
                              AND PARASUPRI.NRORG = P_NRORG
                              AND NOT EXISTS ( SELECT REFOREG.CDREGIAO, REFOREG.CDFORNECED
                                                 FROM REFOREG
                                                WHERE REFOREG.CDREGIAO = REGIAO.CDREGIAO
                                                  AND REFOREG.CDFORNECED = FORNECEDOR.CDFORNECED
                                                  AND REFOREG.NRORG = P_NRORG)
                              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 PRODCOMP.NRORG = P_NRORG
                                              AND PR.NRORG = P_NRORG)
                              AND NOT EXISTS ( SELECT QUALIFICACAO.CDQUALIF   /* QUALIFICACAO DO FORNECEDOR */
                                                 FROM QUALIFICACAO
                                                WHERE (FORNECEDOR.CDQUALIF       = QUALIFICACAO.CDQUALIF)
                                                  AND (QUALIFICACAO.NRORG = P_NRORG)
                                                  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.NRORG        = P_NRORG)
                                                  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)
                                              AND QFOMARPROD.NRORG = P_NRORG
                                            UNION
                                           SELECT PARASUPRI.CDMARCA
                                             FROM PARASUPRI
                                            WHERE PARASUPRI.CDFILIAL    = P_CDFILIAL
                                              AND PARASUPRI.NRORG = P_NRORG
                                              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.NRORG     = P_NRORG)
                                                                 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
                                              AND MARCFORNPEDCOL.NRORG = P_NRORG
                                            UNION ALL
                                           SELECT 1
                                             FROM DUAL
                                            WHERE NOT EXISTS (SELECT 1
                                                                FROM MARCFORNPEDCOL
                                                               WHERE MARCFORNPEDCOL.CDFORNECED = FORNECEDOR.CDFORNECED
                                                                 AND MARCFORNPEDCOL.NRORG      = P_NRORG))
                         ) 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)
                                                 AND ESTOQUE.NRORG  = P_NRORG
                                                 AND PRODUTO.NRORG  = P_NRORG
                                                 AND ITEMSOLI.NRORG = P_NRORG
                                               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'
                                                AND PRODUTO.NRORG   = P_NRORG
                                                AND ITEMAUTF.NRORG  = P_NRORG
                                                AND AUTOFORNE.NRORG = P_NRORG
                                              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.NRORG = P_NRORG
                              AND (FILIAL.CDFILIAL = PRODACOMPRAR.CDFILIAL)
                         ) PRODACOMPRAR
                   WHERE PARASUPRI.CDFILIAL = P_CDFILIAL
                     AND PARASUPRI.NRORG = P_NRORG
                     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
                     AND FILI.NRORG = P_NRORG
                     AND NOT EXISTS (SELECT 1
                                       FROM REFORFIL
                                      WHERE REFORFIL.CDFORNECED = COMPLETO.CDFORNECED
                                        AND REFORFIL.CDFILIAL   = PRODACOMPRAR.CDFILIAL
                                        AND REFORFIL.CDPERIENTR IS NULL
                                        AND REFORFIL.NRORG = P_NRORG)

                  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 OPERADOR.NRORG = P_NRORG
                              AND MARCA.NRORG = P_NRORG
                              AND PRODUTO.NRORG = P_NRORG
                              AND PRODFORNCOMP.NRORG = P_NRORG
                              AND MARCPRODCOMP.NRORG = P_NRORG
                              AND FORNECEDOR.NRORG = P_NRORG
                              AND REGIAO.NRORG = P_NRORG
                              AND PARASUPRI.NRORG = P_NRORG
                              AND NOT EXISTS ( SELECT REFOREG.CDREGIAO, REFOREG.CDFORNECED
                                                 FROM REFOREG
                                                WHERE REFOREG.CDREGIAO = REGIAO.CDREGIAO
                                                  AND REFOREG.CDFORNECED = FORNECEDOR.CDFORNECED
                                                  AND REFOREG.NRORG = P_NRORG)
                              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 PRODCOMP.NRORG = P_NRORG
                                              AND PR.NRORG = P_NRORG)
                              AND NOT EXISTS ( SELECT QUALIFICACAO.CDQUALIF   /* QUALIFICACAO DO FORNECEDOR */
                                                 FROM QUALIFICACAO
                                                WHERE (FORNECEDOR.CDQUALIF       = QUALIFICACAO.CDQUALIF)
                                                  AND (FORNECEDOR.IDFORNAUTO     = 'N')
                                                  AND (QUALIFICACAO.NRORG = P_NRORG)
                                                  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.NRORG        = P_NRORG)
                                                  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)
                                              AND QFOMARPROD.NRORG     = P_NRORG
                                            UNION
                                           SELECT PARASUPRI.CDMARCA
                                             FROM PARASUPRI
                                            WHERE PARASUPRI.CDFILIAL    = P_CDFILIAL
                                              AND PARASUPRI.NRORG       = P_NRORG
                                              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.NRORG = P_NRORG)
                                                 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
                                              AND MARCFORNPEDCOL.NRORG      = P_NRORG
                                            UNION ALL
                                           SELECT 1
                                             FROM DUAL
                                            WHERE NOT EXISTS ( SELECT 1
                                                                 FROM MARCFORNPEDCOL
                                                                WHERE MARCFORNPEDCOL.CDFORNECED = FORNECEDOR.CDFORNECED
                                                                  AND MARCFORNPEDCOL.NRORG = P_NRORG))
                         ) 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)
                                                AND (ESTOQUE.NRORG = P_NRORG)
                                                AND PRODUTO.NRORG = P_NRORG
                                                AND ITEMSOLI.NRORG = P_NRORG
                                              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'
                                                AND PRODUTO.NRORG = P_NRORG
                                                AND ITEMAUTF.NRORG = P_NRORG
                                                AND AUTOFORNE.NRORG = P_NRORG
                                              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)
                              AND (FILIAL.NRORG = P_NRORG)
                         ) 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'
                              AND PARAMPRODSUP.NRORG = P_NRORG
                              AND FILIAL.NRORG = P_NRORG
                            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'
                              AND PARAMPRODSUP.NRORG = P_NRORG
                              AND FILIAL.NRORG = P_NRORG
                         ) PARAMPRODSUP
                   WHERE PARASUPRI.CDFILIAL = P_CDFILIAL
                     AND PARASUPRI.NRORG = P_NRORG
                     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
                                         AND REFORFIL.NRORG = P_NRORG)

                  /*######################### 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 OPERADOR.NRORG = P_NRORG
                              AND MARCA.NRORG = P_NRORG
                              AND PRODUTO.NRORG = P_NRORG
                              AND PRODFORNCOMP.NRORG = P_NRORG
                              AND MARCPRODCOMP.NRORG = P_NRORG
                              AND FORNECEDOR.NRORG = P_NRORG
                              AND REGIAO.NRORG = P_NRORG
                              AND PARASUPRI.NRORG = P_NRORG
                              AND NOT EXISTS ( SELECT REFOREG.CDREGIAO, REFOREG.CDFORNECED
                                                 FROM REFOREG
                                                WHERE REFOREG.CDREGIAO = REGIAO.CDREGIAO
                                                  AND REFOREG.CDFORNECED = FORNECEDOR.CDFORNECED
                                                  AND REFOREG.NRORG = P_NRORG )
                              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 PRODCOMP.NRORG = P_NRORG
                                              AND PR.NRORG = P_NRORG)
                              AND NOT EXISTS ( SELECT QUALIFICACAO.CDQUALIF   /* QUALIFICACAO DO FORNECEDOR */
                                                 FROM QUALIFICACAO
                                                WHERE (FORNECEDOR.CDQUALIF       = QUALIFICACAO.CDQUALIF)
                                                  AND (FORNECEDOR.IDFORNAUTO     = 'N')
                                                  AND (QUALIFICACAO.NRORG = P_NRORG)
                                                  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.NRORG        = P_NRORG)
                                                  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)
                                              AND QFOMARPROD.NRORG     = P_NRORG
                                            UNION
                                           SELECT PARASUPRI.CDMARCA
                                             FROM PARASUPRI
                                            WHERE PARASUPRI.CDFILIAL    = P_CDFILIAL
                                              AND PARASUPRI.NRORG = P_NRORG
                                              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.NRORG      = P_NRORG)
                                                  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
                                              AND MARCFORNPEDCOL.NRORG = P_NRORG
                                            UNION ALL
                                           SELECT 1
                                             FROM DUAL
                                            WHERE NOT EXISTS ( SELECT 1
                                                                 FROM MARCFORNPEDCOL
                                                                WHERE MARCFORNPEDCOL.CDFORNECED = FORNECEDOR.CDFORNECED
                                                                  AND MARCFORNPEDCOL.NRORG = P_NRORG))
                         ) 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)
                                                AND PRODUTO.NRORG = P_NRORG
                                                AND ITEMSOLI.NRORG = P_NRORG
                                              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'
                                                AND PRODUTO.NRORG = P_NRORG
                                                AND ITEMAUTF.NRORG = P_NRORG
                                                AND AUTOFORNE.NRORG = P_NRORG
                                              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)
                              AND FILIAL.NRORG = P_NRORG
                         ) PRODACOMPRAR
                   WHERE PARASUPRI.CDFILIAL = P_CDFILIAL
                     AND PARASUPRI.NRORG = P_NRORG
                     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
                     AND FILI.NRORG = P_NRORG
                     AND NOT EXISTS ( SELECT 1
                                        FROM REFORFIL
                                       WHERE REFORFIL.CDFORNECED = COMPLETO.CDFORNECED
                                         AND REFORFIL.CDFILIAL  = PRODACOMPRAR.CDFILIAL
                                         AND REFORFIL.CDPERIENTR IS NULL
                                         AND REFORFIL.NRORG = P_NRORG)

                  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 OPERADOR.NRORG = P_NRORG
                              AND MARCA.NRORG = P_NRORG
                              AND PRODUTO.NRORG = P_NRORG
                              AND PRODFORNCOMP.NRORG = P_NRORG
                              AND MARCPRODCOMP.NRORG = P_NRORG
                              AND FORNECEDOR.NRORG = P_NRORG
                              AND REGIAO.NRORG = P_NRORG
                              AND PARASUPRI.NRORG = P_NRORG
                              AND NOT EXISTS ( SELECT REFOREG.CDREGIAO, REFOREG.CDFORNECED
                                                 FROM REFOREG
                                                WHERE REFOREG.CDREGIAO = REGIAO.CDREGIAO
                                                  AND REFOREG.CDFORNECED = FORNECEDOR.CDFORNECED
                                                  AND REFOREG.NRORG = P_NRORG )
                              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 PRODCOMP.NRORG = P_NRORG
                                              AND PR.NRORG = P_NRORG)
                              AND NOT EXISTS ( SELECT QUALIFICACAO.CDQUALIF   /* QUALIFICACAO DO FORNECEDOR */
                                                 FROM QUALIFICACAO
                                                WHERE (FORNECEDOR.CDQUALIF       = QUALIFICACAO.CDQUALIF)
                                                  AND (FORNECEDOR.IDFORNAUTO     = 'N')
                                                  AND (QUALIFICACAO.NRORG = P_NRORG)
                                                  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.NRORG = P_NRORG)
                                                  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)
                                              AND QFOMARPROD.NRORG = P_NRORG
                                            UNION
                                           SELECT PARASUPRI.CDMARCA
                                             FROM PARASUPRI
                                            WHERE PARASUPRI.CDFILIAL    = P_CDFILIAL
                                              AND PARASUPRI.NRORG = P_NRORG
                                              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.NRORG = P_NRORG)
                                                  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
                                               AND MARCFORNPEDCOL.NRORG = P_NRORG
                                             UNION ALL
                                            SELECT 1
                                              FROM DUAL
                                             WHERE NOT EXISTS (  SELECT 1
                                                                   FROM MARCFORNPEDCOL
                                                                  WHERE MARCFORNPEDCOL.CDFORNECED = FORNECEDOR.CDFORNECED
                                                                    AND MARCFORNPEDCOL.NRORG = P_NRORG))
                         ) 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)
                                                AND (PRODUTO.NRORG = P_NRORG)
                                                AND (ITEMSOLI.NRORG = P_NRORG)
                                              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'
                                                AND PRODUTO.NRORG   = P_NRORG
                                                AND ITEMAUTF.NRORG  = P_NRORG
                                                AND AUTOFORNE.NRORG = P_NRORG
                                              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)
                              AND FILIAL.NRORG = P_NRORG
                         ) 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'
                              AND PARAMPRODSUP.NRORG = P_NRORG
                              AND FILIAL.NRORG = P_NRORG
                            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'
                              AND PARAMPRODSUP.NRORG = P_NRORG
                              AND FILIAL.NRORG = P_NRORG
                         ) PARAMPRODSUP
                   WHERE PARASUPRI.CDFILIAL = P_CDFILIAL
                     AND NVL(PARASUPRI.IDCONSPRSOL, 'N') = 'S'
                     AND PARASUPRI.NRORG = P_NRORG
                     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
                                         AND REFORFIL.NRORG = P_NRORG)
                )
          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,
                             P_NRORG         VARCHAR2 DEFAULT '1') 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 
                              AND REGIAO.NRORG = P_NRORG) REGIAO,
                         ( SELECT CDOPERADOR, NMOPERADOR
                             FROM OPERADOR
                            WHERE INSTR(NVL(P_CDCOMPRADOR, OPERADOR.CDOPERADOR), OPERADOR.CDOPERADOR) <> 0 
                              AND OPERADOR.NRORG = P_NRORG) OPERADOR,
                         ( SELECT CDFORNECED, IDTPIJURFORN, NRINSJURFORN, NMRAZSOCFORN, NMFANTFORN, IDTPFRETFORN,
                                  DTVALQUALIF, IDFORNAUTO, CDQUALIF
                             FROM FORNECEDOR
                            WHERE INSTR(NVL(P_CDFORNECED, FORNECEDOR.CDFORNECED), FORNECEDOR.CDFORNECED) <> 0 
                              AND FORNECEDOR.NRORG = P_NRORG) FORNECEDOR,
                         ( SELECT CDMARCA, NMMARCA, IDMARCAATIVA
                             FROM MARCA
                            WHERE INSTR(NVL(P_CDMARCA, CDMARCA), CDMARCA) <> 0
                              AND MARCA.NRORG = P_NRORG) 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
                     AND PARASUPRI.NRORG = P_NRORG
                     AND COLETAPR.NRORG = P_NRORG
                     AND ITEMCOLE.NRORG = P_NRORG
                     AND PRODUTO.NRORG = P_NRORG
                     AND FILI.NRORG = P_NRORG
                     AND EXISTS (   SELECT 1
                                      FROM MARCFORNPEDCOL
                                     WHERE MARCFORNPEDCOL.CDFORNECED = FORNECEDOR.CDFORNECED
                                       AND MARCFORNPEDCOL.CDMARCA    = MARCA.CDMARCA
                                       AND MARCFORNPEDCOL.NRORG = P_NRORG
                                     UNION ALL
                                    SELECT 1
                                      FROM DUAL
                                     WHERE NOT EXISTS (SELECT 1
                                                         FROM MARCFORNPEDCOL
                                                        WHERE MARCFORNPEDCOL.CDFORNECED = FORNECEDOR.CDFORNECED
                                                          AND MARCFORNPEDCOL.NRORG = P_NRORG))


                  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 
                              AND REGIAO.NRORG = P_NRORG) REGIAO,
                         ( SELECT CDOPERADOR, NMOPERADOR
                             FROM OPERADOR
                            WHERE INSTR(NVL(P_CDCOMPRADOR, OPERADOR.CDOPERADOR), OPERADOR.CDOPERADOR) <> 0 
                              AND OPERADOR.NRORG = P_NRORG) OPERADOR,
                         ( SELECT CDFORNECED, IDTPIJURFORN, NRINSJURFORN, NMRAZSOCFORN, NMFANTFORN, IDTPFRETFORN,
                                  DTVALQUALIF, IDFORNAUTO, CDQUALIF
                             FROM FORNECEDOR
                            WHERE INSTR(NVL(P_CDFORNECED, FORNECEDOR.CDFORNECED), FORNECEDOR.CDFORNECED) <> 0 
                              AND FORNECEDOR.NRORG = P_NRORG) FORNECEDOR,
                         ( SELECT CDMARCA, NMMARCA, IDMARCAATIVA
                             FROM MARCA
                            WHERE INSTR(NVL(P_CDMARCA, CDMARCA), CDMARCA) <> 0
                              AND MARCA.NRORG = P_NRORG) 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'
                              AND PARAMPRODSUP.NRORG = P_NRORG
                            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'
                              AND PARAMPRODSUP.NRORG = P_NRORG ) 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 PARASUPRI.NRORG = P_NRORG
                     AND COLETAPR.NRORG = P_NRORG
                     AND ITEMCOLE.NRORG = P_NRORG
                     AND PRODUTO.NRORG = P_NRORG
                     AND EXISTS ( SELECT 1
                                    FROM MARCFORNPEDCOL
                                   WHERE MARCFORNPEDCOL.CDFORNECED = FORNECEDOR.CDFORNECED
                                     AND MARCFORNPEDCOL.CDMARCA    = MARCA.CDMARCA
                                     AND MARCFORNPEDCOL.NRORG      = P_NRORG
                                   UNION ALL
                                  SELECT 1
                                    FROM DUAL
                                   WHERE NOT EXISTS (SELECT 1
                                                       FROM MARCFORNPEDCOL
                                                      WHERE MARCFORNPEDCOL.CDFORNECED = FORNECEDOR.CDFORNECED  
                                                        AND MARCFORNPEDCOL.NRORG = P_NRORG))

                  /*################################## 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 
                              AND REGIAO.NRORG = P_NRORG) REGIAO,
                         ( SELECT CDOPERADOR, NMOPERADOR
                             FROM OPERADOR
                            WHERE INSTR(NVL(P_CDCOMPRADOR, OPERADOR.CDOPERADOR), OPERADOR.CDOPERADOR) <> 0 
                              AND OPERADOR.NRORG = P_NRORG)  OPERADOR,
                         ( SELECT CDFORNECED, IDTPIJURFORN, NRINSJURFORN, NMRAZSOCFORN, NMFANTFORN, IDTPFRETFORN, DTVALQUALIF,
                                  IDFORNAUTO, CDQUALIF
                             FROM FORNECEDOR
                            WHERE INSTR(NVL(P_CDFORNECED, FORNECEDOR.CDFORNECED), FORNECEDOR.CDFORNECED) <> 0 
                              AND FORNECEDOR.NRORG = P_NRORG) FORNECEDOR,
                         ( SELECT CDMARCA, NMMARCA, IDMARCAATIVA
                             FROM MARCA
                            WHERE INSTR(NVL(P_CDMARCA, CDMARCA), CDMARCA) <> 0
                              AND MARCA.NRORG = P_NRORG) 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
                     AND PARASUPRI.NRORG = P_NRORG
                     AND COLETAPR.NRORG = P_NRORG
                     AND ITEMCOLE.NRORG = P_NRORG
                     AND PRODUTO.NRORG = P_NRORG
                     AND FILI.NRORG = P_NRORG
                     AND EXISTS ( SELECT 1
                                    FROM MARCFORNPEDCOL
                                   WHERE MARCFORNPEDCOL.CDFORNECED = FORNECEDOR.CDFORNECED
                                     AND MARCFORNPEDCOL.CDMARCA    = MARCA.CDMARCA
                                     AND MARCFORNPEDCOL.NRORG      = P_NRORG
                                   UNION ALL
                                  SELECT 1
                                    FROM DUAL
                                   WHERE NOT EXISTS ( SELECT 1
                                                        FROM MARCFORNPEDCOL
                                                       WHERE MARCFORNPEDCOL.CDFORNECED = FORNECEDOR.CDFORNECED
                                                         AND MARCFORNPEDCOL.NRORG = P_NRORG))

                  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 
                              AND REGIAO.NRORG = P_NRORG) REGIAO,
                         ( SELECT CDOPERADOR, NMOPERADOR
                             FROM OPERADOR
                            WHERE INSTR(NVL(P_CDCOMPRADOR, OPERADOR.CDOPERADOR), OPERADOR.CDOPERADOR) <> 0 
                              AND OPERADOR.NRORG = P_NRORG)  OPERADOR,
                         ( SELECT CDFORNECED, IDTPIJURFORN, NRINSJURFORN, NMRAZSOCFORN, NMFANTFORN, IDTPFRETFORN, DTVALQUALIF, IDFORNAUTO, CDQUALIF
                             FROM FORNECEDOR
                            WHERE INSTR(NVL(P_CDFORNECED, FORNECEDOR.CDFORNECED), FORNECEDOR.CDFORNECED) <> 0 
                              AND FORNECEDOR.NRORG = P_NRORG) FORNECEDOR,
                         ( SELECT CDMARCA, NMMARCA, IDMARCAATIVA
                             FROM MARCA
                            WHERE INSTR(NVL(P_CDMARCA, CDMARCA), CDMARCA) <> 0
                              AND MARCA.NRORG = P_NRORG) 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'
                              AND PARAMPRODSUP.NRORG = P_NRORG
                              AND FILIAL.NRORG = P_NRORG
                            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' 
                              AND PARAMPRODSUP.NRORG = P_NRORG
                              AND FILIAL.NRORG = P_NRORG) 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 PARASUPRI.NRORG = P_NRORG
                     AND COLETAPR.NRORG  = P_NRORG
                     AND ITEMCOLE.NRORG  = P_NRORG
                     AND PRODUTO.NRORG   = P_NRORG
                     AND EXISTS ( SELECT 1
                                    FROM MARCFORNPEDCOL
                                   WHERE MARCFORNPEDCOL.CDFORNECED = FORNECEDOR.CDFORNECED
                                     AND MARCFORNPEDCOL.CDMARCA    = MARCA.CDMARCA
                                     AND MARCFORNPEDCOL.NRORG = P_NRORG
                                   UNION ALL
                                  SELECT 1
                                    FROM DUAL
                                   WHERE NOT EXISTS (SELECT 1
                                                       FROM MARCFORNPEDCOL
                                                      WHERE MARCFORNPEDCOL.CDFORNECED = FORNECEDOR.CDFORNECED
                                                        AND MARCFORNPEDCOL.NRORG = P_NRORG))
                ) 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 MARCPRODCOMP.NRORG = P_NRORG
            AND PARASUPRI.NRORG = P_NRORG
            AND PRODFORNCOMP.NRORG = P_NRORG
            AND NOT EXISTS ( SELECT REFOREG.CDREGIAO, REFOREG.CDFORNECED
                               FROM REFOREG
                              WHERE REFOREG.CDREGIAO = A.CDREGIAO
                                AND REFOREG.CDFORNECED = A.CDFORNECED
                                AND REFOREG.NRORG = P_NRORG )
            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 PRODCOMP.NRORG = P_NRORG
                            AND PR.NRORG = P_NRORG)
            AND NOT EXISTS ( SELECT QUALIFICACAO.CDQUALIF   /* QUALIFICACAO DO FORNECEDOR */
                               FROM QUALIFICACAO
                              WHERE (A.CDQUALIF   = QUALIFICACAO.CDQUALIF)
                                AND (A.IDFORNAUTO = 'N')
                                AND (QUALIFICACAO.NRORG = P_NRORG)
                                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.NRORG = P_NRORG) 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)
                            AND QFOMARPROD.NRORG = P_NRORG
                          UNION
                         SELECT PARASUPRI.CDMARCA
                           FROM PARASUPRI
                          WHERE PARASUPRI.CDFILIAL    = P_CDFILIAL
                            AND (PARASUPRI.IDMARSEMQUA = 'N' OR PARASUPRI.IDMARSEMQUA IS NULL)
                            AND (PARASUPRI.NRORG = P_NRORG))
            AND NOT EXISTS ( SELECT QFOPRODFORN.CDPRODUTO /* QUALIFICACAO DE PRODUTO/FORNECEDOR */
                               FROM QFOPRODFORN
                              WHERE (QFOPRODFORN.CDPRODUTO = PRODFORNCOMP.CDPRODCOMPL)
                                AND (QFOPRODFORN.CDFORNECED= PRODFORNCOMP.CDFORNECED)
                                AND (QFOPRODFORN.NRORG = P_NRORG)
                                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
                            AND MARCFORNPEDCOL.NRORG = P_NRORG
                          UNION ALL
                         SELECT 1
                           FROM DUAL
                          WHERE NOT EXISTS (SELECT 1
                                              FROM MARCFORNPEDCOL
                                             WHERE MARCFORNPEDCOL.CDFORNECED = A.CDFORNECED
                                               AND MARCFORNPEDCOL.NRORG = P_NRORG))
          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,
                              P_NRORG         VARCHAR2 DEFAULT '1') 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 
                              AND REGIAO.NRORG = P_NRORG)REGIAO,
                         ( SELECT CDOPERADOR, NMOPERADOR
                             FROM OPERADOR
                            WHERE INSTR(NVL(P_CDCOMPRADOR, OPERADOR.CDOPERADOR), OPERADOR.CDOPERADOR) <> 0 
                              AND OPERADOR.NRORG = P_NRORG)OPERADOR,
                         ( SELECT CDFORNECED, IDTPIJURFORN, NRINSJURFORN, NMRAZSOCFORN, NMFANTFORN, IDTPFRETFORN, DTVALQUALIF, IDFORNAUTO, CDQUALIF
                             FROM FORNECEDOR
                            WHERE INSTR(P_CDFORNECED, CDFORNECED) <> 0  
                              AND FORNECEDOR.NRORG = P_NRORG)FORNECEDOR,
                         ( SELECT CDMARCA, NMMARCA, IDMARCAATIVA
                             FROM MARCA
                            WHERE INSTR(NVL(P_CDMARCA, CDMARCA), CDMARCA) <> 0
                              AND MARCA.NRORG = P_NRORG) 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
                     AND PARASUPRI.NRORG = P_NRORG
                     AND COLETAPR.NRORG = P_NRORG
                     AND ITEMCOLE.NRORG = P_NRORG
                     AND PRODUTO.NRORG = P_NRORG
                     AND FILI.NRORG = P_NRORG
                     AND EXISTS (SELECT 1
                                   FROM MARCFORNPEDCOL
                                  WHERE MARCFORNPEDCOL.CDFORNECED = FORNECEDOR.CDFORNECED
                                    AND MARCFORNPEDCOL.CDMARCA    = MARCA.CDMARCA
                                    AND MARCFORNPEDCOL.NRORG = P_NRORG
                                  UNION ALL
                                 SELECT 1
                                   FROM DUAL
                                  WHERE NOT EXISTS (SELECT 1
                                                      FROM MARCFORNPEDCOL
                                                     WHERE MARCFORNPEDCOL.CDFORNECED = FORNECEDOR.CDFORNECED
                                                       AND MARCFORNPEDCOL.NRORG = P_NRORG))
                  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 
                              AND REGIAO.NRORG = P_NRORG)REGIAO,
                         ( SELECT CDOPERADOR, NMOPERADOR
                             FROM OPERADOR
                            WHERE INSTR(NVL(P_CDCOMPRADOR, OPERADOR.CDOPERADOR), OPERADOR.CDOPERADOR) <> 0 
                              AND OPERADOR.NRORG = P_NRORG)OPERADOR,
                         ( SELECT CDFORNECED, IDTPIJURFORN, NRINSJURFORN, NMRAZSOCFORN, NMFANTFORN, IDTPFRETFORN, DTVALQUALIF, IDFORNAUTO, CDQUALIF
                             FROM FORNECEDOR
                            WHERE INSTR(P_CDFORNECED, CDFORNECED) <> 0 
                              AND FORNECEDOR.NRORG = P_NRORG) FORNECEDOR,
                         ( SELECT CDMARCA, NMMARCA, IDMARCAATIVA
                             FROM MARCA
                            WHERE INSTR(NVL(P_CDMARCA, CDMARCA), CDMARCA) <> 0
                              AND MARCA.NRORG = P_NRORG) 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'
                              AND PARAMPRODSUP.NRORG = P_NRORG
                              AND FILIAL.NRORG = P_NRORG
                            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'
                              AND PARAMPRODSUP.NRORG = P_NRORG
                              AND FILIAL.NRORG = P_NRORG) 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 PARASUPRI.NRORG = P_NRORG
                     AND COLETAPR.NRORG = P_NRORG
                     AND ITEMCOLE.NRORG = P_NRORG
                     AND PRODUTO.NRORG = P_NRORG
                     AND EXISTS ( SELECT 1
                                    FROM MARCFORNPEDCOL
                                   WHERE MARCFORNPEDCOL.CDFORNECED = FORNECEDOR.CDFORNECED
                                     AND MARCFORNPEDCOL.CDMARCA    = MARCA.CDMARCA
                                     AND MARCFORNPEDCOL.NRORG = P_NRORG
                                   UNION ALL
                                  SELECT 1
                                    FROM DUAL
                                   WHERE NOT EXISTS ( SELECT 1
                                                        FROM MARCFORNPEDCOL
                                                       WHERE MARCFORNPEDCOL.CDFORNECED = FORNECEDOR.CDFORNECED
                                                         AND MARCFORNPEDCOL.NRORG = P_NRORG))

                  /*################################## 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 
                              AND REGIAO.NRORG = P_NRORG) REGIAO,
                         ( SELECT CDOPERADOR, NMOPERADOR
                             FROM OPERADOR
                            WHERE INSTR(NVL(P_CDCOMPRADOR, OPERADOR.CDOPERADOR), OPERADOR.CDOPERADOR) <> 0 
                              AND OPERADOR.NRORG = P_NRORG) OPERADOR,
                         ( SELECT CDFORNECED, IDTPIJURFORN, NRINSJURFORN, NMRAZSOCFORN, NMFANTFORN, IDTPFRETFORN, DTVALQUALIF, IDFORNAUTO, CDQUALIF
                             FROM FORNECEDOR
                            WHERE INSTR(P_CDFORNECED, CDFORNECED) <> 0 
                              AND FORNECEDOR.NRORG = P_NRORG) FORNECEDOR,
                         ( SELECT CDMARCA, NMMARCA, IDMARCAATIVA
                             FROM MARCA
                            WHERE INSTR(NVL(P_CDMARCA, CDMARCA), CDMARCA) <> 0
                              AND MARCA.NRORG = P_NRORG) 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
                     AND PARASUPRI.NRORG = P_NRORG
                     AND COLETAPR.NRORG = P_NRORG
                     AND ITEMCOLE.NRORG = P_NRORG
                     AND PRODUTO.NRORG = P_NRORG
                     AND FILI.NRORG = P_NRORG
                     AND EXISTS ( SELECT 1
                                    FROM MARCFORNPEDCOL
                                   WHERE MARCFORNPEDCOL.CDFORNECED = FORNECEDOR.CDFORNECED
                                     AND MARCFORNPEDCOL.CDMARCA    = MARCA.CDMARCA
                                     AND MARCFORNPEDCOL.NRORG = P_NRORG
                                   UNION ALL
                                  SELECT 1
                                    FROM DUAL
                                   WHERE NOT EXISTS (SELECT 1
                                                       FROM MARCFORNPEDCOL
                                                      WHERE MARCFORNPEDCOL.CDFORNECED = FORNECEDOR.CDFORNECED
                                                        AND MARCFORNPEDCOL.NRORG = P_NRORG))

                  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 
                              AND REGIAO.NRORG = P_NRORG) REGIAO,
                         ( SELECT CDOPERADOR, NMOPERADOR
                             FROM OPERADOR
                            WHERE INSTR(NVL(P_CDCOMPRADOR, OPERADOR.CDOPERADOR), OPERADOR.CDOPERADOR) <> 0 
                              AND OPERADOR.NRORG = P_NRORG) OPERADOR,
                         ( SELECT CDFORNECED, IDTPIJURFORN, NRINSJURFORN, NMRAZSOCFORN, NMFANTFORN, IDTPFRETFORN, DTVALQUALIF, IDFORNAUTO,
                                  CDQUALIF
                             FROM FORNECEDOR
                            WHERE INSTR(P_CDFORNECED, CDFORNECED) <> 0 
                              AND FORNECEDOR.NRORG = P_NRORG) FORNECEDOR,
                         ( SELECT CDMARCA, NMMARCA, IDMARCAATIVA
                             FROM MARCA
                            WHERE INSTR(NVL(P_CDMARCA, CDMARCA), CDMARCA) <> 0
                              AND MARCA.NRORG = P_NRORG) 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'
                              AND PARAMPRODSUP.NRORG = P_NRORG
                              AND FILIAL.NRORG = P_NRORG
                            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'
                              AND PARAMPRODSUP.NRORG = P_NRORG
                              AND FILIAL.NRORG = P_NRORG) 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 PARASUPRI.NRORG = P_NRORG
                     AND COLETAPR.NRORG = P_NRORG
                     AND ITEMCOLE.NRORG = P_NRORG
                     AND PRODUTO.NRORG = P_NRORG
                     AND EXISTS ( SELECT 1
                                    FROM MARCFORNPEDCOL
                                   WHERE MARCFORNPEDCOL.CDFORNECED = FORNECEDOR.CDFORNECED
                                     AND MARCFORNPEDCOL.CDMARCA    = MARCA.CDMARCA
                                     AND MARCFORNPEDCOL.NRORG      = P_NRORG
                                   UNION ALL
                                  SELECT 1
                                    FROM DUAL
                                   WHERE NOT EXISTS ( SELECT 1
                                                        FROM MARCFORNPEDCOL
                                                       WHERE MARCFORNPEDCOL.CDFORNECED = FORNECEDOR.CDFORNECED
                                                         AND MARCFORNPEDCOL.NRORG = P_NRORG))

                ) A, PARASUPRI, PRODFORNCOMP LEFT JOIN MARCPRODCOMP
                                                    ON PRODFORNCOMP.CDPRODCOMPL = MARCPRODCOMP.CDPRMARCOMPL
          WHERE PARASUPRI.CDFILIAL = P_CDFILIAL
            AND PARASUPRI.NRORG = P_NRORG
            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 PRODFORNCOMP.NRORG = P_NRORG
            AND MARCPRODCOMP.NRORG = P_NRORG
            AND NOT EXISTS ( SELECT REFOREG.CDREGIAO, REFOREG.CDFORNECED
                               FROM REFOREG
                              WHERE REFOREG.CDREGIAO = A.CDREGIAO
                                AND REFOREG.CDFORNECED = A.CDFORNECED 
                                AND REFOREG.NRORG = P_NRORG)
            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 PRODCOMP.NRORG = P_NRORG
                            AND PR.NRORG = P_NRORG)
            AND NOT EXISTS ( SELECT QUALIFICACAO.CDQUALIF   /* QUALIFICACAO DO FORNECEDOR */
                               FROM QUALIFICACAO
                              WHERE A.CDQUALIF   = QUALIFICACAO.CDQUALIF
                                AND A.IDFORNAUTO = 'N'
                                AND QUALIFICACAO.NRORG = P_NRORG
                                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.NRORG         = P_NRORG
                                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)
                           AND QFOMARPROD.NRORG = P_NRORG
                         UNION
                        SELECT PARASUPRI.CDMARCA
                          FROM PARASUPRI
                         WHERE PARASUPRI.CDFILIAL    = P_CDFILIAL
                           AND (PARASUPRI.IDMARSEMQUA = 'N' OR PARASUPRI.IDMARSEMQUA IS NULL)
                           AND PARASUPRI.NRORG = P_NRORG)
            AND NOT EXISTS ( SELECT QFOPRODFORN.CDPRODUTO /* QUALIFICACAO DE PRODUTO/FORNECEDOR */
                               FROM QFOPRODFORN
                              WHERE QFOPRODFORN.CDPRODUTO = PRODFORNCOMP.CDPRODCOMPL
                                AND QFOPRODFORN.CDFORNECED= PRODFORNCOMP.CDFORNECED
                                AND QFOPRODFORN.NRORG = P_NRORG
                                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
                            AND MARCFORNPEDCOL.NRORG = P_NRORG
                          UNION ALL
                         SELECT 1
                           FROM DUAL
                          WHERE NOT EXISTS (SELECT 1
                                              FROM MARCFORNPEDCOL
                                             WHERE MARCFORNPEDCOL.CDFORNECED = A.CDFORNECED
                                               AND MARCFORNPEDCOL.NRORG = P_NRORG))
          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,
                                  P_NRORG         VARCHAR2 DEFAULT '1') 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'
                                       AND ESTOQUE.NRORG = P_NRORG
                                       AND ITEMSOLI.NRORG = P_NRORG
                                       AND FILIAL.NRORG = P_NRORG
                                       AND PRODUTO.NRORG = P_NRORG
                                     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'
                                       AND ITEMAUTF.NRORG = P_NRORG
                                       AND AUTOFORNE.NRORG = P_NRORG
                                       AND FILIAL.NRORG = P_NRORG
                                       AND PRODUTO.NRORG = P_NRORG
                                     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 
                              AND REGIAO.NRORG = P_NRORG) REGIAO,
                         ( SELECT CDOPERADOR, NMOPERADOR
                             FROM OPERADOR
                            WHERE INSTR(NVL(P_CDCOMPRADOR, OPERADOR.CDOPERADOR), OPERADOR.CDOPERADOR) <> 0 
                              AND OPERADOR.NRORG = P_NRORG) OPERADOR,
                         ( SELECT CDFORNECED, IDTPIJURFORN, NRINSJURFORN, NMRAZSOCFORN, NMFANTFORN, IDTPFRETFORN
                             FROM FORNECEDOR
                            WHERE INSTR(NVL(P_CDFORNECED, FORNECEDOR.CDFORNECED), FORNECEDOR.CDFORNECED) <> 0 
                              AND FORNECEDOR.NRORG = P_NRORG) FORNECEDOR,
                         ( SELECT CDMARCA, NMMARCA, IDMARCAATIVA
                             FROM MARCA
                            WHERE INSTR(NVL(P_CDMARCA, CDMARCA), CDMARCA) <> 0
                              AND MARCA.NRORG = P_NRORG) MARCA
                   WHERE PARASUPRI.CDFILIAL = P_CDFILIAL
                     AND NVL(PARASUPRI.IDCONSPRSOL, 'N') <> 'S'
                     AND PARASUPRI.NRORG = P_NRORG
                     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
                     AND COLETAPR.NRORG = P_NRORG
                     AND ITEMCOLE.NRORG = P_NRORG
                     AND PRODUTO.NRORG = P_NRORG
                     AND MARCPRODCOMP.NRORG = P_NRORG
                     AND FILI.NRORG = P_NRORG

                  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'
                                       AND ESTOQUE.NRORG = P_NRORG
                                       AND ITEMSOLI.NRORG = P_NRORG
                                       AND FILIAL.NRORG = P_NRORG
                                       AND PRODUTO.NRORG = P_NRORG
                                     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'
                                       AND ITEMAUTF.NRORG = P_NRORG
                                       AND AUTOFORNE.NRORG = P_NRORG
                                       AND FILIAL.NRORG = P_NRORG
                                       AND PRODUTO.NRORG = P_NRORG
                                     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 
                              AND REGIAO.NRORG = P_NRORG) REGIAO,
                         ( SELECT CDOPERADOR, NMOPERADOR
                             FROM OPERADOR
                            WHERE INSTR(NVL(P_CDCOMPRADOR, OPERADOR.CDOPERADOR), OPERADOR.CDOPERADOR) <> 0 
                              AND OPERADOR.NRORG = P_NRORG) OPERADOR,
                         ( SELECT CDFORNECED, IDTPIJURFORN, NRINSJURFORN, NMRAZSOCFORN, NMFANTFORN, IDTPFRETFORN
                             FROM FORNECEDOR
                            WHERE INSTR(NVL(P_CDFORNECED, FORNECEDOR.CDFORNECED), FORNECEDOR.CDFORNECED) <> 0 
                              AND FORNECEDOR.NRORG = P_NRORG) FORNECEDOR,
                         ( SELECT CDMARCA, NMMARCA, IDMARCAATIVA
                             FROM MARCA
                            WHERE INSTR(NVL(P_CDMARCA, CDMARCA), CDMARCA) <> 0
                              AND MARCA.NRORG = P_NRORG) 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'
                              AND PARAMPRODSUP.NRORG = P_NRORG
                              AND FILIAL.NRORG = P_NRORG
                            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'
                              AND PARAMPRODSUP.NRORG = P_NRORG
                              AND FILIAL.NRORG = P_NRORG) 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
                     AND PARASUPRI.NRORG = P_NRORG
                     AND COLETAPR.NRORG = P_NRORG
                     AND ITEMCOLE.NRORG = P_NRORG
                     AND PRODUTO.NRORG = P_NRORG
                     AND MARCPRODCOMP.NRORG = P_NRORG

                  /*################################## 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'
                                       AND ITEMSOLI.NRORG = P_NRORG
                                       AND FILIAL.NRORG = P_NRORG
                                       AND PRODUTO.NRORG = P_NRORG
                                     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'
                                       AND ITEMAUTF.NRORG = P_NRORG
                                       AND AUTOFORNE.NRORG = P_NRORG
                                       AND FILIAL.NRORG = P_NRORG
                                       AND PRODUTO.NRORG = P_NRORG
                                     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 
                              AND REGIAO.NRORG = P_NRORG) REGIAO,
                         ( SELECT CDOPERADOR, NMOPERADOR
                             FROM OPERADOR
                            WHERE INSTR(NVL(P_CDCOMPRADOR, OPERADOR.CDOPERADOR), OPERADOR.CDOPERADOR) <> 0 
                              AND OPERADOR.NRORG = P_NRORG) OPERADOR,
                         ( SELECT CDFORNECED, IDTPIJURFORN, NRINSJURFORN, NMRAZSOCFORN, NMFANTFORN, IDTPFRETFORN
                             FROM FORNECEDOR
                            WHERE INSTR(NVL(P_CDFORNECED, FORNECEDOR.CDFORNECED), FORNECEDOR.CDFORNECED) <> 0 
                              AND FORNECEDOR.NRORG = P_NRORG) FORNECEDOR,
                         ( SELECT CDMARCA, NMMARCA, IDMARCAATIVA
                             FROM MARCA
                            WHERE INSTR(NVL(P_CDMARCA, CDMARCA), CDMARCA) <> 0
                              AND MARCA.NRORG = P_NRORG) 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
                     AND PARASUPRI.NRORG = P_NRORG
                     AND COLETAPR.NRORG = P_NRORG
                     AND ITEMCOLE.NRORG = P_NRORG
                     AND PRODUTO.NRORG = P_NRORG
                     AND MARCPRODCOMP.NRORG = P_NRORG
                     AND FILI.NRORG = P_NRORG

                  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'
                                       AND ITEMSOLI.NRORG = P_NRORG
                                       AND FILIAL.NRORG = P_NRORG
                                       AND PRODUTO.NRORG = P_NRORG                                       
                                     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'
                                       AND ITEMAUTF.NRORG = P_NRORG
                                       AND AUTOFORNE.NRORG = P_NRORG
                                       AND FILIAL.NRORG = P_NRORG
                                       AND PRODUTO.NRORG = P_NRORG
                                     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 
                              AND REGIAO.NRORG = P_NRORG) REGIAO,
                         ( SELECT CDOPERADOR, NMOPERADOR
                             FROM OPERADOR
                            WHERE INSTR(NVL(P_CDCOMPRADOR, OPERADOR.CDOPERADOR), OPERADOR.CDOPERADOR) <> 0 
                              AND OPERADOR.NRORG = P_NRORG) OPERADOR,
                         ( SELECT CDFORNECED, IDTPIJURFORN, NRINSJURFORN, NMRAZSOCFORN, NMFANTFORN, IDTPFRETFORN
                             FROM FORNECEDOR
                            WHERE INSTR(NVL(P_CDFORNECED, FORNECEDOR.CDFORNECED), FORNECEDOR.CDFORNECED) <> 0 
                              AND FORNECEDOR.NRORG = P_NRORG) FORNECEDOR,
                         ( SELECT CDMARCA, NMMARCA, IDMARCAATIVA
                             FROM MARCA
                            WHERE INSTR(NVL(P_CDMARCA, CDMARCA), CDMARCA) <> 0
                              AND MARCA.NRORG = P_NRORG) 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'
                              AND PARAMPRODSUP.NRORG = P_NRORG
                              AND FILIAL.NRORG = P_NRORG
                            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'
                              AND PARAMPRODSUP.NRORG = P_NRORG
                              AND FILIAL.NRORG = P_NRORG) 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
                     AND PARASUPRI.NRORG = P_NRORG
                     AND COLETAPR.NRORG = P_NRORG
                     AND ITEMCOLE.NRORG = P_NRORG
                     AND PRODUTO.NRORG = P_NRORG
                     AND MARCPRODCOMP.NRORG = P_NRORG) A;

   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,
                               P_NRORG         VARCHAR2 DEFAULT '1') 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 
                              AND REGIAO.NRORG = P_NRORG) REGIAO,
                         ( SELECT CDOPERADOR, NMOPERADOR
                             FROM OPERADOR
                            WHERE INSTR(NVL(P_CDCOMPRADOR, OPERADOR.CDOPERADOR), OPERADOR.CDOPERADOR) <> 0 
                              AND OPERADOR.NRORG = P_NRORG) OPERADOR,
                         ( SELECT CDFORNECED, IDTPIJURFORN, NRINSJURFORN, NMRAZSOCFORN, NMFANTFORN, IDTPFRETFORN, DTVALQUALIF, IDFORNAUTO, CDQUALIF
                             FROM FORNECEDOR
                            WHERE INSTR(NVL(P_CDFORNECED, FORNECEDOR.CDFORNECED), FORNECEDOR.CDFORNECED) <> 0 
                              AND FORNECEDOR.NRORG = P_NRORG) FORNECEDOR,
                         ( SELECT CDMARCA, NMMARCA, IDMARCAATIVA
                             FROM MARCA
                            WHERE INSTR(NVL(P_CDMARCA, CDMARCA), CDMARCA) <> 0
                              AND MARCA.NRORG = P_NRORG) 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
                     AND PARASUPRI.NRORG = P_NRORG
                     AND COLETAPR.NRORG = P_NRORG
                     AND ITEMCOLE.NRORG = P_NRORG
                     AND PRODUTO.NRORG = P_NRORG
                     AND FILI.NRORG = P_NRORG
                     AND PRODFORNCOMP.NRORG = P_NRORG
                     AND MARCPRODCOMP.NRORG = P_NRORG
                     AND NOT EXISTS ( SELECT REFOREG.CDREGIAO, REFOREG.CDFORNECED
                                        FROM REFOREG
                                       WHERE REFOREG.CDREGIAO = REGIAO.CDREGIAO
                                         AND REFOREG.CDFORNECED = FORNECEDOR.CDFORNECED
                                         AND REFOREG.NRORG = P_NRORG )
                     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 PRODCOMP.NRORG = P_NRORG
                                     AND PR.NRORG = P_NRORG)
                     AND NOT EXISTS ( SELECT QUALIFICACAO.CDQUALIF   /* QUALIFICACAO DO FORNECEDOR */
                                        FROM QUALIFICACAO
                                       WHERE (FORNECEDOR.CDQUALIF   = QUALIFICACAO.CDQUALIF)
                                         AND (FORNECEDOR.IDFORNAUTO = 'N')
                                         AND (QUALIFICACAO.NRORG = P_NRORG)
                                         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.NRORG = P_NRORG) 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)
                                     AND QFOMARPROD.NRORG = P_NRORG
                                   UNION
                                  SELECT PARASUPRI.CDMARCA
                                    FROM PARASUPRI
                                   WHERE PARASUPRI.CDFILIAL    = P_CDFILIAL
                                     AND PARASUPRI.NRORG = P_NRORG
                                     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.NRORG = P_NRORG)
                                        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
                                     AND MARCFORNPEDCOL.NRORG = P_NRORG
                                   UNION ALL
                                  SELECT 1
                                    FROM DUAL
                                   WHERE NOT EXISTS (SELECT 1
                                                       FROM MARCFORNPEDCOL
                                                      WHERE MARCFORNPEDCOL.CDFORNECED = FORNECEDOR.CDFORNECED
                                                        AND MARCFORNPEDCOL.NRORG = P_NRORG))


                  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 
                              AND REGIAO.NRORG = P_NRORG) REGIAO,
                         ( SELECT CDOPERADOR, NMOPERADOR
                             FROM OPERADOR
                            WHERE INSTR(NVL(P_CDCOMPRADOR, OPERADOR.CDOPERADOR), OPERADOR.CDOPERADOR) <> 0
                              AND OPERADOR.NRORG = P_NRORG) OPERADOR,
                         ( SELECT CDFORNECED, IDTPIJURFORN, NRINSJURFORN, NMRAZSOCFORN, NMFANTFORN, IDTPFRETFORN,
                                  DTVALQUALIF, IDFORNAUTO, CDQUALIF
                             FROM FORNECEDOR
                            WHERE INSTR(NVL(P_CDFORNECED, FORNECEDOR.CDFORNECED), FORNECEDOR.CDFORNECED) <> 0 
                              AND FORNECEDOR.NRORG = P_NRORG) FORNECEDOR,
                         ( SELECT CDMARCA, NMMARCA, IDMARCAATIVA
                             FROM MARCA
                            WHERE INSTR(NVL(P_CDMARCA, CDMARCA), CDMARCA) <> 0
                              AND MARCA.NRORG = P_NRORG) 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'
                              AND PARAMPRODSUP.NRORG = P_NRORG
                              AND FILIAL.NRORG = P_NRORG
                            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'
                              AND PARAMPRODSUP.NRORG = P_NRORG
                              AND FILIAL.NRORG = P_NRORG) 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 PARASUPRI.NRORG = P_NRORG
                     AND COLETAPR.NRORG = P_NRORG
                     AND ITEMCOLE.NRORG = P_NRORG
                     AND PRODUTO.NRORG = P_NRORG
                     AND PRODFORNCOMP.NRORG = P_NRORG
                     AND MARCPRODCOMP.NRORG = P_NRORG
                     AND NOT EXISTS ( SELECT REFOREG.CDREGIAO, REFOREG.CDFORNECED
                                        FROM REFOREG
                                       WHERE REFOREG.CDREGIAO = REGIAO.CDREGIAO
                                         AND REFOREG.CDFORNECED = FORNECEDOR.CDFORNECED
                                         AND REFOREG.NRORG = P_NRORG )
                     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 PRODCOMP.NRORG = P_NRORG
                                     AND PR.NRORG = P_NRORG)
                     AND NOT EXISTS ( SELECT QUALIFICACAO.CDQUALIF   /* QUALIFICACAO DO FORNECEDOR */
                                        FROM QUALIFICACAO
                                       WHERE (FORNECEDOR.CDQUALIF   = QUALIFICACAO.CDQUALIF)
                                         AND (FORNECEDOR.IDFORNAUTO = 'N')
                                         AND (QUALIFICACAO.NRORG = P_NRORG)
                                         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.NRORG = P_NRORG) 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)
                                     AND QFOMARPROD.NRORG = P_NRORG
                                   UNION
                                  SELECT PARASUPRI.CDMARCA
                                    FROM PARASUPRI
                                   WHERE PARASUPRI.CDFILIAL    = P_CDFILIAL
                                     AND (PARASUPRI.IDMARSEMQUA = 'N' OR PARASUPRI.IDMARSEMQUA IS NULL)
                                     AND PARASUPRI.NRORG = P_NRORG)
                     AND NOT EXISTS ( SELECT QFOPRODFORN.CDPRODUTO /* QUALIFICACAO DE PRODUTO/FORNECEDOR */
                                        FROM QFOPRODFORN
                                       WHERE QFOPRODFORN.CDPRODUTO = PRODFORNCOMP.CDPRODCOMPL
                                         AND QFOPRODFORN.CDFORNECED= PRODFORNCOMP.CDFORNECED
                                         AND QFOPRODFORN.NRORG = P_NRORG
                                         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
                                     AND MARCFORNPEDCOL.NRORG = P_NRORG
                                   UNION ALL
                                  SELECT 1
                                    FROM DUAL
                                   WHERE NOT EXISTS (SELECT 1
                                                       FROM MARCFORNPEDCOL
                                                      WHERE MARCFORNPEDCOL.CDFORNECED = FORNECEDOR.CDFORNECED
                                                        AND MARCFORNPEDCOL.NRORG = P_NRORG))

                  /*################################## 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 
                              AND REGIAO.NRORG = P_NRORG) REGIAO,
                         ( SELECT CDOPERADOR, NMOPERADOR
                             FROM OPERADOR
                            WHERE INSTR(NVL(P_CDCOMPRADOR, OPERADOR.CDOPERADOR), OPERADOR.CDOPERADOR) <> 0 
                              AND OPERADOR.NRORG = P_NRORG) OPERADOR,
                         ( SELECT CDFORNECED, IDTPIJURFORN, NRINSJURFORN, NMRAZSOCFORN, NMFANTFORN, IDTPFRETFORN, DTVALQUALIF, IDFORNAUTO, CDQUALIF
                             FROM FORNECEDOR
                            WHERE INSTR(NVL(P_CDFORNECED, FORNECEDOR.CDFORNECED), FORNECEDOR.CDFORNECED) <> 0 
                              AND FORNECEDOR.NRORG = P_NRORG) FORNECEDOR,
                         ( SELECT CDMARCA, NMMARCA, IDMARCAATIVA
                             FROM MARCA
                            WHERE INSTR(NVL(P_CDMARCA, CDMARCA), CDMARCA) <> 0
                              AND MARCA.NRORG = P_NRORG) 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
                     AND PARASUPRI.NRORG = P_NRORG
                     AND COLETAPR.NRORG = P_NRORG
                     AND ITEMCOLE.NRORG = P_NRORG
                     AND PRODUTO.NRORG = P_NRORG
                     AND FILI.NRORG = P_NRORG
                     AND PRODFORNCOMP.NRORG = P_NRORG
                     AND MARCPRODCOMP.NRORG = P_NRORG
                     AND NOT EXISTS ( SELECT REFOREG.CDREGIAO, REFOREG.CDFORNECED
                                        FROM REFOREG
                                       WHERE REFOREG.CDREGIAO = REGIAO.CDREGIAO
                                         AND REFOREG.CDFORNECED = FORNECEDOR.CDFORNECED
                                         AND REFOREG.NRORG = P_NRORG )
                     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 PRODCOMP.NRORG = P_NRORG
                                     AND PR.NRORG = P_NRORG)
                     AND NOT EXISTS ( SELECT QUALIFICACAO.CDQUALIF   /* QUALIFICACAO DO FORNECEDOR */
                                        FROM QUALIFICACAO
                                       WHERE (FORNECEDOR.CDQUALIF   = QUALIFICACAO.CDQUALIF)
                                         AND (FORNECEDOR.IDFORNAUTO = 'N')
                                         AND (QUALIFICACAO.NRORG = P_NRORG)
                                         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.NRORG = P_NRORG)  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)
                                     AND QFOMARPROD.NRORG = P_NRORG
                                   UNION
                                  SELECT PARASUPRI.CDMARCA
                                    FROM PARASUPRI
                                   WHERE PARASUPRI.CDFILIAL    = P_CDFILIAL
                                     AND (PARASUPRI.IDMARSEMQUA = 'N' OR PARASUPRI.IDMARSEMQUA IS NULL)
                                     AND PARASUPRI.NRORG = P_NRORG)
                     AND NOT EXISTS ( SELECT QFOPRODFORN.CDPRODUTO /* QUALIFICACAO DE PRODUTO/FORNECEDOR */
                                        FROM QFOPRODFORN
                                       WHERE QFOPRODFORN.CDPRODUTO = PRODFORNCOMP.CDPRODCOMPL
                                         AND QFOPRODFORN.CDFORNECED= PRODFORNCOMP.CDFORNECED
                                         AND QFOPRODFORN.NRORG = P_NRORG
                                         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
                                     AND MARCFORNPEDCOL.NRORG = P_NRORG
                                   UNION ALL
                                  SELECT 1
                                    FROM DUAL
                                   WHERE NOT EXISTS (SELECT 1
                                                       FROM MARCFORNPEDCOL
                                                      WHERE MARCFORNPEDCOL.CDFORNECED = FORNECEDOR.CDFORNECED
                                                        AND MARCFORNPEDCOL.NRORG = P_NRORG))

                  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 
                              AND REGIAO.NRORG = P_NRORG) REGIAO,
                         ( SELECT CDOPERADOR, NMOPERADOR
                             FROM OPERADOR
                            WHERE INSTR(NVL(P_CDCOMPRADOR, OPERADOR.CDOPERADOR), OPERADOR.CDOPERADOR) <> 0 
                              AND OPERADOR.NRORG = P_NRORG) OPERADOR,
                         ( SELECT CDFORNECED, IDTPIJURFORN, NRINSJURFORN, NMRAZSOCFORN, NMFANTFORN, IDTPFRETFORN, DTVALQUALIF, IDFORNAUTO, CDQUALIF
                             FROM FORNECEDOR
                            WHERE INSTR(NVL(P_CDFORNECED, FORNECEDOR.CDFORNECED), FORNECEDOR.CDFORNECED) <> 0 
                              AND FORNECEDOR.NRORG = P_NRORG) FORNECEDOR,
                         ( SELECT CDMARCA, NMMARCA, MARCA.IDMARCAATIVA
                             FROM MARCA
                            WHERE INSTR(NVL(P_CDMARCA, CDMARCA), CDMARCA) <> 0
                              AND MARCA.NRORG = P_NRORG) 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'
                              AND PARAMPRODSUP.NRORG = P_NRORG
                              AND FILIAL.NRORG = P_NRORG
                            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'
                              AND PARAMPRODSUP.NRORG = P_NRORG
                              AND FILIAL.NRORG = P_NRORG) 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 PARASUPRI.NRORG = P_NRORG
                     AND COLETAPR.NRORG = P_NRORG
                     AND ITEMCOLE.NRORG = P_NRORG
                     AND PRODUTO.NRORG = P_NRORG
                     AND PRODFORNCOMP.NRORG = P_NRORG
                     AND MARCPRODCOMP.NRORG = P_NRORG
                     AND NOT EXISTS ( SELECT REFOREG.CDREGIAO, REFOREG.CDFORNECED
                                        FROM REFOREG
                                       WHERE REFOREG.CDREGIAO = REGIAO.CDREGIAO
                                         AND REFOREG.CDFORNECED = FORNECEDOR.CDFORNECED
                                         AND REFOREG.NRORG = P_NRORG )
                     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 PRODCOMP.NRORG = P_NRORG
                                    AND PR.NRORG = P_NRORG)
                     AND NOT EXISTS (SELECT QUALIFICACAO.CDQUALIF   /* QUALIFICACAO DO FORNECEDOR */
                                       FROM QUALIFICACAO
                                      WHERE (FORNECEDOR.CDQUALIF   = QUALIFICACAO.CDQUALIF)
                                        AND (FORNECEDOR.IDFORNAUTO = 'N')
                                        AND (QUALIFICACAO.NRORG = P_NRORG)
                                        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.NRORG = P_NRORG)  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)
                                    AND QFOMARPROD.NRORG = P_NRORG
                                  UNION
                                 SELECT PARASUPRI.CDMARCA
                                   FROM PARASUPRI
                                  WHERE PARASUPRI.CDFILIAL    = P_CDFILIAL
                                    AND (PARASUPRI.IDMARSEMQUA = 'N' OR PARASUPRI.IDMARSEMQUA IS NULL)
                                    AND PARASUPRI.NRORG = P_NRORG)
                     AND NOT EXISTS (SELECT QFOPRODFORN.CDPRODUTO /* QUALIFICACAO DE PRODUTO/FORNECEDOR */
                                       FROM QFOPRODFORN
                                      WHERE QFOPRODFORN.CDPRODUTO = PRODFORNCOMP.CDPRODCOMPL
                                        AND QFOPRODFORN.CDFORNECED= PRODFORNCOMP.CDFORNECED
                                        AND QFOPRODFORN.NRORG = P_NRORG
                                        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
                                    AND MARCFORNPEDCOL.NRORG = P_NRORG
                                  UNION ALL
                                 SELECT 1
                                   FROM DUAL
                                  WHERE NOT EXISTS (SELECT 1
                                                      FROM MARCFORNPEDCOL
                                                     WHERE MARCFORNPEDCOL.CDFORNECED = FORNECEDOR.CDFORNECED
                                                       AND MARCFORNPEDCOL.NRORG = P_NRORG)))
        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,
                        P_NRORG         VARCHAR2 DEFAULT '1') 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
                                       AND FILIAL.NRORG = P_NRORG
                                       AND PRODUTO.NRORG = P_NRORG
                                       AND PRODCOMPRA.NRORG = P_NRORG
                                       AND REGIAO.NRORG = P_NRORG
                                       AND ITEMSOLI.NRORG = P_NRORG
                                     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'
                                       AND ITEMAUTF.NRORG = P_NRORG
                                       AND AUTOFORNE.NRORG = P_NRORG
                                       AND FILIAL.NRORG = P_NRORG
                                       AND PRODUTO.NRORG = P_NRORG
                                       AND PRODCOMPRA.NRORG = P_NRORG
                                       AND REGIAO.NRORG = P_NRORG
                                     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 
                              AND FORNECEDOR.NRORG = P_NRORG) FORNECEDOR,
                         ( SELECT CDMARCA, NMMARCA, IDMARCAATIVA
                             FROM MARCA
                            WHERE INSTR(NVL(P_CDMARCA, CDMARCA), CDMARCA) <> 0
                              AND MARCA.NRORG = P_NRORG) 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
                     AND FORPRCOMPRA.NRCOMPRA = COMPRA.NRCOMPRA
                     AND PARASUPRI.NRORG = P_NRORG
                     AND COMPRA.NRORG = P_NRORG
                     AND PRODCOMPRA.NRORG = P_NRORG
                     AND FORPRCOMPRA.NRORG = P_NRORG
                     AND PRODUTO.NRORG = P_NRORG
                     AND MARCPRODCOMP.NRORG = P_NRORG
                     AND FILI.NRORG = P_NRORG
                     AND REGIAO.NRORG = P_NRORG
                     AND OPERADOR.NRORG = P_NRORG

                   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
                                       AND ESTOQUE.NRORG = P_NRORG
                                       AND FILIAL.NRORG = P_NRORG
                                       AND PRODUTO.NRORG = P_NRORG
                                       AND PRODCOMPRA.NRORG = P_NRORG
                                       AND REGIAO.NRORG = P_NRORG
                                       AND ITEMSOLI.NRORG = P_NRORG
                                     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'
                                       AND ITEMAUTF.NRORG = P_NRORG
                                       AND AUTOFORNE.NRORG = P_NRORG
                                       AND FILIAL.NRORG = P_NRORG
                                       AND PRODUTO.NRORG = P_NRORG
                                       AND REGIAO.NRORG = P_NRORG
                                     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
                              AND MARCA.NRORG = P_NRORG) MARCA,
                         ( SELECT CDFORNECED, IDTPIJURFORN, NRINSJURFORN, NMRAZSOCFORN, NMFANTFORN, IDTPFRETFORN
                             FROM FORNECEDOR
                            WHERE INSTR(NVL(P_CDFORNECED, FORNECEDOR.CDFORNECED), FORNECEDOR.CDFORNECED) <> 0 
                              AND FORNECEDOR.NRORG = P_NRORG) 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'
                              AND PARAMPRODSUP.NRORG = P_NRORG
                              AND FILIAL.NRORG = P_NRORG
                              AND PRODCOMPRA.NRORG = P_NRORG
                            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'
                              AND PARAMPRODSUP.NRORG = P_NRORG
                              AND FILIAL.NRORG = P_NRORG
                              AND PRODCOMPRA.NRORG = P_NRORG) 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
                     AND PARASUPRI.NRORG = P_NRORG
                     AND COMPRA.NRORG = P_NRORG
                     AND PRODCOMPRA.NRORG = P_NRORG
                     AND FORPRCOMPRA.NRORG = P_NRORG
                     AND PRODUTO.NRORG = P_NRORG
                     AND MARCPRODCOMP.NRORG = P_NRORG
                     AND REGIAO.NRORG = P_NRORG
                     AND FILIAL.NRORG = P_NRORG
                     AND OPERADOR.NRORG = P_NRORG

                  /*################################## 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
                                       AND FILIAL.NRORG = P_NRORG
                                       AND PRODUTO.NRORG = P_NRORG
                                       AND PRODCOMPRA.NRORG = P_NRORG
                                       AND REGIAO.NRORG = P_NRORG
                                       AND ITEMSOLI.NRORG = P_NRORG
                                     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'
                                       AND ITEMAUTF.NRORG = P_NRORG
                                       AND AUTOFORNE.NRORG = P_NRORG
                                       AND FILIAL.NRORG = P_NRORG
                                       AND PRODUTO.NRORG = P_NRORG
                                       AND PRODCOMPRA.NRORG = P_NRORG
                                       AND REGIAO.NRORG = P_NRORG
                                     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 
                              AND FORNECEDOR.NRORG = P_NRORG) FORNECEDOR,
                         ( SELECT CDMARCA, NMMARCA, IDMARCAATIVA
                             FROM MARCA
                            WHERE INSTR(NVL(P_CDMARCA, CDMARCA), CDMARCA) <> 0
                              AND MARCA.NRORG = P_NRORG) 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
                     AND PARASUPRI.NRORG = P_NRORG
                     AND PRODUTO.NRORG = P_NRORG
                     AND MARCPRODCOMP.NRORG = P_NRORG
                     AND FILI.NRORG = P_NRORG
                     AND COMPRA.NRORG = P_NRORG
                     AND PRODCOMPRA.NRORG = P_NRORG
                     AND FORPRCOMPRA.NRORG = P_NRORG
                     AND REGIAO.NRORG = P_NRORG
                     AND OPERADOR.NRORG = P_NRORG

                   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
                                       AND FILIAL.NRORG = P_NRORG
                                       AND PRODUTO.NRORG = P_NRORG
                                       AND PRODCOMPRA.NRORG = P_NRORG
                                       AND REGIAO.NRORG = P_NRORG
                                       AND ITEMSOLI.NRORG = P_NRORG
                                     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'
                                       AND ITEMAUTF.NRORG = P_NRORG
                                       AND AUTOFORNE.NRORG = P_NRORG
                                       AND FILIAL.NRORG = P_NRORG
                                       AND PRODUTO.NRORG = P_NRORG
                                       AND PRODCOMPRA.NRORG = P_NRORG
                                       AND REGIAO.NRORG = P_NRORG
                                     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 
                              AND FORNECEDOR.NRORG = P_NRORG) FORNECEDOR,
                         ( SELECT CDMARCA, NMMARCA, IDMARCAATIVA
                             FROM MARCA
                            WHERE INSTR(NVL(P_CDMARCA, CDMARCA), CDMARCA) <> 0
                              AND MARCA.NRORG = P_NRORG) 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'
                              AND PARAMPRODSUP.NRORG = P_NRORG
                              AND FILIAL.NRORG = P_NRORG
                              AND PRODCOMPRA.NRORG = P_NRORG
                            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'
                              AND PARAMPRODSUP.NRORG = P_NRORG
                              AND FILIAL.NRORG = P_NRORG
                              AND PRODCOMPRA.NRORG = P_NRORG) 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
                     AND PARASUPRI.NRORG = P_NRORG
                     AND COMPRA.NRORG = P_NRORG
                     AND PRODCOMPRA.NRORG = P_NRORG
                     AND FORPRCOMPRA.NRORG = P_NRORG
                     AND PRODUTO.NRORG = P_NRORG
                     AND MARCPRODCOMP.NRORG = P_NRORG
                     AND REGIAO.NRORG = P_NRORG
                     AND OPERADOR.NRORG = P_NRORG
                     AND FILIAL.NRORG = P_NRORG) 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, P_NRORG))
                               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, P_NRORG))
                               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, P_NRORG))
                             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, P_NRORG))
                               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, P_NRORG))
                             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, P_NRORG))
                           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, P_NRORG))
                               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' THEN
         V_CDMARCA := '';
      ELSE
         V_CDMARCA := P_MARCA;
      END IF;

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

      IF P_REGIAO = 'T' 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;   
END PEDIDO_COLETA;
/