CREATE OR REPLACE PROCEDURE GRAVA_COTWEB(
  P_CDFILIAL     IN PEDCOLETA.CDFILIAL%TYPE,
  P_NRPEDCOLETA  IN PEDCOLETA.NRPEDCOLETA%TYPE,
  P_CDREGIAO     IN PEDCOLETA.CDREGIAO%TYPE,
  P_CDFORNECED   IN PEDCOLETA.CDFORNECED%TYPE,
  P_NRSEMINI     IN COLETAPR.NRSEMAINIC%TYPE,
  P_NRSEMFIN     IN COLETAPR.NRSEMAFINAL%TYPE,
  P_ENTRALISTA   IN VARCHAR2,
  P_COTA_N_GER   OUT VARCHAR2,
  P_CDOPERINCL   IN VARCHAR2 DEFAULT NULL)
AS
  V_NRCOLEPRECO     VARCHAR2(20);
  V_DTIMPOSTO       COLETAPR.DTCOLEPREC%TYPE;
  V_CDFORMPGTO      FORNECEDOR.CDFORMPGTO%TYPE;
  V_IDTPFORPGTO     FORNECEDOR.IDTPFORPGTFO%TYPE;
  V_NRPARCPGTO      FORNECEDOR.NRPARCPGTOFO%TYPE;
  V_NRDIAPGTO       FORNECEDOR.NRDIAPGFIXFO%TYPE;
  V_IDUTDIAPGTO     FORNECEDOR.IDUTDIAPGTFO%TYPE;
  V_IDTIPFRETE      FORNECEDOR.IDTPFRETFORN%TYPE;
  V_CDTIPCOB        FORNECEDOR.CDTIPCOB%TYPE;
  V_VRPERDESC       FORNECEDOR.VRPEDESCFORN%TYPE;
  V_CDPRODFORN      PRODUTO.CDARVPROD%TYPE;
  V_CDEMPRESA       EMPRESA.CDEMPRESA%TYPE;
  V_INSCESTA        INSCRESTAD.CDINSCESTA%TYPE;
  V_CTITMCOL        INT;
  V_APAGACOL        VARCHAR2(1);
  V_NRPEDIDOCOL     VARCHAR2(10);
  V_CDOPERADOR      VARCHAR2(12);
  V_IDUTISTATCOT    VARCHAR2(1);
  V_IDSITUCOLETA    VARCHAR2(1);
  V_IDMOTNGERPEDCOL LOGNGERAPEDCOL.IDMOTNGERPEDCOL%TYPE;
  V_GEROUREGISTRO   VARCHAR2(1);
  V_COUNT           INT;
  V_COUNTAUX        INT;
  V_IDGRAVAITEMZERADO PARAMGERALECOMMERCE.IDGRAVAITEMZERADO%TYPE;
  V_IDCOTUNICAPEDCOL  PARAMGERALECOMMERCE.IDCOTUNICAPEDCOL%TYPE;
  V_DTINIPERCOT       PEDCOLETA.DTINIPERCOT%TYPE;
  V_DTFINPERCOT       PEDCOLETA.DTFINPERCOT%TYPE;
BEGIN
   P_COTA_N_GER := 'N';
   SELECT MAX(IDTPFRETFORN), MAX(CDTIPCOB), MAX(DECODE(IDTPDESCFORN, 'C', VRPEDESCFORN, 0))
     INTO V_IDTIPFRETE, V_CDTIPCOB, V_VRPERDESC
     FROM FORNECEDOR
    WHERE CDFORNECED = P_CDFORNECED;
   SELECT NVL(MAX(IDGRAVAITEMZERADO), 'N'), NVL(MAX(IDCOTUNICAPEDCOL), 'N')
     INTO V_IDGRAVAITEMZERADO, V_IDCOTUNICAPEDCOL
     FROM PARAMGERALECOMMERCE
    WHERE CDFILIAL = P_CDFILIAL;
   IF V_IDCOTUNICAPEDCOL = 'S' THEN
      SELECT MAX(P.NRPEDIDOCOL), MAX(CDOPERADOR), MAX(DTINIPERCOT), MAX(DTFINPERCOT)
        INTO V_NRPEDIDOCOL, V_CDOPERADOR, V_DTINIPERCOT, V_DTFINPERCOT
        FROM PEDCOLETA P
       WHERE P.CDFILIAL    = P_CDFILIAL
         AND P.NRPEDCOLETA = P_NRPEDCOLETA
         AND P.CDREGIAO    = P_CDREGIAO
         AND P.CDFORNECED  = P_CDFORNECED;
      SELECT MAX(I.NRCOLEPRECO)
        INTO V_NRCOLEPRECO
        FROM ITEMCOLE I, COLETAPR C
       WHERE I.CDFILIAL    = P_CDFILIAL
         AND C.CDOPERADOR  = V_CDOPERADOR
         AND I.DTINIVALITM = V_DTINIPERCOT
         AND I.DTFINVALITM = V_DTFINPERCOT
         AND I.CDFILIAL    = C.CDFILIAL
         AND I.NRCOLEPRECO = C.NRCOLEPRECO;
   ELSE
      SELECT MAX(P.NRPEDIDOCOL), MAX(P.CDOPERADOR)
        INTO V_NRPEDIDOCOL, V_CDOPERADOR
        FROM PEDCOLETA P
       WHERE P.CDFILIAL    = P_CDFILIAL
         AND P.NRPEDCOLETA = P_NRPEDCOLETA
         AND P.CDREGIAO    = P_CDREGIAO
         AND P.CDFORNECED  = P_CDFORNECED;
      SELECT MAX(I.NRCOLEPRECO)
        INTO V_NRCOLEPRECO
        FROM ITEMCOLE I, COLETAPR C
       WHERE I.CDFILIAL    = P_CDFILIAL
         AND I.NRPEDIDOCOL = V_NRPEDIDOCOL
         AND I.CDFILIAL    = C.CDFILIAL
         AND I.NRCOLEPRECO = C.NRCOLEPRECO
         AND C.CDOPERADOR  = V_CDOPERADOR;
   END IF;     
  IF V_NRCOLEPRECO IS NULL THEN
     NOVO_CODIGO('COLETA'|| P_CDFILIAL, V_NRCOLEPRECO, 1);
     V_NRCOLEPRECO := SUBSTR(V_NRCOLEPRECO, 11, 10);
     V_IDSITUCOLETA := 'C';
     SELECT NVL(MAX(IDUTISTATCOT), 'N')
     INTO V_IDUTISTATCOT
     FROM PARASUPRI
     WHERE PARASUPRI.CDFILIAL = P_CDFILIAL;
     IF V_IDUTISTATCOT = 'S' THEN
        V_IDSITUCOLETA := 'A';
     END IF;
     INSERT INTO COLETAPR
        (CDFILIAL,     NRCOLEPRECO,  DTCOLEPREC,
         DTINIVALCOL,  DTFINVALCOL,  CDOPERADOR,
         IDTIPCOLREG,  NRSEMAINIC, NRSEMAFINAL, IDSITUCOLETA, IDDISMONTLIS, CDOPERINCL, DTINCLCOLET )
     SELECT
        CDFILIAL,      V_NRCOLEPRECO, TO_DATE(SYSDATE),
        DTINIPERCOT,   DTFINPERCOT,   CDOPERADOR,
        'W', P_NRSEMINI, P_NRSEMFIN, V_IDSITUCOLETA, P_ENTRALISTA, P_CDOPERINCL , TO_DATE(SYSDATE)
     FROM
        PEDCOLETA
     WHERE
        CDFILIAL    = P_CDFILIAL    AND
        CDREGIAO    = P_CDREGIAO    AND
        CDFORNECED  = P_CDFORNECED  AND
        NRPEDCOLETA = P_NRPEDCOLETA;
     V_APAGACOL := 'S';
  ELSE
     V_APAGACOL := 'N';
  END IF;
  V_GEROUREGISTRO := 'N';
  DELETE FROM LOGNGERAPEDCOL
  WHERE CDFILIAL    = P_CDFILIAL
    AND NRPEDCOLETA = P_NRPEDCOLETA
    AND CDREGIAO    = P_CDREGIAO
    AND CDFORNECED  = P_CDFORNECED;
  FOR C_PEDIDO IN
    (SELECT
       ITEMPEDCOL.CDPRODUTO,
       PRODUTO.CDARVPROD,
       ITEMPEDCOL.CDMARCA,
       ITEMPEDCOL.QTPRODPEDCOL,
       CASE NVL(ITEMPEDCOL.VRPRECREN, 0)
       	WHEN 0
       	THEN NVL(ITEMPEDCOL.VRITEMPEDCOL, 0)
       	ELSE ITEMPEDCOL.VRPRECREN
       END VRITEMPEDCOL,
       ITEMPEDCOL.VRPERDESPEDCOL,
       PEDCOLETA.DTINIPERCOT,
       PEDCOLETA.DTFINPERCOT,
       PEDCOLETA.CDFORNECED,
       PEDCOLETA.CDREGIAO,
       PEDCOLETA.DTPEDCOLETA,
       FORNECEDOR.IDSITUCADA,
       FORNECEDOR.CDQUALIF,
       FORNECEDOR.IDFORNAUTO,
       FORNECEDOR.DTVALQUALIF
     FROM
       ITEMPEDCOL,
       PRODUTO,
       FORNECEDOR,
       PEDCOLETA,
       LEILAO
     WHERE
       PEDCOLETA.CDLEILAO = LEILAO.CDLEILAO(+) AND
       PEDCOLETA.CDFORNECED = ITEMPEDCOL.CDFORNECED   AND
       PEDCOLETA.CDFILIAL = ITEMPEDCOL.CDFILIAL       AND
       PEDCOLETA.NRPEDCOLETA = ITEMPEDCOL.NRPEDCOLETA AND
       PEDCOLETA.CDREGIAO = ITEMPEDCOL.CDREGIAO       AND
       FORNECEDOR.CDFORNECED = PEDCOLETA.CDFORNECED   AND
       (((PEDCOLETA.CDLEILAO IS NOT NULL) /*AND (LEILAO.IDSITULEILAO = C)*/ AND (ITEMPEDCOL.IDSELELEILAO = 'S'))
        OR (PEDCOLETA.CDLEILAO IS NULL))  AND
       ITEMPEDCOL.CDPRODUTO   = PRODUTO.CDPRODUTO AND
       PEDCOLETA.CDFILIAL     = P_CDFILIAL    AND
       PEDCOLETA.NRPEDCOLETA  = P_NRPEDCOLETA AND
       PEDCOLETA.CDFORNECED   = P_CDFORNECED  AND
       PEDCOLETA.CDREGIAO     = P_CDREGIAO    AND
       ITEMPEDCOL.CDFILIAL    = PEDCOLETA.CDFILIAL    AND
       ITEMPEDCOL.NRPEDCOLETA = PEDCOLETA.NRPEDCOLETA AND
       ITEMPEDCOL.CDFORNECED  = PEDCOLETA.CDFORNECED  AND
       ITEMPEDCOL.CDREGIAO    = PEDCOLETA.CDREGIAO    AND
       ((NVL(ITEMPEDCOL.VRITEMPEDCOL,0) > 0)  OR (V_IDGRAVAITEMZERADO = 'S')))
  LOOP
    SELECT
       COUNT(*)
    INTO
       V_COUNT
    FROM ITEMCOLE
    WHERE ITEMCOLE.CDFILIAL    = P_CDFILIAL
      AND ITEMCOLE.NRCOLEPRECO = V_NRCOLEPRECO
      AND ITEMCOLE.CDMARCA     = C_PEDIDO.CDMARCA
      AND ITEMCOLE.CDREGIAO    = C_PEDIDO.CDREGIAO
      AND ITEMCOLE.CDFORNECED  = C_PEDIDO.CDFORNECED
      AND ITEMCOLE.CDPRODUTO   = C_PEDIDO.CDPRODUTO;
    IF V_COUNT = 0 THEN
       V_IDMOTNGERPEDCOL := '';
       /* IdMotivNDupl [1] = 1 Fornecedor inativo */
       IF C_PEDIDO.IDSITUCADA = 'I' THEN
          V_IDMOTNGERPEDCOL := V_IDMOTNGERPEDCOL||'1';
       ELSE
          V_IDMOTNGERPEDCOL := V_IDMOTNGERPEDCOL||'0';
       END IF;
       /* IdMotivNDupl [2] = 1 Fornecedor não atende à região */
       SELECT
          COUNT(*)
       INTO
          V_COUNT
       FROM
          REFOREG
       WHERE
          C_PEDIDO.CDREGIAO   = REFOREG.CDREGIAO   AND
          C_PEDIDO.CDFORNECED = REFOREG.CDFORNECED;
       IF V_COUNT <> 0 THEN
          V_IDMOTNGERPEDCOL := V_IDMOTNGERPEDCOL||'1';
       ELSE
          V_IDMOTNGERPEDCOL := V_IDMOTNGERPEDCOL||'0';
       END IF;
       /* IdMotivNDupl [3] = 1 Qualificação de produto por fornecedor */
       SELECT
          COUNT(*)
       INTO
          V_COUNT
       FROM
          QFOPRODFORN,
          PARASUPRI
       WHERE
          (PARASUPRI.CDFILIAL     = P_CDFILIAL)            AND
          (QFOPRODFORN.CDPRODUTO  = C_PEDIDO.CDPRODUTO)  AND
          (QFOPRODFORN.CDFORNECED = C_PEDIDO.CDFORNECED) AND
          ((QFOPRODFORN.IDFORNAPROV = 'N'    AND QFOPRODFORN.IDFORNAUTOR = 'N') OR
           ((QFOPRODFORN.IDFORNAPROV = 'S')  AND
              ((PARASUPRI.IDULTIDTVALQ = 'M' AND
                C_PEDIDO.DTPEDCOLETA > LAST_DAY(QFOPRODFORN.DTVALPRFORN)) OR
               (PARASUPRI.IDULTIDTVALQ = 'D' AND
                C_PEDIDO.DTPEDCOLETA > QFOPRODFORN.DTVALPRFORN)) ) );
       IF V_COUNT <> 0 THEN
          V_IDMOTNGERPEDCOL := V_IDMOTNGERPEDCOL||'1';
       ELSE
          V_IDMOTNGERPEDCOL := V_IDMOTNGERPEDCOL||'0';
       END IF;
       /* IdMotivNDupl [4] = 1 Qualificação de marca por produto */
       SELECT
          COUNT(*)
       INTO
          V_COUNT
       FROM
         QFOMARPROD,
         PARASUPRI
       WHERE
        (PARASUPRI.CDFILIAL   = P_CDFILIAL)           AND
        (QFOMARPROD.CDPRODUTO = C_PEDIDO.CDPRODUTO) AND
        (QFOMARPROD.CDMARCA   = C_PEDIDO.CDMARCA)   AND
        ((QFOMARPROD.IDAPRMARPRO = 'N' AND QFOMARPROD.IDAUTMARPRO = 'N') OR
         ((QFOMARPROD.IDAPRMARPRO = 'S') AND
            ((PARASUPRI.IDULTIDTVALQ = 'M' AND
              C_PEDIDO.DTPEDCOLETA > LAST_DAY(QFOMARPROD.DTVALAPROVA)) OR
             (PARASUPRI.IDULTIDTVALQ = 'D' AND
              C_PEDIDO.DTPEDCOLETA > QFOMARPROD.DTVALAPROVA))) );
       SELECT
          COUNT(*)
       INTO
          V_COUNTAUX
       FROM
          (SELECT
             QFOMARPROD.CDMARCA
           FROM
             QFOMARPROD
           WHERE
             QFOMARPROD.CDPRODUTO = C_PEDIDO.CDPRODUTO AND
             QFOMARPROD.CDMARCA   = C_PEDIDO.CDMARCA
           UNION
           SELECT
             PARASUPRI.CDMARCA
           FROM
             PARASUPRI
           WHERE
             PARASUPRI.CDFILIAL     = P_CDFILIAL AND
             (PARASUPRI.IDMARSEMQUA = 'N' OR PARASUPRI.IDMARSEMQUA IS NULL));
       IF (V_COUNT = 0) AND (V_COUNTAUX <> 0) THEN
          V_IDMOTNGERPEDCOL := V_IDMOTNGERPEDCOL||'0';
       ELSE
          V_IDMOTNGERPEDCOL := V_IDMOTNGERPEDCOL||'1';
       END IF;
       /* IdMotivNDupl [5] = 1 Qualificação de fornecedor */
       SELECT
          COUNT(*)
       INTO
          V_COUNT
       FROM
          QUALIFICACAO,
          PARASUPRI
       WHERE
          (C_PEDIDO.CDQUALIF       = QUALIFICACAO.CDQUALIF) AND
          (PARASUPRI.CDFILIAL        = P_CDFILIAL)            AND
          (C_PEDIDO.IDFORNAUTO     = 'N')                   AND
          ((QUALIFICACAO.IDPERCOTCMP = '2')                   OR
           ((PARASUPRI.IDULTIDTVALQ  = 'D'                    AND
             C_PEDIDO.DTFINPERCOT > C_PEDIDO.DTVALQUALIF)       OR
           (PARASUPRI.IDULTIDTVALQ = 'M'                      AND
             C_PEDIDO.DTFINPERCOT > LAST_DAY(C_PEDIDO.DTVALQUALIF))));
       IF V_COUNT <> 0 THEN
          V_IDMOTNGERPEDCOL := V_IDMOTNGERPEDCOL||'1';
       ELSE
          V_IDMOTNGERPEDCOL := V_IDMOTNGERPEDCOL||'0';
       END IF;
       /* IdMotivNDupl [6] = 1 Produto não cadastrado para o fornecedor */
       SELECT
          COUNT(*)
       INTO
          V_COUNT
       FROM
          PRODFORNCOMP
       WHERE
          (PRODFORNCOMP.CDPRODCOMPL = C_PEDIDO.CDPRODUTO)    AND
          (PRODFORNCOMP.CDFORNECED  = C_PEDIDO.CDFORNECED);
       IF V_COUNT = 0 THEN
          V_IDMOTNGERPEDCOL := V_IDMOTNGERPEDCOL||'1';
       ELSE
          V_IDMOTNGERPEDCOL := V_IDMOTNGERPEDCOL||'0';
       END IF;
       /* IdMotivNDupl [7] = 1 Marca Inativa */
       SELECT
          COUNT(*)
       INTO
          V_COUNT
       FROM
          MARCA
       WHERE MARCA.CDMARCA      = C_PEDIDO.CDMARCA
         AND MARCA.IDMARCAATIVA = 'I';
       IF V_COUNT <> 0 THEN
          V_IDMOTNGERPEDCOL := V_IDMOTNGERPEDCOL||'1';
       ELSE
          V_IDMOTNGERPEDCOL := V_IDMOTNGERPEDCOL||'0';
       END IF;
       V_IDMOTNGERPEDCOL := V_IDMOTNGERPEDCOL||'000';
       IF V_IDMOTNGERPEDCOL = '0000000000' THEN
          V_GEROUREGISTRO := 'S';
          V_APAGACOL := 'N';
          SELECT
            MAX(CDARVPROD),
            MAX(CDFORMPGTO),
            MAX(IDTPFORPGPRF),
            MAX(NRPARCPGTPRF),
            MAX(NRDIAPGFIPRF),
            MAX(IDUTDIAPGPRF) INTO V_CDPRODFORN,
                                   V_CDFORMPGTO,
                                   V_IDTPFORPGTO,
                                   V_NRPARCPGTO,
                                   V_NRDIAPGTO,
                                   V_IDUTDIAPGTO
          FROM
            PRODFORN,
            PRODUTO
          WHERE
            CDFORNECED = P_CDFORNECED AND
            PRODFORN.CDPRODUTO = PRODUTO.CDPRODUTO AND
            CDARVPROD  = (SELECT
                             MAX(P.CDARVPROD)
                          FROM
                             PRODFORN,
                             PRODUTO P
                          WHERE
                             P.CDPRODUTO = PRODFORN.CDPRODUTO AND
                             CDFORNECED = P_CDFORNECED   AND
                             C_PEDIDO.CDARVPROD LIKE P.CDARVPROD || '%');
          IF V_IDTPFORPGTO IS NULL THEN
             SELECT
                MAX(CDFORMPGTO),
                MAX(IDTPFORPGTFO),
                MAX(NRPARCPGTOFO),
                MAX(NRDIAPGFIXFO),
                MAX(IDUTDIAPGTFO) INTO V_CDFORMPGTO,
                                       V_IDTPFORPGTO,
                                       V_NRPARCPGTO,
                                       V_NRDIAPGTO,
                                       V_IDUTDIAPGTO
             FROM
                FORNECEDOR
             WHERE
                CDFORNECED = P_CDFORNECED;
             INSERT INTO ITEMCOLE
               (CDFILIAL,     NRCOLEPRECO,  CDFORNECED,    CDREGIAO,
                CDPRODUTO,    CDMARCA,      QTACMPITMCOL,  VRPRECUNIITM,
                DTINIVALITM,  DTFINVALITM,   IDTIPFREITM,
                CDTIPCOB,     VRPERDESITM,   CDFORMPGTO,
                IDTPFOPGTCOL, NRPARCPGTCOL, NRDIAPGFXCOL,  IDUTDIAPGCOL, NRPEDIDOCOL, CDOPERINCL, DTINCLITMCOL)
             VALUES(P_CDFILIAL, V_NRCOLEPRECO,  P_CDFORNECED,     P_CDREGIAO,
                    C_PEDIDO.CDPRODUTO,    C_PEDIDO.CDMARCA, C_PEDIDO.QTPRODPEDCOL,
                    C_PEDIDO.VRITEMPEDCOL, C_PEDIDO.DTINIPERCOT, C_PEDIDO.DTFINPERCOT,
                    V_IDTIPFRETE, V_CDTIPCOB, NVL(C_PEDIDO.VRPERDESPEDCOL, V_VRPERDESC), V_CDFORMPGTO, V_IDTPFORPGTO,
                    V_NRPARCPGTO, V_NRDIAPGTO, V_IDUTDIAPGTO, V_NRPEDIDOCOL, P_CDOPERINCL, TO_DATE(SYSDATE));
             DELETE PZOPGTITMCOL
             WHERE  NRCOLEPRECO  = V_NRCOLEPRECO AND
                    CDFORNECED   = P_CDFORNECED  AND
                    CDFILIAL     = P_CDFILIAL    AND
                    CDREGIAO     = P_CDREGIAO    AND
                    CDPRODUTO    = C_PEDIDO.CDPRODUTO  AND
                    CDMARCA      = C_PEDIDO.CDMARCA;
             INSERT INTO PZOPGTITMCOL
               (CDFILIAL, NRCOLEPRECO, CDFORNECED, CDPRODUTO,
                CDMARCA, CDREGIAO, NRDIASPGTCOL, VRPERCPGTCOL)
             SELECT
                P_CDFILIAL,
                V_NRCOLEPRECO,
                P_CDFORNECED,
                C_PEDIDO.CDPRODUTO,
                C_PEDIDO.CDMARCA,
                P_CDREGIAO,
                PRAZOPGTFORN.NRDIASPGTOFO,
                PRAZOPGTFORN.VRPERCPGTOFO
             FROM
                PRAZOPGTFORN
             WHERE
                PRAZOPGTFORN.CDFORNECED = P_CDFORNECED;
          ELSE
             INSERT INTO ITEMCOLE
               (CDFILIAL,     NRCOLEPRECO,  CDFORNECED,    CDREGIAO,
                CDPRODUTO,    CDMARCA,      QTACMPITMCOL,  VRPRECUNIITM,
                DTINIVALITM,  DTFINVALITM,   IDTIPFREITM,
                CDTIPCOB,     VRPERDESITM,   CDFORMPGTO,
                IDTPFOPGTCOL, NRPARCPGTCOL, NRDIAPGFXCOL,  IDUTDIAPGCOL, NRPEDIDOCOL, CDOPERINCL, DTINCLITMCOL)
             VALUES(P_CDFILIAL, V_NRCOLEPRECO,  P_CDFORNECED,     P_CDREGIAO,
                    C_PEDIDO.CDPRODUTO,    C_PEDIDO.CDMARCA, C_PEDIDO.QTPRODPEDCOL,
                    C_PEDIDO.VRITEMPEDCOL, C_PEDIDO.DTINIPERCOT, C_PEDIDO.DTFINPERCOT,
                    V_IDTIPFRETE, V_CDTIPCOB, NVL(C_PEDIDO.VRPERDESPEDCOL, V_VRPERDESC), V_CDFORMPGTO, V_IDTPFORPGTO,
                    V_NRPARCPGTO, V_NRDIAPGTO, V_IDUTDIAPGTO, V_NRPEDIDOCOL, P_CDOPERINCL, TO_DATE(SYSDATE));
             DELETE PZOPGTITMCOL
             WHERE  NRCOLEPRECO  = V_NRCOLEPRECO AND
                    CDFORNECED   = P_CDFORNECED  AND
                    CDFILIAL     = P_CDFILIAL    AND
                    CDREGIAO     = P_CDREGIAO    AND
                    CDPRODUTO    = C_PEDIDO.CDPRODUTO  AND
                    CDMARCA      = C_PEDIDO.CDMARCA;
            INSERT INTO PZOPGTITMCOL
              (CDFILIAL, NRCOLEPRECO, CDFORNECED, CDPRODUTO,
               CDMARCA, CDREGIAO, NRDIASPGTCOL, VRPERCPGTCOL)
            SELECT
              P_CDFILIAL,
              V_NRCOLEPRECO,
              P_CDFORNECED,
              C_PEDIDO.CDPRODUTO,
              C_PEDIDO.CDMARCA,
              P_CDREGIAO,
              PZOPGTPRFO.NRDIASPGPRFO,
              PZOPGTPRFO.VRPERCPGPRFO
            FROM
              PZOPGTPRFO,
              PRODUTO
            WHERE
              PZOPGTPRFO.CDPRODUTO = PRODUTO.CDPRODUTO AND
              CDFORNECED = P_CDFORNECED AND
              CDARVPROD  = V_CDPRODFORN;
          END IF;
          SELECT
             SUBSTR(EMITENTE(P_CDFILIAL, C_PEDIDO.CDPRODUTO, P_CDFORNECED), 3, 2) AS CDEMPRESA
          INTO
             V_CDEMPRESA
          FROM
             PARAMGERAL;
          SELECT
            MIN(INSCRESTAD.CDINSCESTA) INTO V_INSCESTA
          FROM
            EMPRESA,
            INSCRMUNICIP,
            INSCRESTAD
          WHERE
            EMPRESA.CDEMPRESA = V_CDEMPRESA            AND
            EMPRESA.CDEMPRESA = INSCRMUNICIP.CDEMPRESA AND
            EMPRESA.CDEMPRESA = INSCRESTAD.CDEMPRESA;
          V_DTIMPOSTO := TO_DATE(SYSDATE);
          IMPOSTO_ITEMCOL(V_CDEMPRESA, V_INSCESTA, P_CDFORNECED, P_CDFILIAL,
                          V_NRCOLEPRECO, P_CDFORNECED, P_CDREGIAO, C_PEDIDO.CDPRODUTO,
                          C_PEDIDO.CDMARCA, V_DTIMPOSTO);
       ELSE
          P_COTA_N_GER := 'S';
          INSERT INTO LOGNGERAPEDCOL
             (CDFILIAL,
              NRPEDCOLETA,
              CDFORNECED,
              CDREGIAO,
              CDPRODUTO,
              CDMARCA,
              IDMOTNGERPEDCOL)
          VALUES
             (P_CDFILIAL,
              P_NRPEDCOLETA,
              C_PEDIDO.CDFORNECED,
              C_PEDIDO.CDREGIAO,
              C_PEDIDO.CDPRODUTO,
              C_PEDIDO.CDMARCA,
              V_IDMOTNGERPEDCOL);
       END IF;
    END IF;
  END LOOP;
  /* Forçar execução da trigger - solução temporária */
  IF (V_GEROUREGISTRO = 'S') AND (V_APAGACOL = 'N') THEN
     UPDATE
       ITEMCOLE
     SET
       IDTPFOPGTCOL = IDTPFOPGTCOL
     WHERE
       CDFILIAL    = P_CDFILIAL AND
       NRCOLEPRECO = V_NRCOLEPRECO;
  END IF;
  IF V_APAGACOL = 'S' THEN
    DELETE
      COLETAPR
    WHERE
      CDFILIAL    = P_CDFILIAL AND
      NRCOLEPRECO = V_NRCOLEPRECO;
  END IF;
END;