CREATE OR REPLACE PROCEDURE GERAPEDCOLETA_WEB (P_IDPEDCOL         IN VARCHAR2,
                                               P_NRCOTACAO        IN VARCHAR2,
                                               P_COMPRADOR        IN VARCHAR2,
                                               P_MARCA            IN VARCHAR2,
                                               P_FORNECED         IN VARCHAR2,
                                               P_REGIAO           IN VARCHAR2,
                                               P_PRODINI          IN VARCHAR2,
                                               P_PRODFIN          IN VARCHAR2,
                                               P_CDFILIAL         IN VARCHAR2,
                                               P_CDFILIPROC       IN VARCHAR2,
                                               P_NRCOMPRA         IN VARCHAR2,
                                               P_CDLEILAO         IN VARCHAR2,
                                               P_NRSEQPRELIST     IN VARCHAR2,
                                               P_CDOPERLANC       IN VARCHAR2,
                                               P_DESCFORNECEDOR   IN VARCHAR2,
                                               P_LISTFORNECEDOR   IN VARCHAR2,
                                               P_QTMESES          IN VARCHAR2,
                                               P_DTINI            IN DATE,
                                               P_DTFIN            IN DATE,
                                               P_DTEXPIRAPEDCOL   IN DATE,
                                               P_BOPEDEMAIL       IN VARCHAR2,
                                               P_IDPEDGERALREG    IN VARCHAR2,
                                               P_IDPEDGERALFORN   IN VARCHAR2,
                                               P_IDCURVAABCAF     IN VARCHAR2,
                                               P_IDENVMERCADUM    IN VARCHAR2,
                                               P_BOACRESITEM      IN VARCHAR2,
                                               P_IDCONSFORNAF     IN VARCHAR2,
                                               P_NRORG            IN VARCHAR2)
IS 
  TYPE CURTYPE    IS REF CURSOR;
  C_PEDCOLETA     CURTYPE;
  V_CDREGIAO      VARCHAR2(3);
  V_NMREGIAO      VARCHAR2(30);
  V_CDOPERADOR    VARCHAR2(12);
  V_NMOPERADOR    VARCHAR2(40); 
  V_CDFORNECED    VARCHAR2(21);
  V_NRINSJURFORN  VARCHAR2(20);
  V_IDTPIJURFORN  VARCHAR2(1);
  V_NMRAZSOCFORN  VARCHAR2(100);
  V_NMFANTFORN    VARCHAR2(40);
  V_CDPRODUTO     VARCHAR2(10);
  V_NMPRODUTO     VARCHAR2(50);
  V_SGUNIDADE     VARCHAR2(10);
  V_CDPRODESTO    VARCHAR2(10);
  V_IDTPFRETFORN  VARCHAR2(1);
  V_CDMARCA       VARCHAR2(5);
  V_NMMARCA       VARCHAR2(20);
  V_CDMARCAPADR   VARCHAR2(5);
  V_CDARVPROD     VARCHAR2(20);
  V_QTACOMPRAR    FLOAT;
  V_NRCOMPRA      VARCHAR2(10);
  V_COMPFORN        VARCHAR2(200) := ' ';
  V_COMPCONSREG     VARCHAR2(200) := ' ';
  V_COMPCONSFORN    VARCHAR2(200) := ' ';
  V_COMPCONSCOMP    VARCHAR2(200) := ' ';
  V_COMPCOTACAO     VARCHAR2(200) := ' ';
  V_LOOP            INTEGER := 0;
  V_DESCONTOFORN    FLOAT   := 0;
  V_PROXIMOCODIGO   VARCHAR2(100);
  V_PEDCOLGERAL     VARCHAR2(100);
  V_IDSISDOS        VARCHAR2(1);
  V_QTPRODPEDCOL    FLOAT;
  V_DTINIABCAF      DATE;
  V_DTFINABCAF      DATE;
  V_VRPRECOANT      FLOAT;
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,
          NVL(IDSISDOS, '1') IDSISDOS
     INTO V_DTINIABCAF, V_DTFINABCAF, V_IDSISDOS
     FROM PARAMGERAL
     WHERE NRORG = P_NRORG;
   FOR C_ITENSPED_TMP IN (SELECT CDREGIAO,     NMREGIAO,     CDOPERADOR,   NMOPERADOR,  CDFORNECED,   NRINSJURFORN,
                                  IDTPIJURFORN, NMRAZSOCFORN, NMFANTFORN,   CDPRODUTO,   NMPRODUTO,    SGUNIDADE,
                                  CDPRODESTO,   IDTPFRETFORN, CDMARCA,      NMMARCA,     CDMARCAPADR,  CDARVPROD,
                                  QTACOMPRAR,   NRCOMPRA
                             FROM TABLE(PEDIDO_COLETA.GETPEDCOLETA(P_IDPEDCOL, P_NRCOTACAO, P_COMPRADOR, P_MARCA, P_FORNECED, P_REGIAO, P_PRODINI, P_PRODFIN, P_CDFILIAL, P_CDFILIPROC, 
                                                                   P_NRCOMPRA, P_CDLEILAO, P_NRSEQPRELIST, P_CDOPERLANC, P_DESCFORNECEDOR, P_LISTFORNECEDOR, P_QTMESES, P_DTINI, P_DTFIN, 
                                                                   P_DTEXPIRAPEDCOL, P_BOPEDEMAIL, P_IDPEDGERALREG, P_IDPEDGERALFORN, P_IDCURVAABCAF, P_IDENVMERCADUM, P_BOACRESITEM, 
                                                                   P_IDCONSFORNAF, P_NRORG)))
   LOOP
      /*Insere os itens do pedido para a tabela temporaria que sera usada na funcao GERA_ACRES_PEDCOLETA para acrescentar os itens contidos ...*/
      INSERT INTO TMP_PEDCOLETA (CDREGIAO, NMREGIAO, CDOPERADOR, NMOPERADOR, CDFORNECED, NRINSJURFORN, IDTPIJURFORN, NMRAZSOCFORN, NMFANTFORN, 
                                 CDPRODUTO, NMPRODUTO, SGUNIDADE, CDPRODESTO, IDTPFRETFORN, CDMARCA, NMMARCA, CDMARCAPADR, CDARVPROD, QTACOMPRAR, NRCOMPRA, NRORG)
      VALUES (C_ITENSPED_TMP.CDREGIAO, C_ITENSPED_TMP.NMREGIAO, C_ITENSPED_TMP.CDOPERADOR,C_ITENSPED_TMP.NMOPERADOR,C_ITENSPED_TMP.CDFORNECED,C_ITENSPED_TMP.NRINSJURFORN,
              C_ITENSPED_TMP.IDTPIJURFORN, C_ITENSPED_TMP.NMRAZSOCFORN,C_ITENSPED_TMP.NMFANTFORN,C_ITENSPED_TMP.CDPRODUTO, C_ITENSPED_TMP.NMPRODUTO, C_ITENSPED_TMP.SGUNIDADE,
              C_ITENSPED_TMP.CDPRODESTO, C_ITENSPED_TMP.IDTPFRETFORN, C_ITENSPED_TMP.CDMARCA, C_ITENSPED_TMP.NMMARCA, C_ITENSPED_TMP.CDMARCAPADR,C_ITENSPED_TMP.CDARVPROD,
              C_ITENSPED_TMP.QTACOMPRAR, C_ITENSPED_TMP.NRCOMPRA, P_NRORG);
   END LOOP;
   IF P_BOACRESITEM = 'S' THEN
      /*Chamada da funcao GERA_ACRES_PEDCOLETA do banco de dados.*/
      OPEN C_PEDCOLETA FOR SELECT CDREGIAO, NMREGIAO, CDOPERADOR, NMOPERADOR, CDFORNECED, NRINSJURFORN, IDTPIJURFORN,
                                  NMRAZSOCFORN, NMFANTFORN, CDPRODUTO, NMPRODUTO, SGUNIDADE, CDPRODESTO, IDTPFRETFORN,
                                  CDMARCA,NMMARCA, CDMARCAPADR, CDARVPROD, QTACOMPRAR, NRCOMPRA
                             FROM TMP_PEDCOLETA
                        UNION ALL
                           SELECT CDREGIAO, NMREGIAO, CDOPERADOR, NMOPERADOR, CDFORNECED, NRINSJURFORN, IDTPIJURFORN,
                                  NMRAZSOCFORN, NMFANTFORN, CDPRODUTO, NMPRODUTO, SGUNIDADE, CDPRODESTO, IDTPFRETFORN,
                                  CDMARCA,NMMARCA, CDMARCAPADR, CDARVPROD, QTACOMPRAR, NRCOMPRA
                             FROM TABLE (GERA_ACRES_PEDCOLETA(P_PRODINI, P_PRODFIN, P_CDFILIAL, P_MARCA, P_COMPRADOR, P_REGIAO, P_FORNECED, P_NRCOMPRA,P_DTINI, P_DTFIN, '1'));
   ELSE
      OPEN C_PEDCOLETA FOR 
                       SELECT CDREGIAO,     NMREGIAO,     CDOPERADOR,   NMOPERADOR,  CDFORNECED,   NRINSJURFORN,
                              IDTPIJURFORN, NMRAZSOCFORN, NMFANTFORN,   CDPRODUTO,   NMPRODUTO,    SGUNIDADE,
                              CDPRODESTO,   IDTPFRETFORN, CDMARCA,      NMMARCA,     CDMARCAPADR,  CDARVPROD,
                              QTACOMPRAR,   NRCOMPRA
                         FROM TABLE(PEDIDO_COLETA.GETPEDCOLETA(P_IDPEDCOL, P_NRCOTACAO, P_COMPRADOR, P_MARCA, P_FORNECED, P_REGIAO, P_PRODINI, P_PRODFIN, P_CDFILIAL, P_CDFILIPROC, 
                                                               P_NRCOMPRA, P_CDLEILAO, P_NRSEQPRELIST, P_CDOPERLANC, P_DESCFORNECEDOR, P_LISTFORNECEDOR, P_QTMESES, P_DTINI, P_DTFIN, 
                                                               P_DTEXPIRAPEDCOL, P_BOPEDEMAIL, P_IDPEDGERALREG, P_IDPEDGERALFORN, P_IDCURVAABCAF, P_IDENVMERCADUM, P_BOACRESITEM, 
                                                               P_IDCONSFORNAF, P_NRORG));
   END IF;
   LOOP
      FETCH C_PEDCOLETA INTO V_CDREGIAO, V_NMREGIAO, V_CDOPERADOR, V_NMOPERADOR, V_CDFORNECED, V_NRINSJURFORN, 
                             V_IDTPIJURFORN, V_NMRAZSOCFORN, V_NMFANTFORN, V_CDPRODUTO, V_NMPRODUTO, V_SGUNIDADE, 
                             V_CDPRODESTO, V_IDTPFRETFORN, V_CDMARCA, V_NMMARCA, V_CDMARCAPADR, V_CDARVPROD, V_QTACOMPRAR, 
                             V_NRCOMPRA; 
      EXIT WHEN C_PEDCOLETA%NOTFOUND;
      IF (V_COMPFORN <> V_CDREGIAO||V_CDOPERADOR||V_CDFORNECED) THEN 
         NOVO_CODIGO_SC('PEDCOLETA'||P_CDFILIAL||V_CDFORNECED||V_CDREGIAO, V_PROXIMOCODIGO, 1);
         V_PROXIMOCODIGO := SUBSTR(V_PROXIMOCODIGO, 11, 10);
         IF ((P_IDPEDGERALREG <> 'S')       AND (V_COMPCONSREG  <> V_CDOPERADOR||V_CDREGIAO)   AND ((P_NRSEQPRELIST IS NULL) OR (V_IDSISDOS <> '3'))) OR
            ((P_IDPEDGERALFORN <> 'S')      AND (V_COMPCONSFORN <> V_CDOPERADOR||V_CDFORNECED) AND ((P_NRSEQPRELIST IS NULL) OR (V_IDSISDOS <> '3'))) OR
            (((P_NRSEQPRELIST IS NOT NULL)) AND (V_COMPCOTACAO  <> V_CDOPERADOR||V_NRCOMPRA)   AND (V_IDSISDOS = '3'))       OR 
            (V_COMPCONSCOMP <> V_CDOPERADOR) THEN
            NOVO_CODIGO_SC('PEDCOLGERAL'||P_CDFILIAL, V_PEDCOLGERAL, 1, P_NRORG);
            V_PEDCOLGERAL := SUBSTR(V_PEDCOLGERAL, 11, 10);
            INSERT INTO PEDCOLGERAL (CDFILIAL, NRPEDIDOCOL, DTPEDCOLGERAL, DTINIPERGERAL, DTFINPERGERAL, IDPEDCOLCONS, CDOPERADOR, CDOPERLANC, DTEXPIRAPEDCOL, NRORG)
                 VALUES (P_CDFILIAL, V_PEDCOLGERAL, SYSDATE, P_DTINI, P_DTFIN, 'S', V_CDOPERADOR, P_CDOPERLANC, P_DTEXPIRAPEDCOL, P_NRORG);
         END IF;
         INSERT INTO PEDCOLETA (CDFILIAL, NRPEDCOLETA, CDFORNECED, DTPEDCOLETA, CDOPERADOR, DTINIPERCOT, DTFINPERCOT, CDREGIAO, CDLEILAO, NRPEDIDOCOL, NRORG)
              VALUES (P_CDFILIAL, V_PROXIMOCODIGO, V_CDFORNECED, SYSDATE, V_CDOPERADOR, P_DTINI, P_DTFIN, V_CDREGIAO, P_CDLEILAO, V_PEDCOLGERAL, P_NRORG);
         /*acmFornePedCol*/
         INSERT INTO FORNEPEDCOL (CDFILIAL, NRPEDIDOCOL, CDFORNECED, NRORG)
         SELECT
            P_CDFILIAL,
            V_PEDCOLGERAL,
            V_CDFORNECED,
            P_NRORG
         FROM DUAL
         WHERE NOT EXISTS (SELECT V_PEDCOLGERAL
                           FROM FORNEPEDCOL F
                           WHERE F.CDFILIAL    = P_CDFILIAL
                             AND F.NRPEDIDOCOL = V_PEDCOLGERAL
                             AND F.CDFORNECED  = V_CDFORNECED
                             AND F.NRORG     = P_NRORG);
         /*acmRegiaoPedCol*/
         INSERT INTO REGIAOPEDCOL (CDFILIAL, NRPEDIDOCOL, CDREGIAO, NRORG)
         SELECT
            P_CDFILIAL,
            V_PEDCOLGERAL,
            V_CDREGIAO,
            P_NRORG
         FROM DUAL
         WHERE NOT EXISTS (SELECT V_PEDCOLGERAL
                           FROM REGIAOPEDCOL R
                           WHERE R.CDFILIAL    = P_CDFILIAL
                             AND R.NRPEDIDOCOL = V_PEDCOLGERAL
                             AND R.CDREGIAO    = V_CDREGIAO
                             AND R.NRORG       = P_NRORG);
         BEGIN
            SELECT DECODE(F.IDTPDESCFORN, 'C', NVL(F.VRPEDESCFORN, 0), 0) AS VRPEDESCFORN
              INTO V_DESCONTOFORN
              FROM FORNECEDOR F
             WHERE F.CDFORNECED = V_CDFORNECED
               AND F.NRORG      = P_NRORG;
         EXCEPTION
           WHEN NO_DATA_FOUND THEN
            V_DESCONTOFORN := 0;
         END;
      END IF;
      /*============================================= VALIDA QUANTIDADE A COMPRAR ANTES DE INSERIR OS ITENS NO PEDIDO ============================================= */
      IF V_IDSISDOS = '3' THEN
        IF P_IDCURVAABCAF = 'S' THEN
           BEGIN
               SELECT SUM(ITEMAUTF.QTPROGENTAF * PRODUTO.VRFATOCONV) QTDEACOMPRAR
                 INTO V_QTPRODPEDCOL
                 FROM ITEMAUTF, AUTOFORNE, PRODUTO, FILIAL
                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 NVL(AUTOFORNE.IDBAIXAAF,'0') <> '6'
                  AND FILIAL.CDFILIAL = AUTOFORNE.CDFILDEST
                  AND FILIAL.CDREGIAO = V_CDREGIAO
                  AND PRODUTO.CDPRODESTO = V_CDPRODESTO
                  AND ITEMAUTF.DTPROGENTAF BETWEEN V_DTINIABCAF AND V_DTFINABCAF
                  AND ITEMAUTF.NRORG  = P_NRORG
                  AND AUTOFORNE.NRORG = P_NRORG
                  AND PRODUTO.NRORG   = P_NRORG
                  AND FILIAL.NRORG    = P_NRORG;
           EXCEPTION
             WHEN NO_DATA_FOUND THEN
               V_QTPRODPEDCOL := 0;
           END;
        ELSE
           V_QTPRODPEDCOL := V_QTACOMPRAR;
        END IF;
      ELSE
         IF(P_QTMESES IS NOT NULL) THEN
            IF (P_IDCONSFORNAF = 'S') THEN
               BEGIN
                  SELECT ROUND(SUM(NVL(AF.QTDEACOMPRAR, 0)), 2) QTDEACOMPRAR
                    INTO V_QTPRODPEDCOL
                    FROM (SELECT ROUND((SUM(ITEMAUTF.QTEFETENTRAF * PRODUTO.VRFATOCONV) / P_QTMESES), 2) QTDEACOMPRAR
                            FROM ITEMAUTF INNER JOIN AUTOFORNE           ON AUTOFORNE.CDFILDEST     = ITEMAUTF.CDFILDEST
                                                                        AND AUTOFORNE.CDFILLANC     = ITEMAUTF.CDFILLANC
                                                                        AND AUTOFORNE.NRAUTOFORN    = ITEMAUTF.NRAUTOFORN
                                          INNER JOIN RELACPRODOL         ON ITEMAUTF.CDPRODUTO      = RELACPRODOL.CDPRODARVOL
                                          INNER JOIN PRODUTO             ON RELACPRODOL.CDPRARVORIG = PRODUTO.CDPRODUTO
                                                                        AND RELACPRODOL.CDMARCA     = V_CDMARCA
                                          INNER JOIN FILIAL              ON AUTOFORNE.CDFILDEST  = FILIAL.CDFILIAL
                           WHERE AUTOFORNE.IDSITUATUAAF IS NULL
                             AND NVL(AUTOFORNE.IDBAIXAAF,'0') <> '6'
                             AND ITEMAUTF.IDBAIXITMAF IN ('1', '2')
                             AND AUTOFORNE.IDAFFORALIM = 'N'
                             AND FILIAL.CDREGIAO       = V_CDREGIAO
                             AND PRODUTO.CDPRODUTO     = V_CDPRODUTO 
                             AND ITEMAUTF.DTPROGENTAF BETWEEN V_DTINIABCAF AND V_DTFINABCAF
                             AND AUTOFORNE.CDFORNECED  = NVL(V_CDFORNECED, AUTOFORNE.CDFORNECED)
                             AND ITEMAUTF.NRORG = P_NRORG
                             AND AUTOFORNE.NRORG = P_NRORG
                             AND RELACPRODOL.NRORG = P_NRORG
                             AND PRODUTO.NRORG = P_NRORG
                             AND FILIAL.NRORG = P_NRORG
                          UNION
                          SELECT ROUND((SUM((ITEMAUTF.QTEFETENTRAF * PRODESTO.VRFATOCONV)/PRODUTO.VRFATOCONV) / P_QTMESES), 2) QTDEACOMPRAR
                            FROM ITEMAUTF INNER JOIN AUTOFORNE        ON AUTOFORNE.CDFILDEST  = ITEMAUTF.CDFILDEST
                                                                     AND AUTOFORNE.CDFILLANC  = ITEMAUTF.CDFILLANC
                                                                     AND AUTOFORNE.NRAUTOFORN = ITEMAUTF.NRAUTOFORN
                                          INNER JOIN PRODUTO PRODESTO ON ITEMAUTF.CDPRODUTO   = PRODESTO.CDPRODUTO
                                          INNER JOIN PRODUTO          ON ITEMAUTF.CDPRODUTO   = PRODUTO.CDPRODUTO
                                          INNER JOIN FILIAL           ON AUTOFORNE.CDFILDEST  = FILIAL.CDFILIAL
                           WHERE AUTOFORNE.IDSITUATUAAF IS NULL
                             AND NVL(AUTOFORNE.IDBAIXAAF,'0') <> '6'
                             AND ITEMAUTF.IDBAIXITMAF IN ('1', '2')
                             AND AUTOFORNE.IDAFFORALIM = 'N'
                             AND FILIAL.CDREGIAO       = V_CDREGIAO
                             AND PRODESTO.CDPRODESTO   = V_CDPRODESTO
                             AND PRODUTO.CDPRODUTO     = V_CDPRODUTO
                             AND ITEMAUTF.DTPROGENTAF BETWEEN V_DTINIABCAF AND V_DTFINABCAF
                             AND AUTOFORNE.CDFORNECED  = NVL(V_CDFORNECED, AUTOFORNE.CDFORNECED)
                             AND ITEMAUTF.NRORG  = P_NRORG
                             AND AUTOFORNE.NRORG = P_NRORG
                             AND PRODESTO.NRORG  = P_NRORG
                             AND PRODUTO.NRORG   = P_NRORG
                             AND FILIAL.NRORG    = P_NRORG) AF;
               EXCEPTION
                 WHEN NO_DATA_FOUND THEN
                   V_QTPRODPEDCOL := 0;
               END;
            ELSE
               BEGIN
                  SELECT ROUND(SUM(NVL(AF.QTDEACOMPRAR, 0)), 2) QTDEACOMPRAR
                    INTO V_QTPRODPEDCOL
                    FROM (SELECT ROUND((SUM(ITEMAUTF.QTEFETENTRAF * PRODUTO.VRFATOCONV) / P_QTMESES), 2) QTDEACOMPRAR
                            FROM ITEMAUTF INNER JOIN AUTOFORNE           ON AUTOFORNE.CDFILDEST     = ITEMAUTF.CDFILDEST
                                                                        AND AUTOFORNE.CDFILLANC     = ITEMAUTF.CDFILLANC
                                                                        AND AUTOFORNE.NRAUTOFORN    = ITEMAUTF.NRAUTOFORN
                                          INNER JOIN RELACPRODOL         ON ITEMAUTF.CDPRODUTO      = RELACPRODOL.CDPRODARVOL
                                          INNER JOIN PRODUTO             ON RELACPRODOL.CDPRARVORIG = PRODUTO.CDPRODUTO
                                                                        AND RELACPRODOL.CDMARCA     = V_CDMARCA
                                          INNER JOIN FILIAL              ON AUTOFORNE.CDFILDEST  = FILIAL.CDFILIAL
                           WHERE AUTOFORNE.IDSITUATUAAF IS NULL
                             AND NVL(AUTOFORNE.IDBAIXAAF,'0') <> '6'
                             AND ITEMAUTF.IDBAIXITMAF IN ('1', '2')
                             AND AUTOFORNE.IDAFFORALIM = 'N'
                             AND FILIAL.CDREGIAO       = V_CDREGIAO
                             AND PRODUTO.CDPRODUTO     = V_CDPRODUTO 
                             AND ITEMAUTF.DTPROGENTAF BETWEEN V_DTINIABCAF AND V_DTFINABCAF
                             AND AUTOFORNE.CDFORNECED  = NVL('', AUTOFORNE.CDFORNECED)
                             AND ITEMAUTF.NRORG = P_NRORG
                             AND AUTOFORNE.NRORG = P_NRORG
                             AND RELACPRODOL.NRORG = P_NRORG
                             AND PRODUTO.NRORG = P_NRORG
                             AND FILIAL.NRORG = P_NRORG
                          UNION
                          SELECT ROUND((SUM((ITEMAUTF.QTEFETENTRAF * PRODESTO.VRFATOCONV)/PRODUTO.VRFATOCONV) / P_QTMESES), 2) QTDEACOMPRAR
                            FROM ITEMAUTF INNER JOIN AUTOFORNE        ON AUTOFORNE.CDFILDEST  = ITEMAUTF.CDFILDEST
                                                                     AND AUTOFORNE.CDFILLANC  = ITEMAUTF.CDFILLANC
                                                                     AND AUTOFORNE.NRAUTOFORN = ITEMAUTF.NRAUTOFORN
                                          INNER JOIN PRODUTO PRODESTO ON ITEMAUTF.CDPRODUTO   = PRODESTO.CDPRODUTO
                                          INNER JOIN PRODUTO          ON ITEMAUTF.CDPRODUTO   = PRODUTO.CDPRODUTO
                                          INNER JOIN FILIAL           ON AUTOFORNE.CDFILDEST  = FILIAL.CDFILIAL
                           WHERE AUTOFORNE.IDSITUATUAAF IS NULL
                             AND NVL(AUTOFORNE.IDBAIXAAF,'0') <> '6'
                             AND ITEMAUTF.IDBAIXITMAF IN ('1', '2')
                             AND AUTOFORNE.IDAFFORALIM = 'N'
                             AND FILIAL.CDREGIAO       = V_CDREGIAO
                             AND PRODESTO.CDPRODESTO   = V_CDPRODESTO
                             AND PRODUTO.CDPRODUTO     = V_CDPRODUTO
                             AND ITEMAUTF.DTPROGENTAF BETWEEN V_DTINIABCAF AND V_DTFINABCAF
                             AND AUTOFORNE.CDFORNECED  = NVL('', AUTOFORNE.CDFORNECED)
                             AND ITEMAUTF.NRORG = P_NRORG
                             AND AUTOFORNE.NRORG = P_NRORG
                             AND PRODESTO.NRORG = P_NRORG
                             AND PRODUTO.NRORG = P_NRORG
                             AND FILIAL.NRORG = P_NRORG) AF;
               EXCEPTION
                 WHEN NO_DATA_FOUND THEN
                   V_QTPRODPEDCOL := 0;
               END;
            END IF;
         ELSE
            V_QTPRODPEDCOL := V_QTACOMPRAR;
         END IF;
      END IF;
      /*============================================= VALIDA O PRECO ANTERIOR ANTES DE INSERIR OS ITENS NO PEDIDO ============================================= */
      IF (P_NRCOTACAO IS NOT NULL) THEN 
         BEGIN
            SELECT MIN(I.VRPRECUNIITM) VRPRECUNIITM
              INTO V_VRPRECOANT
              FROM ITEMCOLE I
             WHERE I.CDFILIAL    = P_CDFILIAL
               AND I.NRCOLEPRECO = P_NRCOTACAO
               AND I.CDMARCA     = V_CDMARCA
               AND I.CDREGIAO    = V_CDREGIAO
               AND I.CDFORNECED  = V_CDFORNECED
               AND I.CDPRODUTO   = V_CDPRODUTO
               AND I.VRPRECUNIITM > 0
               AND I.NRORG       = P_NRORG;
         EXCEPTION
           WHEN NO_DATA_FOUND THEN
            V_VRPRECOANT := 0;
         END;
      ELSE
         IF(P_NRSEQPRELIST IS NOT NULL) THEN
            IF V_IDSISDOS = '3' THEN
               BEGIN
                  SELECT MIN(I.VRPRECUNIITM) VRPRECUNIITM
                    INTO V_VRPRECOANT
                    FROM ITEMCOLE I
                   WHERE I.CDFILIAL     = P_CDFILIAL
                     --AND I.NRCOLEPRECO  = P_NRCOTACAO
                     AND I.NRSEQPRELIST = P_NRSEQPRELIST
                     AND I.CDMARCA      = V_CDMARCA
                     AND I.CDREGIAO     = V_CDREGIAO
                     AND I.CDFORNECED   = V_CDFORNECED
                     AND I.CDPRODUTO    = V_CDPRODUTO
                     AND I.VRPRECUNIITM > 0
                     AND I.NRORG        = P_NRORG;
               EXCEPTION
                 WHEN NO_DATA_FOUND THEN
                  V_VRPRECOANT := 0;
               END;
            ELSE
               BEGIN
                  SELECT MIN(I.VRPRECUNIITM) VRPRECUNIITM
                    INTO V_VRPRECOANT
                    FROM ITEMCOLE I
                   WHERE I.CDFILIAL     = P_CDFILIAL
                     AND I.NRSEQPRELIST = P_NRSEQPRELIST
                     AND I.CDMARCA      = V_CDMARCA
                     AND I.CDREGIAO     = V_CDREGIAO
                     AND I.CDFORNECED   = V_CDFORNECED
                     AND I.CDPRODUTO    = V_CDPRODUTO
                     AND I.VRPRECUNIITM > 0
                     AND I.NRORG        = P_NRORG;
               EXCEPTION
                 WHEN NO_DATA_FOUND THEN
                  V_VRPRECOANT := 0;
               END;
            END IF;
         ELSE
            BEGIN
              SELECT MIN(I.VRPRECUNIITM) VRPRECUNIITM
                INTO V_VRPRECOANT
                FROM ITEMCOLE I
               WHERE I.CDFILIAL     = P_CDFILIAL
                 AND I.CDMARCA      = V_CDMARCA
                 AND I.CDREGIAO     = V_CDREGIAO
                 AND I.CDFORNECED   = V_CDFORNECED
                 AND I.CDPRODUTO    = V_CDPRODUTO
                 AND I.VRPRECUNIITM > 0
                 AND I.NRORG        = P_NRORG
                 AND I.NRCOLEPRECO  = (SELECT MAX(NRCOLEPRECO)
                                         FROM ITEMCOLE IT
                                        WHERE IT.CDFILIAL     = I.CDFILIAL
                                          AND IT.CDMARCA      = I.CDMARCA
                                          AND IT.CDREGIAO     = I.CDREGIAO
                                          AND IT.CDFORNECED   = I.CDFORNECED
                                          AND IT.CDPRODUTO    = I.CDPRODUTO
                                          AND IT.VRPRECUNIITM > 0
                                          AND IT.NRORG        = P_NRORG);
            EXCEPTION
              WHEN NO_DATA_FOUND THEN
               V_VRPRECOANT := 0;
            END;
         END IF;
      END IF;
      /*INSERE OS ITENS DO PEDIDO*/
      INSERT INTO ITEMPEDCOL (CDFILIAL, CDFORNECED, NRPEDCOLETA, CDREGIAO, CDPRODUTO, CDMARCA, QTPRODPEDCOL, IDSELELEILAO,
                              VRANTITPEDCOL, VRPERDESPEDCOL, NRORG)
      SELECT
         P_CDFILIAL,
         V_CDFORNECED,
         V_PROXIMOCODIGO,
         V_CDREGIAO,
         V_CDPRODUTO,
         V_CDMARCA,
         V_QTPRODPEDCOL,
         'N',
         V_VRPRECOANT,
         V_DESCONTOFORN,
         P_NRORG
      FROM DUAL
      WHERE NOT EXISTS (SELECT 1
                        FROM ITEMPEDCOL I
                        WHERE I.CDFILIAL    = P_CDFILIAL
                          AND I.CDFORNECED  = V_CDFORNECED
                          AND I.NRPEDCOLETA = V_PROXIMOCODIGO
                          AND I.CDREGIAO    = V_CDREGIAO
                          AND I.CDPRODUTO   = V_CDPRODUTO
                          AND I.CDMARCA     = V_CDMARCA
                          AND I.NRORG       = P_NRORG);
      INSERT INTO PRMARCPEDCOL (CDFILIAL, NRPEDIDOCOL, CDPRODUTO, CDMARCA, VRULTPRECPRMARC, NRORG)
      SELECT
         P_CDFILIAL,
         V_PEDCOLGERAL,
         V_CDPRODUTO,
         V_CDMARCA,
         V_VRPRECOANT,
         P_NRORG
      FROM DUAL
      WHERE NOT EXISTS (SELECT P_NRCOTACAO
                        FROM PRMARCPEDCOL P
                        WHERE P.CDFILIAL    = P_CDFILIAL
                          AND P.NRPEDIDOCOL = V_PEDCOLGERAL
                          AND P.CDPRODUTO   = V_CDPRODUTO
                          AND P.CDMARCA     = V_CDMARCA
                          AND P.NRORG       = P_NRORG);
     V_COMPCONSCOMP := V_CDOPERADOR;
     V_COMPCONSREG  := V_CDOPERADOR || V_CDREGIAO;
     V_COMPCONSFORN := V_CDOPERADOR || V_CDFORNECED;
     V_COMPCOTACAO  := V_CDOPERADOR || V_NRCOMPRA;
     V_COMPFORN     := V_CDREGIAO   || V_CDOPERADOR || V_CDFORNECED;
   END LOOP;
   CLOSE C_PEDCOLETA;
END;