/******************************************************************************/
/* Sistemas Integrados TECNISA                                                */
/*                                                                            */
/* Compras e Suprimentos                                                      */
/*                                                                            */
/******************************************************************************/
/*                                                                            */
/* Nome: 8370_SUPSTP_INCLUI_ITEMCOL_ACOMPRAR                                  */
/*                                                                            */
/* Descri��o:                                                                 */
/*    Seleciona os produtos a comprar para inclus�o dos itens de um cota��o   */
/*                                                                            */
/* Cria��o:                                                                   */
/* 27/04/2000 - Yoris L. de Souza                                             */
/*                                                                            */
/* Manuten��es:                                                               */
/*  19/05/2000 - Adriano de Ara�jo                                            */
/*     Mudan�a na verifica��o de produto/comprador: passou a ser verificada   */
/*     para cada produto selecionado do cursor de produtos a comprar.         */
/*                                                                            */
/******************************************************************************/

/******************************************************************************/
/* @C:\WIN_PRJ\SQL\ORACLE\8370_SUPSTP_INCLUI_ITEMCOL_ACOMPRAR.SQL             */
/******************************************************************************/

CREATE OR REPLACE PROCEDURE INCLUI_ITEMCOL_ACOMPRAR
                     (P_CDFILIAL    IN COLETAPR.CDFILIAL%TYPE,
                      P_CDFILIPROC  IN COLETAPR.CDFILIAL%TYPE,
                      P_NRCOLEPRECO IN COLETAPR.NRCOLEPRECO%TYPE,
                      P_DTINI       IN ITEMCOLE.DTINIVALITM%TYPE,
                      P_DTFIN       IN ITEMCOLE.DTFINVALITM%TYPE,
                      P_PRODINI     IN PRODUTO.CDARVPROD%TYPE DEFAULT NULL,
                      P_PRODFIN     IN PRODUTO.CDARVPROD%TYPE DEFAULT NULL,
                      P_CDREGIAO    IN VARCHAR2 DEFAULT NULL,
                      P_CDFORNECED  IN VARCHAR2 DEFAULT NULL,
                      P_CDMARCA     IN VARCHAR2 DEFAULT NULL,
                      P_CONSIST     IN VARCHAR2 DEFAULT NULL,
                      P_IDULTPREC   IN VARCHAR2 DEFAULT 'N',
                      P_CDOPERINCL  IN ITEMCOLE.CDOPERINCL%TYPE,
                      P_ROWSAFFECT  OUT VARCHAR2)
/*P_CONSIST:
  -> 0 = PRODCOMP
  -> 1 = QUALIFICACAO FORNECEDOR
  -> 2 = QFOPRODFORN
  -> 3 = QFOMARCPROD
*/
IS
 V_CDOPERADOR  COLETAPR.CDOPERADOR%TYPE;
 V_DTCOL       COLETAPR.DTCOLEPREC%TYPE;
 V_DTIMPOSTO   COLETAPR.DTCOLEPREC%TYPE;
 V_DTINIVALCOL COLETAPR.DTINIVALCOL%TYPE;
 V_DTFINVALCOL COLETAPR.DTFINVALCOL%TYPE;

 V_CDPRODUTO  ITEMCOLE.CDPRODUTO%TYPE;
 V_CDREGIAO   ITEMCOLE.CDREGIAO%TYPE;
 V_QTACOMPRAR PRODACOMPRAR.QTACOMPRAR%TYPE;

 V_TREGIAO   VARCHAR(1);
 V_TPRODUTO  VARCHAR(1);
 V_TFORNECED VARCHAR2(1);

 V_CTROWS INT;
 V_CTPRODS INT;

 V_QFOMARPROD  INT;
 V_IDMARSEMQUA INT;
 V_QFOPRODFORN INT;
 V_QFOFORN     INT;

 V_CONSIST VARCHAR2(2000);

 V_CTPRODCMP  NUMBER;
 V_CTITEMCOLE NUMBER;
 V_ULTPRECO   NUMBER;

 V_PGTO_CDFORMPGTO   PRODFORN.CDFORMPGTO%TYPE;
 V_PGTO_IDTPFORPGPRF PRODFORN.IDTPFORPGPRF%TYPE;
 V_PGTO_NRPARCPGTPRF PRODFORN.NRPARCPGTPRF%TYPE;
 V_PGTO_NRDIAPGFIPRF PRODFORN.NRDIAPGFIPRF%TYPE;
 V_PGTO_IDUTDIAPGPRF PRODFORN.IDUTDIAPGPRF%TYPE;

 V_PGTO_IDTPFORPGTFO FORNECEDOR.IDTPFORPGTFO%TYPE;
 V_PGTO_NRPARCPGTOFO FORNECEDOR.NRPARCPGTOFO%TYPE;
 V_PGTO_NRDIAPGFIXFO FORNECEDOR.NRDIAPGFIXFO%TYPE;
 V_PGTO_IDUTDIAPGTFO FORNECEDOR.IDUTDIAPGTFO%TYPE;
 V_PGTO_IDTPDESCFORN FORNECEDOR.IDTPDESCFORN%TYPE;
 V_PGTO_VRPEDESCFORN FORNECEDOR.VRPEDESCFORN%TYPE;
 V_PGTO_IDTPFRETFORN FORNECEDOR.IDTPFRETFORN%TYPE;

 V_CDEMPRESA     EMPRESA.CDEMPRESA%TYPE;
 V_INSCESTA      INSCRESTAD.CDINSCESTA%TYPE;

 V_IDCONSPRSOL PARASUPRI.IDCONSPRSOL%TYPE;

 CURSOR C_PRODACOMPRAR IS
   /* Busca os produtos a comprar*/
   (SELECT
       FILIAL.CDREGIAO,
       PRODACOMPRAR.CDPRODUTO,
       SUM(PRODACOMPRAR.QTACOMPRAR) AS QTACOMPRAR
    FROM
      (SELECT
          COMP.CDFILIAL, COMP.DTPROGENTR,
          COMP.CDPRODUTO,
          ROUND(COMP.QTDECOMP-DECODE(JACOMP.QTDECOMP/COMP.VRFATOCONV, NULL, 0, JACOMP.QTDECOMP/COMP.VRFATOCONV), 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
             DECODE(ITEMSOLI.IDITMCONS, NULL, 'N', ITEMSOLI.IDITMCONS) = 'N' AND
            (ITEMSOLI.CDPRODUTO = PRODUTO.CDPRODUTO) AND
            (PRODUTO.CDPRODESTO = ESTOQUE.CDPRODESTO) AND
            (PRODUTO.CDARVPROD BETWEEN P_PRODINI AND P_PRODFIN OR V_TPRODUTO = 'T') AND
            ITEMSOLI.DTPROGENTR BETWEEN P_DTINI AND P_DTFIN AND
            DECODE(ITEMSOLI.IDSOLIAPROV, NULL, 'S', ITEMSOLI.IDSOLIAPROV) = 'S'
           GROUP BY
            ITEMSOLI.CDFILSOLI,
            ITEMSOLI.DTPROGENTR,
            ESTOQUE.CDPRODUTO,
            ESTOQUE.CDPRODESTO,
            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
           (PRODUTO.CDARVPROD BETWEEN P_PRODINI AND P_PRODFIN OR V_TPRODUTO = 'T') AND
           (ITEMAUTF.DTENTRITMSOL BETWEEN P_DTINI AND P_DTFIN) AND
           (AUTOFORNE.IDSITUATUAAF IS NULL) AND
           (AUTOFORNE.IDAFFORALIM = 'N') AND
           (AUTOFORNE.IDAUTOFORNEX = 'N') AND
           DECODE(AUTOFORNE.IDBAIXAAF, NULL, '0', AUTOFORNE.IDBAIXAAF) <> '5'
          GROUP BY
           ITEMAUTF.CDFILDEST,
           ITEMAUTF.DTENTRITMSOL,
           PRODUTO.CDPRODESTO) JACOMP
       WHERE
          COMP.CDFILIAL = JACOMP.CDFILIAL (+) AND
          COMP.DTPROGENTR = JACOMP.DTENTRITMSOL (+) AND
          COMP.CDPRODESTO = JACOMP.CDPRODESTO (+) AND
          ROUND(COMP.QTDECOMP-DECODE(JACOMP.QTDECOMP/COMP.VRFATOCONV,NULL,0,JACOMP.QTDECOMP/COMP.VRFATOCONV), 5) > 0) PRODACOMPRAR, FILIAL, FILIAL FILI
    WHERE
      (FILIAL.CDFILCENTCMP = P_CDFILIAL OR
       FILIAL.CDFILIAL = P_CDFILIAL AND FILIAL.CDFILCENTCMP IS NULL) AND
      (P_CDREGIAO LIKE '%' || FILIAL.CDREGIAO || '%' OR V_TREGIAO = 'T') AND
       FILIAL.CDREGIAO IS NOT NULL AND
       FILIAL.CDFILIAL = PRODACOMPRAR.CDFILIAL AND

       FILI.CDFILIAL = P_CDFILIPROC AND
       ((FILI.IDFUNCAOFILI IS NULL) OR (FILI.IDFUNCAOFILI = 'O'))
    GROUP BY
      FILIAL.CDREGIAO,
      PRODACOMPRAR.CDPRODUTO)

    UNION ALL

   (SELECT
       FILIAL.CDREGIAO,
       PRODACOMPRAR.CDPRODUTO,
       SUM(PRODACOMPRAR.QTACOMPRAR) AS QTACOMPRAR
    FROM
      (SELECT
          COMP.CDFILIAL, COMP.DTPROGENTR,
          COMP.CDPRODUTO,
          ROUND(COMP.QTDECOMP-DECODE(JACOMP.QTDECOMP/COMP.VRFATOCONV,NULL,0,JACOMP.QTDECOMP/COMP.VRFATOCONV), 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
             DECODE(ITEMSOLI.IDITMCONS, NULL, 'N', ITEMSOLI.IDITMCONS) = 'N' AND
            (ITEMSOLI.CDPRODUTO = PRODUTO.CDPRODUTO) AND
            (PRODUTO.CDPRODESTO = ESTOQUE.CDPRODESTO) AND
            (PRODUTO.CDARVPROD BETWEEN P_PRODINI AND P_PRODFIN OR V_TPRODUTO = 'T') AND
            ITEMSOLI.DTPROGENTR BETWEEN P_DTINI AND P_DTFIN AND
            DECODE(ITEMSOLI.IDSOLIAPROV, NULL, 'S', ITEMSOLI.IDSOLIAPROV) = 'S'
           GROUP BY
            ITEMSOLI.CDFILSOLI,
            ITEMSOLI.DTPROGENTR,
            ESTOQUE.CDPRODUTO,
            ESTOQUE.CDPRODESTO,
            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
           (PRODUTO.CDARVPROD BETWEEN P_PRODINI AND P_PRODFIN OR V_TPRODUTO = 'T') AND
           (ITEMAUTF.DTENTRITMSOL BETWEEN P_DTINI AND P_DTFIN) AND
           (AUTOFORNE.IDSITUATUAAF IS NULL) AND
           (AUTOFORNE.IDAFFORALIM = 'N') AND
           (AUTOFORNE.IDAUTOFORNEX = 'N') AND
            DECODE(AUTOFORNE.IDBAIXAAF, NULL, '0', AUTOFORNE.IDBAIXAAF) <> '5'
          GROUP BY
           ITEMAUTF.CDFILDEST,
           ITEMAUTF.DTENTRITMSOL,
           PRODUTO.CDPRODESTO) JACOMP
       WHERE
          COMP.CDFILIAL = JACOMP.CDFILIAL (+) AND
          COMP.DTPROGENTR = JACOMP.DTENTRITMSOL (+) AND
          COMP.CDPRODESTO = JACOMP.CDPRODESTO (+) AND
          ROUND(COMP.QTDECOMP-DECODE(JACOMP.QTDECOMP/COMP.VRFATOCONV,NULL,0,JACOMP.QTDECOMP/COMP.VRFATOCONV), 5) > 0) PRODACOMPRAR, FILIAL, PRODUTO,

    (SELECT
        PARAMPRODSUP.CDREGIAO,
        PARAMPRODSUP.CDPRODUTO
     FROM
        PARAMPRODSUP,
        FILIAL
     WHERE
        FILIAL.CDFILIAL = P_CDFILIPROC AND
        FILIAL.IDFUNCAOFILI = 'C' AND
        FILIAL.CDFILIAL = PARAMPRODSUP.CDFILICTRL AND
        PARAMPRODSUP.IDFILINEGCOR = 'S'

     UNION ALL

     SELECT
        PARAMPRODSUP.CDREGIAO,
        PARAMPRODSUP.CDPRODUTO
     FROM
        PARAMPRODSUP,
        FILIAL
     WHERE
        FILIAL.CDFILIAL = P_CDFILIPROC AND
        FILIAL.IDFUNCAOFILI = 'R' AND
        FILIAL.CDFILIAL = PARAMPRODSUP.CDFILICTRL AND
        PARAMPRODSUP.IDFILINEGREG = 'S') PARAMPRODSUP
    WHERE
      (PRODUTO.CDPRODUTO = PRODACOMPRAR.CDPRODUTO) AND
      (FILIAL.CDFILCENTCMP = P_CDFILIAL OR
       FILIAL.CDFILIAL = P_CDFILIAL AND FILIAL.CDFILCENTCMP IS NULL) AND
      (P_CDREGIAO LIKE '%' || FILIAL.CDREGIAO || '%' OR V_TREGIAO = 'T') AND
      FILIAL.CDREGIAO IS NOT NULL AND
      FILIAL.CDFILIAL = PRODACOMPRAR.CDFILIAL AND

      PARAMPRODSUP.CDPRODUTO = PRODACOMPRAR.CDPRODUTO AND
      PARAMPRODSUP.CDREGIAO = FILIAL.CDREGIAO


    GROUP BY
      FILIAL.CDREGIAO,
      PRODACOMPRAR.CDPRODUTO);

 CURSOR C_PRODACOMPRAR_CONSPRSOL IS
   /* Busca os produtos a comprar considerando o parametro IDCONSPRSOL da PARASUPRI */
   (SELECT
       FILIAL.CDREGIAO,
       PRODACOMPRAR.CDPRODUTO,
       SUM(PRODACOMPRAR.QTACOMPRAR) AS QTACOMPRAR
    FROM
      (SELECT
          COMP.CDFILIAL, COMP.DTPROGENTR,
          COMP.CDPRODUTO,
          ROUND((COMP.QTDECOMP-DECODE(JACOMP.QTDECOMP,NULL,0,JACOMP.QTDECOMP)) / 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
             DECODE(ITEMSOLI.IDITMCONS, NULL, 'N', ITEMSOLI.IDITMCONS) = 'N' AND
            (ITEMSOLI.CDPRODUTO = PRODUTO.CDPRODUTO) AND
            (PRODUTO.CDARVPROD BETWEEN P_PRODINI AND P_PRODFIN OR V_TPRODUTO = 'T') AND
            ITEMSOLI.DTPROGENTR BETWEEN P_DTINI AND P_DTFIN AND
             DECODE(ITEMSOLI.IDSOLIAPROV, NULL, 'S', ITEMSOLI.IDSOLIAPROV) = 'S'
           GROUP BY
            ITEMSOLI.CDFILSOLI,
            ITEMSOLI.DTPROGENTR,
            PRODUTO.CDPRODUTO,
            PRODUTO.CDPRODESTO,
            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
           (PRODUTO.CDARVPROD BETWEEN P_PRODINI AND P_PRODFIN OR V_TPRODUTO = 'T') AND
           (ITEMAUTF.DTENTRITMSOL BETWEEN P_DTINI AND P_DTFIN) AND
           (AUTOFORNE.IDSITUATUAAF IS NULL) AND
           (AUTOFORNE.IDAFFORALIM = 'N') AND
           (AUTOFORNE.IDAUTOFORNEX = 'N') AND
            DECODE(AUTOFORNE.IDBAIXAAF, NULL, '0', AUTOFORNE.IDBAIXAAF) <> '5'
          GROUP BY
           ITEMAUTF.CDFILDEST,
           ITEMAUTF.DTENTRITMSOL,
           PRODUTO.CDPRODESTO) JACOMP
       WHERE
          COMP.CDFILIAL = JACOMP.CDFILIAL (+) AND
          COMP.DTPROGENTR = JACOMP.DTENTRITMSOL (+) AND
          COMP.CDPRODESTO = JACOMP.CDPRODESTO (+) AND
          ROUND((COMP.QTDECOMP-DECODE(JACOMP.QTDECOMP,NULL,0,JACOMP.QTDECOMP)) / COMP.VRFATOCONV, 5) > 0) PRODACOMPRAR, FILIAL, FILIAL FILI
    WHERE
      (FILIAL.CDFILCENTCMP = P_CDFILIAL OR
       FILIAL.CDFILIAL = P_CDFILIAL AND FILIAL.CDFILCENTCMP IS NULL) AND
      (P_CDREGIAO LIKE '%' || FILIAL.CDREGIAO || '%' OR V_TREGIAO = 'T') AND
       FILIAL.CDREGIAO IS NOT NULL AND
       FILIAL.CDFILIAL = PRODACOMPRAR.CDFILIAL AND

       FILI.CDFILIAL = P_CDFILIPROC AND
       ((FILI.IDFUNCAOFILI IS NULL) OR (FILI.IDFUNCAOFILI = 'O'))
    GROUP BY
      FILIAL.CDREGIAO,
      PRODACOMPRAR.CDPRODUTO)

    UNION ALL

   (SELECT
       FILIAL.CDREGIAO,
       PRODACOMPRAR.CDPRODUTO,
       SUM(PRODACOMPRAR.QTACOMPRAR) AS QTACOMPRAR
    FROM
      (SELECT
          COMP.CDFILIAL, COMP.DTPROGENTR,
          COMP.CDPRODUTO,
          ROUND((COMP.QTDECOMP-DECODE(JACOMP.QTDECOMP,NULL,0,JACOMP.QTDECOMP)) / 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
             DECODE(ITEMSOLI.IDITMCONS, NULL, 'N', ITEMSOLI.IDITMCONS) = 'N' AND
            (ITEMSOLI.CDPRODUTO = PRODUTO.CDPRODUTO) AND
            (PRODUTO.CDARVPROD BETWEEN P_PRODINI AND P_PRODFIN OR V_TPRODUTO = 'T') AND
             ITEMSOLI.DTPROGENTR BETWEEN P_DTINI AND P_DTFIN AND
             DECODE(ITEMSOLI.IDSOLIAPROV, NULL, 'S', ITEMSOLI.IDSOLIAPROV) = 'S'
           GROUP BY
            ITEMSOLI.CDFILSOLI,
            ITEMSOLI.DTPROGENTR,
            PRODUTO.CDPRODUTO,
            PRODUTO.CDPRODESTO,
            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
           (PRODUTO.CDARVPROD BETWEEN P_PRODINI AND P_PRODFIN OR V_TPRODUTO = 'T') AND
           (ITEMAUTF.DTENTRITMSOL BETWEEN P_DTINI AND P_DTFIN) AND
           (AUTOFORNE.IDSITUATUAAF IS NULL) AND
           (AUTOFORNE.IDAFFORALIM = 'N') AND
           (AUTOFORNE.IDAUTOFORNEX = 'N') AND
            DECODE(AUTOFORNE.IDBAIXAAF,NULL,'0',AUTOFORNE.IDBAIXAAF) <> '5'
          GROUP BY
           ITEMAUTF.CDFILDEST,
           ITEMAUTF.DTENTRITMSOL,
           PRODUTO.CDPRODESTO) JACOMP
       WHERE
          COMP.CDFILIAL = JACOMP.CDFILIAL (+) AND
          COMP.DTPROGENTR = JACOMP.DTENTRITMSOL (+) AND
          COMP.CDPRODESTO = JACOMP.CDPRODESTO (+) AND
          ROUND((COMP.QTDECOMP-DECODE(JACOMP.QTDECOMP,NULL,0,JACOMP.QTDECOMP)) / COMP.VRFATOCONV, 5) > 0) PRODACOMPRAR, FILIAL, PRODUTO,

    (SELECT
        PARAMPRODSUP.CDREGIAO,
        PARAMPRODSUP.CDPRODUTO
     FROM
        PARAMPRODSUP,
        FILIAL
     WHERE
        FILIAL.CDFILIAL = P_CDFILIPROC AND
        FILIAL.IDFUNCAOFILI = 'C' AND
        FILIAL.CDFILIAL = PARAMPRODSUP.CDFILICTRL AND
        PARAMPRODSUP.IDFILINEGCOR = 'S'

     UNION ALL

     SELECT
        PARAMPRODSUP.CDREGIAO,
        PARAMPRODSUP.CDPRODUTO
     FROM
        PARAMPRODSUP,
        FILIAL
     WHERE
        FILIAL.CDFILIAL = P_CDFILIPROC AND
        FILIAL.IDFUNCAOFILI = 'R' AND
        FILIAL.CDFILIAL = PARAMPRODSUP.CDFILICTRL AND
        PARAMPRODSUP.IDFILINEGREG = 'S') PARAMPRODSUP
    WHERE
      (PRODUTO.CDPRODUTO = PRODACOMPRAR.CDPRODUTO) AND
      (FILIAL.CDFILCENTCMP = P_CDFILIAL OR
       FILIAL.CDFILIAL = P_CDFILIAL AND FILIAL.CDFILCENTCMP IS NULL) AND
      (P_CDREGIAO LIKE '%' || FILIAL.CDREGIAO || '%' OR V_TREGIAO = 'T') AND
      FILIAL.CDREGIAO IS NOT NULL AND
      FILIAL.CDFILIAL = PRODACOMPRAR.CDFILIAL AND

      PARAMPRODSUP.CDPRODUTO = PRODACOMPRAR.CDPRODUTO AND
      PARAMPRODSUP.CDREGIAO = FILIAL.CDREGIAO


    GROUP BY
      FILIAL.CDREGIAO,
      PRODACOMPRAR.CDPRODUTO);
BEGIN
  V_CONSIST := P_CONSIST;
  V_CTROWS := 0;
  P_ROWSAFFECT := 'N';
  IF P_CDREGIAO IS NULL THEN
    V_TREGIAO := 'T';
  END IF;
  IF (P_PRODINI IS NULL) AND (P_PRODFIN IS NULL) THEN
    V_TPRODUTO := 'T';
  END IF;
  IF P_CDFORNECED IS NULL THEN
     V_TFORNECED := 'T';
  END IF;
  IF V_CONSIST IS NULL THEN
     V_CONSIST := ' ';
  END IF;

  SELECT
    MAX(CDOPERADOR),
    MAX(DTCOLEPREC),
    MAX(DTFINVALCOL) INTO V_CDOPERADOR,
                     V_DTCOL,
                     V_DTFINVALCOL
  FROM
    COLETAPR
  WHERE
    CDFILIAL    = P_CDFILIAL AND
    NRCOLEPRECO = P_NRCOLEPRECO;

  SELECT
     DECODE(MAX(IDCONSPRSOL),NULL,'N',MAX(IDCONSPRSOL)) INTO V_IDCONSPRSOL
  FROM
     PARASUPRI
  WHERE
     CDFILIAL = P_CDFILIAL;

  IF V_IDCONSPRSOL = 'S' THEN
     OPEN C_PRODACOMPRAR_CONSPRSOL;
  ELSE
     OPEN C_PRODACOMPRAR;
  END IF;

  LOOP
     IF V_IDCONSPRSOL = 'S' THEN
        FETCH C_PRODACOMPRAR_CONSPRSOL INTO V_CDREGIAO, V_CDPRODUTO, V_QTACOMPRAR;
        EXIT WHEN C_PRODACOMPRAR_CONSPRSOL%NOTFOUND;
     ELSE
        FETCH C_PRODACOMPRAR INTO V_CDREGIAO, V_CDPRODUTO, V_QTACOMPRAR;
        EXIT WHEN C_PRODACOMPRAR%NOTFOUND;
     END IF;

     FOR C_PRODFORN IN
      (SELECT
         PRODFORNCOMP.CDPRODCOMPL AS CDPRODUTO,
         PRODFORNCOMP.CDFORNECED,
         DECODE(FORN_REG.IDTPDESCFORN,
                'C', FORN_REG.VRPEDESCFORN,
                0) AS VRPEDESCFORN,
         PRODUTO.CDPRODESTO,
         FORN_REG.IDTPFRETFORN,
         DECODE(MARCPRODCOMP.CDMARCA,NULL,PARASUPRI.CDMARCA,MARCPRODCOMP.CDMARCA) AS CDMARCA,
         FORN_REG.CDREGIAO,
         PRODUTO.CDARVPROD
       FROM
         PRODUTO,
         PRODFORNCOMP,
         MARCPRODCOMP,
         FORN_REG,
         PARASUPRI
       WHERE
         PARASUPRI.CDFILIAL = P_CDFILIAL AND
         DECODE(PARASUPRI.IDUTLPROCMP,NULL,'N',PARASUPRI.IDUTLPROCMP) = 'S' AND
         PRODUTO.CDPRODUTO <> PRODUTO.CDPRODESTO AND
         PRODFORNCOMP.CDPRODCOMPL = V_CDPRODUTO AND
         (INSTR(P_CDFORNECED, FORN_REG.CDFORNECED) <> 0 OR V_TFORNECED = 'T')AND
         FORN_REG.CDREGIAO = V_CDREGIAO AND
         FORN_REG.CDFORNECED = PRODFORNCOMP.CDFORNECED  AND
         PRODUTO.CDPRODUTO = PRODFORNCOMP.CDPRODCOMPL AND
         DECODE(MARCPRODCOMP.CDMARCA,NULL,PARASUPRI.CDMARCA,MARCPRODCOMP.CDMARCA) IS NOT NULL AND
         PRODFORNCOMP.CDPRODCOMPL = MARCPRODCOMP.CDPRMARCOMPL(+) AND
         (INSTR(DECODE(P_CDMARCA,NULL,MARCPRODCOMP.CDMARCA(+),P_CDMARCA), MARCPRODCOMP.CDMARCA(+)) <> 0) AND
          DECODE(PRODUTO.IDPRODATIVPR,NULL,'S',PRODUTO.IDPRODATIVPR) = 'S'

       UNION ALL

       SELECT
         PRODFORNCOMP.CDPRODCOMPL AS CDPRODUTO,
         PRODFORNCOMP.CDFORNECED,
         DECODE(FORN_REG.IDTPDESCFORN,
                'C', FORN_REG.VRPEDESCFORN,
                0) AS VRPEDESCFORN,
         PRODUTO.CDPRODESTO,
         FORN_REG.IDTPFRETFORN,
         DECODE(MARCPRODCOMP.CDMARCA, NULL,PARASUPRI.CDMARCA,MARCPRODCOMP.CDMARCA) AS CDMARCA,
         FORN_REG.CDREGIAO,
         PRODUTO.CDARVPROD
       FROM
         PRODUTO,
         PRODFORNCOMP,
         MARCPRODCOMP,
         FORN_REG,
         PARASUPRI
       WHERE
         PARASUPRI.CDFILIAL = P_CDFILIAL AND
         DECODE(PARASUPRI.IDUTLPROCMP,NULL,'N',PARASUPRI.IDUTLPROCMP) = 'N' AND
         PRODFORNCOMP.CDPRODCOMPL = V_CDPRODUTO AND
         (INSTR(P_CDFORNECED, FORN_REG.CDFORNECED) <> 0 OR V_TFORNECED = 'T')AND
         FORN_REG.CDREGIAO = V_CDREGIAO AND
         FORN_REG.CDFORNECED = PRODFORNCOMP.CDFORNECED  AND
         PRODUTO.CDPRODUTO = PRODFORNCOMP.CDPRODCOMPL AND
         DECODE(MARCPRODCOMP.CDMARCA, NULL, PARASUPRI.CDMARCA, MARCPRODCOMP.CDMARCA) IS NOT NULL AND
         PRODFORNCOMP.CDPRODCOMPL = MARCPRODCOMP.CDPRMARCOMPL(+) AND
         INSTR(DECODE(P_CDMARCA, NULL, MARCPRODCOMP.CDMARCA(+), P_CDMARCA), MARCPRODCOMP.CDMARCA(+))<> 0 AND
          DECODE(PRODUTO.IDPRODATIVPR, NULL, 'S', PRODUTO.IDPRODATIVPR) = 'S') LOOP

       IF INSTR(V_CONSIST, '0') <> 0 THEN
          SELECT
            COUNT(*) INTO V_CTPRODS
          FROM
            PRODCOMP, PRODUTO
          WHERE
             (PRODCOMP.CDPRODUTO  = PRODUTO.CDPRODUTO) AND
             (PRODCOMP.CDOPERADOR = V_CDOPERADOR)      AND
             (C_PRODFORN.CDARVPROD LIKE PRODUTO.CDARVPROD || '%');
       ELSE
          V_CTPRODS := 1;
       END IF;

       IF V_CTPRODS > 0 THEN

         IF INSTR(V_CONSIST, '1') <> 0 THEN
            SELECT COUNT(*) INTO V_QFOFORN   /* NOT EXISTS */
            FROM QUALIFICACAO, PARASUPRI, FORNECEDOR
            WHERE (FORNECEDOR.CDFORNECED     = C_PRODFORN.CDFORNECED)          AND
                  (FORNECEDOR.CDQUALIF       = QUALIFICACAO.CDQUALIF) AND
                  (PARASUPRI.CDFILIAL        = P_CDFILIAL)            AND
                  (FORNECEDOR.IDFORNAUTO     = 'N')                   AND
                  ((QUALIFICACAO.IDPERCOTCMP = '2')                   OR
                   ((PARASUPRI.IDULTIDTVALQ  = 'D'                    AND
                     V_DTFINVALCOL > FORNECEDOR.DTVALQUALIF)    OR
                   (PARASUPRI.IDULTIDTVALQ = 'M'                      AND
                    V_DTFINVALCOL > LAST_DAY(FORNECEDOR.DTVALQUALIF))));

         ELSE
            V_QFOFORN := 0;
         END IF;

         IF INSTR(V_CONSIST, '3') <> 0 THEN
           SELECT
              COUNT(*) INTO V_QFOMARPROD /* NOT EXISTS */
           FROM
              QFOMARPROD,
              PARASUPRI
           WHERE
             PARASUPRI.CDFILIAL = P_CDFILIAL  AND
             (QFOMARPROD.CDPRODUTO = C_PRODFORN.CDPRODUTO) AND
             (QFOMARPROD.CDMARCA   = C_PRODFORN.CDMARCA  ) AND
             ((QFOMARPROD.IDAPRMARPRO = 'N' AND QFOMARPROD.IDAUTMARPRO = 'N') OR
              ((QFOMARPROD.IDAPRMARPRO = 'S') AND
                 ((PARASUPRI.IDULTIDTVALQ = 'M' AND
                   V_DTCOL > LAST_DAY(QFOMARPROD.DTVALAPROVA)) OR
                  (PARASUPRI.IDULTIDTVALQ = 'D' AND
                   V_DTCOL > QFOMARPROD.DTVALAPROVA)) ) );

           SELECT
             COUNT(*) INTO V_IDMARSEMQUA
           FROM
             QFOMARPROD
           WHERE
             QFOMARPROD.CDPRODUTO = C_PRODFORN.CDPRODUTO AND
             QFOMARPROD.CDMARCA   = C_PRODFORN.CDMARCA;

           IF V_IDMARSEMQUA = 0 THEN
             SELECT
               COUNT(*) INTO V_IDMARSEMQUA
             FROM
               PARASUPRI
             WHERE
               PARASUPRI.CDFILIAL    = P_CDFILIAL AND
               (PARASUPRI.IDMARSEMQUA = 'N' OR PARASUPRI.IDMARSEMQUA IS NULL);
           END IF;
         ELSE
            V_QFOMARPROD  := 0;
            V_IDMARSEMQUA := 1;
         END IF;

         IF INSTR(V_CONSIST, '2') <> 0 THEN
           SELECT
              COUNT(*) INTO V_QFOPRODFORN /* NOT EXISTS */
           FROM
              QFOPRODFORN,
              PARASUPRI
           WHERE
             PARASUPRI.CDFILIAL = P_CDFILIAL  AND
             (QFOPRODFORN.CDPRODUTO = C_PRODFORN.CDPRODUTO) AND
             (QFOPRODFORN.CDFORNECED= C_PRODFORN.CDFORNECED) AND
             ((QFOPRODFORN.IDFORNAPROV = 'N' AND QFOPRODFORN.IDFORNAUTOR = 'N') OR
              ((QFOPRODFORN.IDFORNAPROV = 'S') AND
                 ((PARASUPRI.IDULTIDTVALQ = 'M' AND
                   V_DTCOL > LAST_DAY(QFOPRODFORN.DTVALPRFORN)) OR
                  (PARASUPRI.IDULTIDTVALQ = 'D' AND
                   V_DTCOL > QFOPRODFORN.DTVALPRFORN)) ) );
         ELSE
            V_QFOPRODFORN := 0;
         END IF;

         IF (V_QFOMARPROD  = 0) AND
            (V_IDMARSEMQUA > 0) AND
            (V_QFOPRODFORN = 0) AND
            (V_QFOFORN     = 0) THEN
           SELECT COUNT(*) INTO V_CTITEMCOLE
           FROM ITEMCOLE
           WHERE
              ITEMCOLE.CDFILIAL = P_CDFILIAL AND
              ITEMCOLE.NRCOLEPRECO = P_NRCOLEPRECO AND
              ITEMCOLE.CDMARCA = C_PRODFORN.CDMARCA AND
              ITEMCOLE.CDREGIAO = C_PRODFORN.CDREGIAO AND
              ITEMCOLE.CDFORNECED = C_PRODFORN.CDFORNECED AND
              ITEMCOLE.CDPRODUTO = C_PRODFORN.CDPRODUTO;
           IF V_CTITEMCOLE = 0 THEN
              V_ULTPRECO := NULL;
              IF P_IDULTPREC = 'S' THEN
                 SELECT MIN(A.VRPRECUNIITM) INTO V_ULTPRECO
                 FROM ITEMCOLE A
                 WHERE
                    A.CDFILIAL = P_CDFILIAL AND
                    A.CDMARCA = C_PRODFORN.CDMARCA AND
                    A.CDREGIAO = C_PRODFORN.CDREGIAO AND
                    A.CDFORNECED = C_PRODFORN.CDFORNECED AND
                    A.CDPRODUTO = C_PRODFORN.CDPRODUTO AND
                    A.VRPRECUNIITM > 0 AND
                    A.DTFINVALITM = (SELECT MAX(ITEMCOLE.DTFINVALITM)
                                     FROM ITEMCOLE
                                     WHERE
                                        ITEMCOLE.CDFILIAL = P_CDFILIAL AND
                                        ITEMCOLE.CDMARCA = C_PRODFORN.CDMARCA AND
                                        ITEMCOLE.CDREGIAO = C_PRODFORN.CDREGIAO AND
                                        ITEMCOLE.CDFORNECED = C_PRODFORN.CDFORNECED AND
                                        ITEMCOLE.VRPRECUNIITM > 0 AND
                                        ITEMCOLE.CDPRODUTO = C_PRODFORN.CDPRODUTO);
              END IF;
              IF V_ULTPRECO IS NULL THEN
                 V_ULTPRECO := 0;
              END IF;
              INSERT INTO ITEMCOLE
                (CDFILIAL, NRCOLEPRECO, DTINIVALITM,
                 DTFINVALITM, VRPRECUNIITM, VRPRECECOITM,
                  CDPRODUTO, CDMARCA, CDFORNECED, CDREGIAO, QTACMPITMCOL,
                  VRPERDESITM, IDTIPFREITM, CDOPERINCL, DTINCLITMCOL)
              VALUES(P_CDFILIAL, P_NRCOLEPRECO, P_DTINI,
                     P_DTFIN, V_ULTPRECO, 0, C_PRODFORN.CDPRODUTO,
                     C_PRODFORN.CDMARCA, C_PRODFORN.CDFORNECED,
                     C_PRODFORN.CDREGIAO, V_QTACOMPRAR,
                     C_PRODFORN.VRPEDESCFORN, C_PRODFORN.IDTPFRETFORN, P_CDOPERINCL, SYSDATE);
              V_CTROWS := V_CTROWS + 1;
              IF V_ULTPRECO > 0 THEN
                 SELECT
                    MAX(PRODFORN.CDFORMPGTO),
                    MAX(PRODFORN.IDTPFORPGPRF),
                    MAX(PRODFORN.NRPARCPGTPRF),
                    MAX(PRODFORN.NRDIAPGFIPRF),
                    MAX(PRODFORN.IDUTDIAPGPRF)
                 INTO
                    V_PGTO_CDFORMPGTO,
                    V_PGTO_IDTPFORPGPRF,
                    V_PGTO_NRPARCPGTPRF,
                    V_PGTO_NRDIAPGFIPRF,
                    V_PGTO_IDUTDIAPGPRF
                 FROM
                   PRODFORN, PRODUTO
                 WHERE
                   PRODFORN.CDPRODUTO  = PRODUTO.CDPRODUTO     AND
                   PRODFORN.CDFORNECED = C_PRODFORN.CDFORNECED AND
                   PRODUTO.CDARVPROD   = (SELECT MAX(PRODUTO.CDARVPROD)
                                          FROM PRODFORN, PRODUTO
                                          WHERE
                                          PRODFORN.CDPRODUTO   = PRODUTO.CDPRODUTO AND
                                          PRODFORN.CDFORNECED  = C_PRODFORN.CDFORNECED AND
                                          C_PRODFORN.CDARVPROD LIKE PRODUTO.CDARVPROD || '%');

                 IF V_PGTO_IDTPFORPGPRF IS NULL THEN
                    SELECT
                       MAX(CDFORMPGTO),
                       MAX(IDTPFORPGTFO),
                       MAX(NRPARCPGTOFO),
                       MAX(NRDIAPGFIXFO),
                       MAX(IDUTDIAPGTFO),
                       MAX(IDTPDESCFORN),
                       MAX(VRPEDESCFORN),
                       MAX(IDTPFRETFORN)
                    INTO
                       V_PGTO_CDFORMPGTO,
                       V_PGTO_IDTPFORPGTFO,
                       V_PGTO_NRPARCPGTOFO,
                       V_PGTO_NRDIAPGFIXFO,
                       V_PGTO_IDUTDIAPGTFO,
                       V_PGTO_IDTPDESCFORN,
                       V_PGTO_VRPEDESCFORN,
                       V_PGTO_IDTPFRETFORN
                    FROM
                       FORNECEDOR
                    WHERE
                       CDFORNECED = C_PRODFORN.CDFORNECED;

                    UPDATE ITEMCOLE
                    SET
                       CDFORMPGTO   = V_PGTO_CDFORMPGTO,
                       IDTPFOPGTCOL = V_PGTO_IDTPFORPGTFO,
                       NRDIAPGFXCOL = V_PGTO_NRDIAPGFIXFO,
                       NRPARCPGTCOL = V_PGTO_NRPARCPGTOFO,
                       IDUTDIAPGCOL = V_PGTO_IDUTDIAPGTFO
                    WHERE
                       CDFILIAL    = P_CDFILIAL   AND
                       NRCOLEPRECO = P_NRCOLEPRECO AND
                       CDPRODUTO   = C_PRODFORN.CDPRODUTO  AND
                       CDMARCA     = C_PRODFORN.CDMARCA    AND
                       CDFORNECED  = C_PRODFORN.CDFORNECED AND
                       CDREGIAO    = C_PRODFORN.CDREGIAO;
                    IF V_PGTO_IDTPFORPGTFO = 'V' THEN
                       INSERT INTO PZOPGTITMCOL
                         (CDFILIAL, NRCOLEPRECO, CDFORNECED, CDPRODUTO,
                         CDMARCA, CDREGIAO, NRDIASPGTCOL, VRPERCPGTCOL)
                       SELECT
                          P_CDFILIAL,
                          P_NRCOLEPRECO,
                          C_PRODFORN.CDFORNECED,
                          C_PRODFORN.CDPRODUTO,
                          C_PRODFORN.CDMARCA,
                          C_PRODFORN.CDREGIAO,
                          PRAZOPGTFORN.NRDIASPGTOFO,
                          PRAZOPGTFORN.VRPERCPGTOFO
                       FROM
                          PRAZOPGTFORN
                       WHERE
                          PRAZOPGTFORN.CDFORNECED = C_PRODFORN.CDFORNECED AND
                          NOT EXISTS (SELECT P_CDFILIAL
                                      FROM PZOPGTITMCOL
                                      WHERE PZOPGTITMCOL.CDFILIAL    = P_CDFILIAL AND
                                            PZOPGTITMCOL.NRCOLEPRECO = P_NRCOLEPRECO AND
                                            PZOPGTITMCOL.CDFORNECED  = C_PRODFORN.CDFORNECED AND
                                            PZOPGTITMCOL.CDPRODUTO   = C_PRODFORN.CDPRODUTO AND
                                            PZOPGTITMCOL.CDMARCA     = C_PRODFORN.CDMARCA AND
                                            PZOPGTITMCOL.CDREGIAO    = C_PRODFORN.CDREGIAO);
                    END IF;
                 ELSE
                    UPDATE ITEMCOLE
                    SET
                       CDFORMPGTO   = V_PGTO_CDFORMPGTO,
                       IDTPFOPGTCOL = V_PGTO_IDTPFORPGPRF,
                       NRDIAPGFXCOL = V_PGTO_NRDIAPGFIPRF,
                       NRPARCPGTCOL = V_PGTO_NRPARCPGTPRF,
                       IDUTDIAPGCOL = V_PGTO_IDUTDIAPGPRF
                    WHERE
                       CDFILIAL    = P_CDFILIAL   AND
                       NRCOLEPRECO = P_NRCOLEPRECO AND
                       CDPRODUTO   = C_PRODFORN.CDPRODUTO  AND
                       CDMARCA     = C_PRODFORN.CDMARCA    AND
                       CDFORNECED  = C_PRODFORN.CDFORNECED AND
                       CDREGIAO    = C_PRODFORN.CDREGIAO;
                    IF V_PGTO_IDTPFORPGPRF = 'V' THEN
                       INSERT INTO PZOPGTITMCOL
                         (CDFILIAL, NRCOLEPRECO, CDFORNECED, CDPRODUTO,
                         CDMARCA, CDREGIAO, NRDIASPGTCOL, VRPERCPGTCOL)

                       SELECT
                          P_CDFILIAL,
                          P_NRCOLEPRECO,
                          C_PRODFORN.CDFORNECED,
                          C_PRODFORN.CDPRODUTO,
                          C_PRODFORN.CDMARCA,
                          C_PRODFORN.CDREGIAO,
                          PZOPGTPRFO.NRDIASPGPRFO,
                          PZOPGTPRFO.VRPERCPGPRFO
                       FROM
                          PZOPGTPRFO, PRODUTO
                       WHERE
                          PZOPGTPRFO.CDPRODUTO  = PRODUTO.CDPRODUTO     AND
                          PZOPGTPRFO.CDFORNECED = C_PRODFORN.CDFORNECED AND
                          C_PRODFORN.CDARVPROD LIKE PRODUTO.CDARVPROD || '%' AND
                          NOT EXISTS (SELECT P_CDFILIAL
                                      FROM PZOPGTITMCOL
                                      WHERE PZOPGTITMCOL.CDFILIAL    = P_CDFILIAL AND
                                            PZOPGTITMCOL.NRCOLEPRECO = P_NRCOLEPRECO AND
                                            PZOPGTITMCOL.CDFORNECED  = C_PRODFORN.CDFORNECED AND
                                            PZOPGTITMCOL.CDPRODUTO   = C_PRODFORN.CDPRODUTO AND
                                            PZOPGTITMCOL.CDMARCA     = C_PRODFORN.CDMARCA AND
                                            PZOPGTITMCOL.CDREGIAO    = C_PRODFORN.CDREGIAO);
                    END IF;
                 END IF;

                 SELECT
                    MAX(SUBSTR(EMITENTE(P_CDFILIAL, C_PRODFORN.CDPRODUTO, C_PRODFORN.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 := NVL(V_DTCOL, TO_DATE(SYSDATE));
                 IMPOSTO_ITEMCOL(V_CDEMPRESA, V_INSCESTA, C_PRODFORN.CDFORNECED, P_CDFILIAL,
                                 P_NRCOLEPRECO, C_PRODFORN.CDFORNECED, C_PRODFORN.CDREGIAO, C_PRODFORN.CDPRODUTO,
                                 C_PRODFORN.CDMARCA, V_DTIMPOSTO);

              END IF;
           END IF;
         END IF;
       END IF;
       COMMIT;
     END LOOP;
  END LOOP;
  IF V_IDCONSPRSOL = 'S' THEN
     CLOSE C_PRODACOMPRAR_CONSPRSOL;
  ELSE
     CLOSE C_PRODACOMPRAR;
  END IF;
  IF V_CTROWS > 0 THEN
    P_ROWSAFFECT := 'S';
  END IF;
END;
/

-- VERSAO --
BEGIN ATUVEROBJ('INCLUI_ITEMCOL_ACOMPRAR','5.07.004'); END;
/

