CREATE OR REPLACE PROCEDURE APURA_EQUALIZACAO (P_NREQUALFORNE   IN VARCHAR2,
                                               P_CDREGIAO       IN VARCHAR2,
                                               P_CDFORNECED     IN VARCHAR2,
                                               P_CDCOMPRADOR    IN VARCHAR2,
                                               P_DTINIVALITM    IN DATE,
                                               P_DTFINVALITM    IN DATE,
                                               P_CDPRODINI      IN VARCHAR2,
                                               P_CDPRODFIN      IN VARCHAR2,
                                               P_CDMARCA        IN VARCHAR2,
                                               P_DTINIVALANT    IN DATE,
                                               P_DTFINVALANT    IN DATE,
                                               P_MELHORPRECO    IN VARCHAR2,
                                               P_CDFILIAL       IN VARCHAR2,
                                               P_IDVERIFICAVRIT IN VARCHAR2 DEFAULT 'S',
                                               P_IDTPCOMPARA    IN VARCHAR2 DEFAULT 'C',
                                               P_NRORG          IN VARCHAR2 DEFAULT '1',
                                               P_EXIBE          IN VARCHAR2 DEFAULT 'P' /* P=EXIBE PEDIDO DE COLETA E C=EXIBE COTACAO */
                                               )
IS
   TYPE CURTYPE            IS REF CURSOR;
   C_EQUALIZA              CURTYPE;

   V_ULTIMACOMPRA FLOAT;
   V_MEDIACMPREG  FLOAT;
   V_PRECOANTNEG  FLOAT;

   V_EQUA_CDFILIAL   VARCHAR2(4);
   V_EQUA_CDREGIAO VARCHAR2(3);
   V_EQUA_CDFORNECED VARCHAR2(21);
   V_EQUA_NRPEDIDOCOL VARCHAR2(10);
   V_EQUA_CDPRODUTO VARCHAR2(10);
   V_EQUA_VRFATOCONV FLOAT;
   V_EQUA_CDMARCA VARCHAR2(5);
   V_EQUA_QTPRODPEDCOL FLOAT;
   V_EQUA_VRANTITPEDCOL FLOAT;
   V_EQUA_VRTOTANT FLOAT;
   V_EQUA_VRITEMPEDCOL FLOAT;
   V_EQUA_VRTOTATUAL  FLOAT;
   V_EQUA_VRPERCTUAL FLOAT;
   V_EQUA_VRPRECECOPEDCOL  FLOAT;
   V_EQUA_VRTOTPRECO FLOAT;
   V_EQUA_VRPRECOOBJETIVO  FLOAT;
   V_EQUA_VRTOTPROBJ  FLOAT;
   V_EQUA_VRPRECREN FLOAT;
   V_EQUA_VRPERCNEG FLOAT;
   V_EQUA_VRTOTNEG FLOAT;

   V_EQUA_VRTOTPRECOPI  FLOAT;
   V_EQUA_VRPRECPIPEDCOL FLOAT;
 
BEGIN
    V_ULTIMACOMPRA := 0;
    V_MEDIACMPREG  := 0;
    V_PRECOANTNEG  := 0;
   IF P_EXIBE = 'P' THEN
     OPEN C_EQUALIZA FOR
         SELECT PEDCOLETA.CDFILIAL,  
                PEDCOLETA.CDREGIAO,
                PEDCOLETA.CDFORNECED,
                PEDCOLETA.NRPEDIDOCOL,
                ITEMPEDCOL.CDPRODUTO, 
                PRODUTO.VRFATOCONV,
                ITEMPEDCOL.CDMARCA,
                ROUND(NVL(ITEMPEDCOL.QTPRODPEDCOL,0),2) QTPRODPEDCOL,
                ITEMPEDCOL.VRANTITPEDCOL VRANTITPEDCOL,
                ROUND((NVL(ITEMPEDCOL.QTPRODPEDCOL,0) * ITEMPEDCOL.VRANTITPEDCOL),2) VRTOTANT,
                ROUND(ITEMPEDCOL.VRITEMPEDCOL,2) VRITEMPEDCOL,
                ROUND((NVL(ITEMPEDCOL.QTPRODPEDCOL,0) * ITEMPEDCOL.VRITEMPEDCOL),2) VRTOTATUAL,
                ROUND(((ITEMPEDCOL.VRITEMPEDCOL/ITEMPEDCOL.VRANTITPEDCOL - 1) * 100),2) VRPERCTUAL,
                ROUND(ITEMPEDCOL.VRPRECECOPEDCOL,2) VRPRECECOPEDCOL,
                ROUND((NVL(ITEMPEDCOL.QTPRODPEDCOL,0) * ITEMPEDCOL.VRPRECECOPEDCOL),2) VRTOTPRECO,
                ROUND(VRPRECPIPEDCOL,2)   VRPRECPIPEDCOL,
                ROUND((NVL(ITEMPEDCOL.QTPRODPEDCOL,0) * ITEMPEDCOL.VRPRECPIPEDCOL),2) VRTOTPRECOPI,
                ROUND(ITEMPEDCOL.VRPRECOOBJETIVO,2) VRPRECOOBJETIVO,
                ROUND((NVL(ITEMPEDCOL.QTPRODPEDCOL,0) * ITEMPEDCOL.VRPRECOOBJETIVO),2) VRTOTPROBJ,
                ROUND(ITEMPEDCOL.VRPRECREN,2) VRPRECREN,
                ROUND(((ITEMPEDCOL.VRPRECREN/ITEMPEDCOL.VRANTITPEDCOL - 1) * 100),2) VRPERCNEG,
                ROUND((NVL(ITEMPEDCOL.QTPRODPEDCOL,0) * ITEMPEDCOL.VRPRECREN),2) VRTOTNEG
           FROM ITEMPEDCOL INNER JOIN PRODUTO   ON ITEMPEDCOL.CDPRODUTO = PRODUTO.CDPRODUTO
                           INNER JOIN PEDCOLETA ON ITEMPEDCOL.CDFILIAL = PEDCOLETA.CDFILIAL
                                                AND ITEMPEDCOL.NRPEDCOLETA = PEDCOLETA.NRPEDCOLETA
                                                 AND ITEMPEDCOL.CDFORNECED = PEDCOLETA.CDFORNECED
                                                AND ITEMPEDCOL.CDREGIAO = PEDCOLETA.CDREGIAO
          WHERE PEDCOLETA.CDFILIAL = P_CDFILIAL
            AND PEDCOLETA.DTINIPERCOT <= P_DTFINVALITM
            AND PEDCOLETA.DTFINPERCOT >= P_DTINIVALITM
            AND (INSTR(P_CDCOMPRADOR, PEDCOLETA.CDOPERADOR) > 0 OR P_CDCOMPRADOR = 'T')
            AND (INSTR(P_CDFORNECED,  PEDCOLETA.CDFORNECED ) > 0 OR P_CDFORNECED  = 'T')
            AND (INSTR(P_CDREGIAO,    PEDCOLETA.CDREGIAO       ) > 0 OR P_CDREGIAO    = 'T')
            AND (INSTR(P_CDMARCA, ITEMPEDCOL.CDMARCA) > 0 OR P_CDMARCA = 'T')
            AND PRODUTO.CDARVPROD BETWEEN P_CDPRODINI AND RPAD(P_CDPRODFIN,20,'Z')
            AND (((P_IDVERIFICAVRIT = 'S') AND (NVL(ITEMPEDCOL.VRITEMPEDCOL, 0)  > 0)) OR (P_IDVERIFICAVRIT = 'N'))
            AND NOT EXISTS ( SELECT '1' 
                               FROM ITEMCOLE I 
                              WHERE I.CDFILIAL = PEDCOLETA.CDFILIAL 
                                AND I.NRPEDIDOCOL = PEDCOLETA.NRPEDIDOCOL 
                                AND I.CDREGIAO = PEDCOLETA.CDREGIAO 
                                AND I.CDFORNECED = PEDCOLETA.CDFORNECED )
          ORDER BY PEDCOLETA.CDFILIAL, PEDCOLETA.CDREGIAO, PEDCOLETA.CDFORNECED, PEDCOLETA.NRPEDIDOCOL, ITEMPEDCOL.CDPRODUTO, ITEMPEDCOL.CDMARCA;
   ELSE
     OPEN C_EQUALIZA FOR
          SELECT ITEMCOLE.CDFILIAL,
                 ITEMCOLE.CDREGIAO,
                 ITEMCOLE.CDFORNECED, 
                 ITEMCOLE.NRCOLEPRECO AS NRPEDIDOCOL, 
                 ITEMCOLE.CDPRODUTO, 
                 P.VRFATOCONV,
                 ITEMCOLE.CDMARCA,
                 ROUND(ITEMCOLE.QTACMPITMCOL,2) AS QTPRODPEDCOL,
                 0 VRANTITPEDCOL,
                 0 VRTOTANT,
                 ROUND(ITEMCOLE.VRPRECUNIITM,2) AS VRITEMPEDCOL,
                 ROUND((NVL(ITEMCOLE.QTACMPITMCOL,0) * ITEMCOLE.VRPRECUNIITM),2) VRTOTATUAL,
                 0 VRPERCTUAL,
                 ROUND(VRPRECECOITM,2) AS VRPRECECOPEDCOL,
                 ROUND((NVL(ITEMCOLE.QTACMPITMCOL,0) * ITEMCOLE.VRPRECECOITM),2) VRTOTPRECO,
                 ROUND(VRPRECOITMPI,2) AS VRPRECPIPEDCOL,
                 ROUND((NVL(ITEMCOLE.QTACMPITMCOL,0) * ITEMCOLE.VRPRECOITMPI),2) VRTOTPRECOPI, 
                 0 VRPRECOOBJETIVO,
                 0 VRTOTPROBJ,
                 0 VRPRECREN,
                 0 VRPERCNEG,
                 0 VRTOTNEG
            FROM ITEMCOLE, COLETAPR, PRODUTO P
           WHERE ITEMCOLE.CDFILIAL = COLETAPR.CDFILIAL
             AND ITEMCOLE.NRCOLEPRECO = COLETAPR.NRCOLEPRECO
             AND ITEMCOLE.CDFILIAL = P_CDFILIAL
             AND ITEMCOLE.DTINIVALITM <= P_DTFINVALITM
             AND ITEMCOLE.DTFINVALITM >= P_DTINIVALITM
             AND (INSTR(P_CDCOMPRADOR, COLETAPR.CDOPERADOR ) > 0 OR P_CDCOMPRADOR = 'T')
             AND (INSTR(P_CDFORNECED,  ITEMCOLE.CDFORNECED ) > 0 OR P_CDFORNECED  = 'T')
             AND (INSTR(P_CDREGIAO,    ITEMCOLE.CDREGIAO   ) > 0 OR P_CDREGIAO    = 'T')
             AND ITEMCOLE.CDPRODUTO = P.CDPRODUTO
             AND P.CDARVPROD BETWEEN P_CDPRODINI AND RPAD(P_CDPRODFIN ,20,'Z')
           ORDER BY ITEMCOLE.CDFILIAL, ITEMCOLE.CDREGIAO, ITEMCOLE.CDFORNECED, ITEMCOLE.NRCOLEPRECO, ITEMCOLE.CDPRODUTO, ITEMCOLE.CDMARCA;
   END IF;
   LOOP
   FETCH C_EQUALIZA INTO V_EQUA_CDFILIAL,        V_EQUA_CDREGIAO,       V_EQUA_CDFORNECED,      V_EQUA_NRPEDIDOCOL,     V_EQUA_CDPRODUTO, 
                         V_EQUA_VRFATOCONV,      V_EQUA_CDMARCA,        V_EQUA_QTPRODPEDCOL,    V_EQUA_VRANTITPEDCOL,   V_EQUA_VRTOTANT,
                         V_EQUA_VRITEMPEDCOL,    V_EQUA_VRTOTATUAL,     V_EQUA_VRPERCTUAL,      V_EQUA_VRPRECECOPEDCOL, V_EQUA_VRTOTPRECO,
                         V_EQUA_VRPRECPIPEDCOL,  V_EQUA_VRTOTPRECOPI,   V_EQUA_VRPRECOOBJETIVO, V_EQUA_VRTOTPROBJ,      V_EQUA_VRPRECREN,    
                         V_EQUA_VRPERCNEG,       V_EQUA_VRTOTNEG;
   EXIT WHEN C_EQUALIZA%NOTFOUND;
      /*Preco anterior*/
      IF ((P_MELHORPRECO = '3') AND (P_EXIBE = 'C')) THEN
         BEGIN
            SELECT NVL(MIN(ITEMCOLE.VRPRECUNIITM), 0) VRPRECUNIITM
              INTO V_EQUA_VRANTITPEDCOL
              FROM ITEMCOLE
             WHERE ITEMCOLE.CDFILIAL    = V_EQUA_CDFILIAL
               AND ITEMCOLE.CDREGIAO    = V_EQUA_CDREGIAO
               AND ITEMCOLE.CDPRODUTO   = V_EQUA_CDPRODUTO
               AND ITEMCOLE.CDFORNECED  = V_EQUA_CDFORNECED
               AND ITEMCOLE.CDMARCA     = V_EQUA_CDMARCA
               AND ITEMCOLE.VRPRECUNIITM > 0
               AND ITEMCOLE.NRCOLEPRECO = ( SELECT MAX(ITEMCOLE.NRCOLEPRECO) NRCOLEPRECO
                                              FROM COLETAPR, ITEMCOLE
                                             WHERE COLETAPR.CDFILIAL    = V_EQUA_CDFILIAL
                                               AND ITEMCOLE.CDFILIAL    = COLETAPR.CDFILIAL
                                               AND ITEMCOLE.NRCOLEPRECO = COLETAPR.NRCOLEPRECO
                                               AND ITEMCOLE.CDREGIAO    = V_EQUA_CDREGIAO
                                               AND ITEMCOLE.CDPRODUTO   = V_EQUA_CDPRODUTO
                                               AND ITEMCOLE.CDMARCA     = V_EQUA_CDMARCA
                                               AND ITEMCOLE.CDFORNECED  = V_EQUA_CDFORNECED
                                               AND ITEMCOLE.VRPRECUNIITM > 0
                                               AND NVL(COLETAPR.IDSITUCOLETA, 'C') <> 'A'
                                               AND (INSTR(P_CDCOMPRADOR, COLETAPR.CDOPERADOR) > 0 OR P_CDCOMPRADOR = 'T'));
         EXCEPTION
            WHEN NO_DATA_FOUND THEN
               V_EQUA_VRANTITPEDCOL := 0;
         END;
      ELSE
         /*Melhor preco anterior*/
         IF(P_MELHORPRECO = '1') THEN
           BEGIN
             SELECT NVL(MIN(ITEMCOLE.VRPRECUNIITM), 0) VRPRECUNIITM
               INTO V_EQUA_VRANTITPEDCOL
               FROM COLETAPR, ITEMCOLE
              WHERE COLETAPR.CDFILIAL    = V_EQUA_CDFILIAL
                AND ITEMCOLE.CDFILIAL    = COLETAPR.CDFILIAL
                AND ITEMCOLE.NRCOLEPRECO = COLETAPR.NRCOLEPRECO
                AND ITEMCOLE.CDREGIAO    = V_EQUA_CDREGIAO
                AND ITEMCOLE.CDPRODUTO   = V_EQUA_CDPRODUTO
                AND ITEMCOLE.CDMARCA     = V_EQUA_CDMARCA
                AND ITEMCOLE.CDFORNECED  = V_EQUA_CDFORNECED
                AND ITEMCOLE.VRPRECUNIITM > 0
                AND NVL(COLETAPR.IDSITUCOLETA, 'C') <> 'A'
                AND ((INSTR(P_CDCOMPRADOR, COLETAPR.CDOPERADOR) > 0 OR P_CDCOMPRADOR = 'T'))
                AND (ITEMCOLE.DTINIVALITM <= P_DTFINVALANT AND ITEMCOLE.DTFINVALITM >= P_DTINIVALANT);
           EXCEPTION
             WHEN NO_DATA_FOUND THEN
               V_EQUA_VRANTITPEDCOL := 0;
           END;
         ELSE
           IF(P_MELHORPRECO = '2') THEN
             BEGIN
               SELECT NVL(MIN(ITEMCOLE.VRPRECUNIITM), 0) VRPRECUNIITM
                 INTO V_EQUA_VRANTITPEDCOL
                 FROM ITEMCOLE
                WHERE ITEMCOLE.CDFILIAL    = V_EQUA_CDFILIAL
                  AND ITEMCOLE.CDREGIAO    = V_EQUA_CDREGIAO
                  AND ITEMCOLE.CDPRODUTO   = V_EQUA_CDPRODUTO
                  AND ITEMCOLE.CDMARCA     = V_EQUA_CDMARCA
                  AND ITEMCOLE.CDFORNECED  = V_EQUA_CDFORNECED
                  AND ITEMCOLE.VRPRECUNIITM > 0
                  AND ITEMCOLE.NRCOLEPRECO = ( SELECT MAX(ITEMCOLE.NRCOLEPRECO) NRCOLEPRECO
                                                 FROM COLETAPR, ITEMCOLE
                                                WHERE COLETAPR.CDFILIAL    = V_EQUA_CDFILIAL
                                                  AND ITEMCOLE.CDFILIAL    = COLETAPR.CDFILIAL
                                                  AND ITEMCOLE.NRCOLEPRECO = COLETAPR.NRCOLEPRECO
                                                  AND ITEMCOLE.CDREGIAO    = V_EQUA_CDREGIAO
                                                  AND ITEMCOLE.CDPRODUTO   = V_EQUA_CDPRODUTO
                                                  AND ITEMCOLE.CDMARCA     = V_EQUA_CDMARCA
                                                  AND ITEMCOLE.CDFORNECED  = V_EQUA_CDFORNECED
                                                  AND ITEMCOLE.VRPRECUNIITM > 0
                                                  AND NVL(COLETAPR.IDSITUCOLETA, 'C') <> 'A'
                                                  AND ((INSTR(P_CDCOMPRADOR, COLETAPR.CDOPERADOR) > 0 OR P_CDCOMPRADOR = 'T'))
                                                  AND (ITEMCOLE.DTINIVALITM <= P_DTFINVALANT AND ITEMCOLE.DTFINVALITM >= P_DTINIVALANT));
             EXCEPTION
               WHEN NO_DATA_FOUND THEN
                 V_EQUA_VRANTITPEDCOL := 0;
             END;
           END IF;
         END IF;
      END IF;

      /*ULTIMO PRECO DE COMPRA - NF*/
      BEGIN
          SELECT ITEMPRODUTO.VRUNITITEM
            INTO V_ULTIMACOMPRA
            FROM NOTAFISCAL, ITEMPRODUTO, FORNECEDOR, TIPOOPERAC, FILIAL
           WHERE NOTAFISCAL.CDFILIRECE   = FILIAL.CDFILIAL
             AND FILIAL.CDREGIAO = V_EQUA_CDREGIAO
             AND NOTAFISCAL.IDENTRSAIDOP = 'E'    
             AND NOTAFISCAL.IDENTRSAIDOP = TIPOOPERAC.IDENTRSAIDOP 
             AND NOTAFISCAL.CDTIPOOPER   = TIPOOPERAC.CDTIPOOPER   
             AND TIPOOPERAC.IDGERANFCMP  = 'S' 
             AND NOTAFISCAL.CDFILIAL     = ITEMPRODUTO.CDFILIAL   
             AND NOTAFISCAL.NRLANCTONF   = ITEMPRODUTO.NRLANCTONF 
             AND ITEMPRODUTO.CDPRODUTO   = V_EQUA_CDPRODUTO 
             AND ITEMPRODUTO.NRSEQITPROD = (SELECT MAX(ITMPROD.NRSEQITPROD)
                                              FROM ITEMPRODUTO ITMPROD
                                             WHERE ITMPROD.CDFILIAL = NOTAFISCAL.CDFILIAL 
                                               AND ITMPROD.NRLANCTONF = NOTAFISCAL.NRLANCTONF 
                                               AND ITMPROD.CDPRODUTO  = V_EQUA_CDPRODUTO) 
             AND NOTAFISCAL.CDFORNECED = FORNECEDOR.CDFORNECED 
             AND NOTAFISCAL.NRLANCTONF = (SELECT MAX(NOTAFISCAL.NRLANCTONF)
                                            FROM NOTAFISCAL, ITEMPRODUTO, TIPOOPERAC, FILIAL, (SELECT MAX(NOTAFISCAL.DTENTRSAID) AS MAX_DTNOTA
                                                                                                 FROM NOTAFISCAL, ITEMPRODUTO, TIPOOPERAC, FILIAL
                                                                                                WHERE NOTAFISCAL.CDFILIRECE   = FILIAL.CDFILIAL
                                                                                                  AND FILIAL.CDREGIAO         = V_EQUA_CDREGIAO
                                                                                                  AND NOTAFISCAL.IDENTRSAIDOP = 'E' 
                                                                                                  AND NOTAFISCAL.IDENTRSAIDOP = TIPOOPERAC.IDENTRSAIDOP 
                                                                                                  AND NOTAFISCAL.CDTIPOOPER   = TIPOOPERAC.CDTIPOOPER 
                                                                                                  AND TIPOOPERAC.IDGERANFCMP  = 'S' 
                                                                                                  AND NOTAFISCAL.CDFILIAL     = ITEMPRODUTO.CDFILIAL  
                                                                                                  AND NOTAFISCAL.NRLANCTONF   = ITEMPRODUTO.NRLANCTONF 
                                                                                                  AND ITEMPRODUTO.CDPRODUTO   = V_EQUA_CDPRODUTO) MAX_NOTA
                                           WHERE NOTAFISCAL.DTENTRSAID = MAX_NOTA.MAX_DTNOTA 
                                             AND NOTAFISCAL.CDFILIRECE   = FILIAL.CDFILIAL
                                             AND FILIAL.CDREGIAO         = V_EQUA_CDREGIAO
                                             AND NOTAFISCAL.IDENTRSAIDOP = 'E'    
                                             AND NOTAFISCAL.IDENTRSAIDOP = TIPOOPERAC.IDENTRSAIDOP 
                                             AND NOTAFISCAL.CDTIPOOPER   = TIPOOPERAC.CDTIPOOPER   
                                             AND TIPOOPERAC.IDGERANFCMP  = 'S'
                                             AND NOTAFISCAL.CDFILIAL     = ITEMPRODUTO.CDFILIAL   
                                             AND NOTAFISCAL.NRLANCTONF   = ITEMPRODUTO.NRLANCTONF 
                                             AND ITEMPRODUTO.CDPRODUTO   = V_EQUA_CDPRODUTO);
      EXCEPTION
         WHEN NO_DATA_FOUND THEN
            V_ULTIMACOMPRA := 0;
      END;

      /*PRECO MEDIO DE COMPRA DA REGIAO DOS ULTIMOS 30 DIAS*/
      BEGIN
         SELECT ROUND(AVG(ITEMPRODUTO.VRUNITITEM),2) AS VRUNITITEM
           INTO V_MEDIACMPREG
           FROM NOTAFISCAL, ITEMPRODUTO, FORNECEDOR, TIPOOPERAC, FILIAL
          WHERE NOTAFISCAL.CDFILIRECE   = FILIAL.CDFILIAL
            AND FILIAL.CDREGIAO = V_EQUA_CDREGIAO
            AND NOTAFISCAL.IDENTRSAIDOP = 'E'    
            AND NOTAFISCAL.IDENTRSAIDOP = TIPOOPERAC.IDENTRSAIDOP 
            AND NOTAFISCAL.CDTIPOOPER   = TIPOOPERAC.CDTIPOOPER   
            AND TIPOOPERAC.IDGERANFCMP  = 'S' 
            AND NOTAFISCAL.CDFILIAL     = ITEMPRODUTO.CDFILIAL   
            AND NOTAFISCAL.NRLANCTONF   = ITEMPRODUTO.NRLANCTONF 
            AND ITEMPRODUTO.CDPRODUTO   = V_EQUA_CDPRODUTO
            AND NOTAFISCAL.DTENTRSAID  BETWEEN (SYSDATE-31) AND (SYSDATE-1);
      EXCEPTION
         WHEN NO_DATA_FOUND THEN
            V_MEDIACMPREG := 0;
      END;

      /*MELHOR PRECO NEGOCIADO ANTERIOR*/
      BEGIN
         SELECT NVL(MIN(ITEMCOLE.VRPRECUNIITM), 0) VRPRECUNIITM
           INTO V_PRECOANTNEG
           FROM ITEMCOLE
          WHERE ITEMCOLE.CDFILIAL    = V_EQUA_CDFILIAL
            AND ITEMCOLE.CDREGIAO    = V_EQUA_CDREGIAO
            AND ITEMCOLE.CDPRODUTO   = V_EQUA_CDPRODUTO
            AND ITEMCOLE.CDMARCA     = V_EQUA_CDMARCA
            AND ITEMCOLE.VRPRECUNIITM > 0
            AND ITEMCOLE.NRCOLEPRECO = ( SELECT MAX(ITEMCOLE.NRCOLEPRECO) NRCOLEPRECO
                                           FROM COLETAPR, ITEMCOLE
                                          WHERE COLETAPR.CDFILIAL    = V_EQUA_CDFILIAL
                                            AND ITEMCOLE.CDFILIAL    = COLETAPR.CDFILIAL
                                            AND ITEMCOLE.NRCOLEPRECO = COLETAPR.NRCOLEPRECO
                                            AND ITEMCOLE.CDREGIAO    = V_EQUA_CDREGIAO
                                            AND ITEMCOLE.CDPRODUTO   = V_EQUA_CDPRODUTO
                                            AND ITEMCOLE.CDMARCA     = V_EQUA_CDMARCA
                                            AND ITEMCOLE.VRPRECUNIITM > 0
                                            AND NVL(COLETAPR.IDSITUCOLETA, 'C') <> 'A'
                                            AND ((INSTR(P_CDCOMPRADOR, COLETAPR.CDOPERADOR) > 0 OR P_CDCOMPRADOR = 'T')));
      EXCEPTION
         WHEN NO_DATA_FOUND THEN
            V_PRECOANTNEG := 0;
      END;

      /*CONVERTE OS PRECOS PARA UNIDADE DE ESTOQUE DE ACORDO COM O PARAMETRO 'COMPARATIVO DE PRECO'*/
      /*IF P_IDTPCOMPARA = 'E' THEN
         V_EQUA_QTPRODPEDCOL    := ROUND((V_EQUA_QTPRODPEDCOL  * V_EQUA_VRFATOCONV),2);
         V_EQUA_VRANTITPEDCOL   := ROUND((V_EQUA_VRANTITPEDCOL / V_EQUA_VRFATOCONV),2);
         V_EQUA_VRTOTANT        := ROUND((V_EQUA_VRANTITPEDCOL * V_EQUA_QTPRODPEDCOL),2);
         V_EQUA_VRITEMPEDCOL    := ROUND((V_EQUA_VRITEMPEDCOL  / V_EQUA_VRFATOCONV),2);
         V_EQUA_VRTOTATUAL      := ROUND((V_EQUA_VRITEMPEDCOL  * V_EQUA_QTPRODPEDCOL),2);
         V_EQUA_VRPERCTUAL      := ROUND((((V_EQUA_VRITEMPEDCOL/ NVL(V_EQUA_VRANTITPEDCOL,1)) - 1) * 100),2);
         V_EQUA_VRPRECECOPEDCOL := ROUND((V_EQUA_VRPRECECOPEDCOL  / V_EQUA_VRFATOCONV),2);
         V_EQUA_VRTOTPRECO      := ROUND((V_EQUA_VRPRECECOPEDCOL  * V_EQUA_QTPRODPEDCOL),2);
         V_EQUA_VRPRECPIPEDCOL  := ROUND((V_EQUA_VRPRECPIPEDCOL  / V_EQUA_VRFATOCONV),2);
         V_EQUA_VRTOTPRECOPI    := ROUND((V_EQUA_VRPRECPIPEDCOL  * V_EQUA_QTPRODPEDCOL),2);
         V_EQUA_VRPRECOOBJETIVO := ROUND((V_EQUA_VRPRECOOBJETIVO  / V_EQUA_VRFATOCONV),2);
         V_EQUA_VRTOTPROBJ      := ROUND((V_EQUA_VRPRECOOBJETIVO  * V_EQUA_QTPRODPEDCOL),2);
         V_EQUA_VRPRECREN       := ROUND((V_EQUA_VRPRECREN  / V_EQUA_VRFATOCONV),2);
         V_EQUA_VRPERCNEG       := ROUND((((V_EQUA_VRPRECREN/ NVL(V_EQUA_VRANTITPEDCOL,1)) - 1) * 100),2);
         V_EQUA_VRTOTNEG        := ROUND((V_EQUA_VRPRECREN  * V_EQUA_QTPRODPEDCOL),2);
      END IF; */
      /*INSERT NA TABELA DE EQUALIZACAO*/
      INSERT INTO EQUALFORNE (NREQUALFORNE,
                              CDFILIAL,
                              CDREGIAO,
                              CDFORNECED,
                              NRPEDIDOCOL,
                              CDPRODUTO,
                              CDMARCA,
                              VRQUANTID,
                              VRULTCMP,
                              VRPRECMEDIO,
                              VRMELHORPRANT,
                              VRPRECANT,
                              VRTOTANT,
                              VRPRATUAL,
                              VRTOTATUAL,
                              VRPERCTUAL,
                              VRPRECECO,
                              VRTOTPRECECO,
                              VRPRECPIPEDCOL,
                              VRTOTPRECECOPI,
                              VRPRECOBJ,
                              VRTOTPROBJ,
                              VRPRECNEG,
                              VRPERCNEG,
                              VRTOTNEG,
                              IDMELHORPREC)
      VALUES(P_NREQUALFORNE,
             V_EQUA_CDFILIAL,  
             V_EQUA_CDREGIAO,
             V_EQUA_CDFORNECED,
             V_EQUA_NRPEDIDOCOL,
             V_EQUA_CDPRODUTO, 
             V_EQUA_CDMARCA,
             V_EQUA_QTPRODPEDCOL,
             V_ULTIMACOMPRA,
             V_MEDIACMPREG,
             V_PRECOANTNEG,
             V_EQUA_VRANTITPEDCOL,
             V_EQUA_VRTOTANT,
             V_EQUA_VRITEMPEDCOL,
             V_EQUA_VRTOTATUAL,
             V_EQUA_VRPERCTUAL,
             V_EQUA_VRPRECECOPEDCOL,
             V_EQUA_VRTOTPRECO,
             V_EQUA_VRPRECPIPEDCOL,
             V_EQUA_VRTOTPRECOPI,
             V_EQUA_VRPRECOOBJETIVO,
             V_EQUA_VRTOTPROBJ,
             V_EQUA_VRPRECREN,
             V_EQUA_VRPERCNEG,
             V_EQUA_VRTOTNEG,
             'N');
   END LOOP;
END;
/