DECLARE
   V_DTCOLEPREC DATE;
   V_CDEMPRESA  VARCHAR2(02);
   V_CDINSCMUNI VARCHAR2(16);
   V_CDINSCESTA VARCHAR2(16);
BEGIN
   FOR C_ITEMCOLE IN
      (SELECT
          ITEMCOLE.CDFILIAL,
          ITEMCOLE.NRCOLEPRECO,
          ITEMCOLE.CDPRODUTO,
          ITEMCOLE.CDFORNECED,
          ITEMCOLE.CDREGIAO,
          ITEMCOLE.CDMARCA,
          PRODUTO.CDARVPROD
       FROM
          ITEMCOLE,
          PRODUTO
       WHERE
          ITEMCOLE.DTFINVALITM >= TRUNC(SYSDATE) AND
          ITEMCOLE.CDPRODUTO = PRODUTO.CDPRODUTO)
   LOOP
      SELECT DTCOLEPREC INTO V_DTCOLEPREC
      FROM COLETAPR
      WHERE CDFILIAL = C_ITEMCOLE.CDFILIAL AND
            NRCOLEPRECO = C_ITEMCOLE.NRCOLEPRECO;

      SELECT
         MAX(EMITENTEAF.CDEMPRESA) INTO V_CDEMPRESA
      FROM
         EMITENTEAF, PRODUTO
      WHERE
         EMITENTEAF.CDPRODUTO = PRODUTO.CDPRODUTO AND
         EMITENTEAF.CDFILIAL = C_ITEMCOLE.CDFILIAL AND
         C_ITEMCOLE.CDARVPROD LIKE PRODUTO.CDARVPROD || '%';

      IF V_CDEMPRESA IS NULL THEN
         SELECT
            MAX(PARCMPSUP.CDEMPRESA) INTO V_CDEMPRESA
         FROM
            PARCMPSUP
         WHERE
            PARCMPSUP.CDFILIAL = C_ITEMCOLE.CDFILIAL;
      END IF;

      SELECT
         MAX(EMPRESA.CDEMPRESA),
         MIN(INSCRMUNICIP.CDINSCMUNI) AS CDINSCMUNI,
         MIN(INSCRESTAD.CDINSCESTA)   AS CDINSCESTA
      INTO
         V_CDEMPRESA, V_CDINSCMUNI, V_CDINSCESTA
      FROM
         EMPRESA,
         INSCRMUNICIP,
         INSCRESTAD
      WHERE
         EMPRESA.CDEMPRESA = V_CDEMPRESA           AND
         EMPRESA.CDEMPRESA = INSCRMUNICIP.CDEMPRESA AND
         EMPRESA.CDEMPRESA = INSCRESTAD.CDEMPRESA;

      IMPOSTO_ITEMCOL(V_CDEMPRESA,            V_CDINSCESTA,          C_ITEMCOLE.CDFORNECED, C_ITEMCOLE.CDFILIAL,
                      C_ITEMCOLE.NRCOLEPRECO, C_ITEMCOLE.CDFORNECED, C_ITEMCOLE.CDREGIAO,   C_ITEMCOLE.CDPRODUTO,
                      C_ITEMCOLE.CDMARCA,     V_DTCOLEPREC);
      UPDATE ITEMCOLE
      SET VRPRECUNIITM = VRPRECUNIITM
      WHERE
        CDFILIAL    = C_ITEMCOLE.CDFILIAL     AND
        NRCOLEPRECO = C_ITEMCOLE.NRCOLEPRECO  AND
        CDREGIAO    = C_ITEMCOLE.CDREGIAO     AND
        CDFORNECED  = C_ITEMCOLE.CDFORNECED   AND
        CDPRODUTO   = C_ITEMCOLE.CDPRODUTO    AND
        CDMARCA     = C_ITEMCOLE.CDMARCA;
      COMMIT;
   END LOOP;
END;
/
