DECLARE 
  V_CDFORMPGTO   VARCHAR2(2);
  V_IDTPFORPGTFO VARCHAR2(1);
  V_NRDIAPGFIXFO NUMBER(2);
  V_NRPARCPGTOFO NUMBER(2);
  V_IDUTDIAPGTFO VARCHAR2(1);
BEGIN
  FOR C_ITEMCOLE IN
  (SELECT
    CDFILIAL,
    NRCOLEPRECO,
    CDFORNECED,
    CDREGIAO,
    CDPRODUTO,
    CDMARCA,
    VRPRECUNIITM,
    VRPRECECOITM
  FROM
    ITEMCOLE
  WHERE
    (NVL(VRPRECECOITM,0) = 0 AND VRPRECUNIITM > 0) OR
    (ITEMCOLE.CDFORMPGTO IS NOT NULL AND
    NOT EXISTS(SELECT CDFILIAL
               FROM PZOPGTITMCOL
               WHERE ITEMCOLE.CDFILIAL    = PZOPGTITMCOL.CDFILIAL AND
                     ITEMCOLE.NRCOLEPRECO = PZOPGTITMCOL.NRCOLEPRECO AND
                     ITEMCOLE.CDREGIAO    = PZOPGTITMCOL.CDREGIAO AND
                     ITEMCOLE.CDFORNECED  = PZOPGTITMCOL.CDFORNECED AND
                     ITEMCOLE.CDPRODUTO   = PZOPGTITMCOL.CDPRODUTO AND
                     ITEMCOLE.CDMARCA     = PZOPGTITMCOL.CDMARCA)) )
  LOOP
    UPDATE ITEMCOLE
    SET
      CDFORMPGTO    = NULL,
      IDTPFOPGTCOL  = NULL,
      NRDIAPGFXCOL  = NULL,
      NRPARCPGTCOL  = NULL,
      IDUTDIAPGCOL  = NULL
    WHERE
      CDFILIAL    = C_ITEMCOLE.CDFILIAL     AND
      NRCOLEPRECO = C_ITEMCOLE.NRCOLEPRECO  AND
      CDFORNECED  = C_ITEMCOLE.CDFORNECED   AND
      CDREGIAO    = C_ITEMCOLE.CDREGIAO     AND
      CDPRODUTO   = C_ITEMCOLE.CDPRODUTO    AND
      CDMARCA     = C_ITEMCOLE.CDMARCA;
    DELETE FROM PZOPGTITMCOL
    WHERE
      CDFILIAL    = C_ITEMCOLE.CDFILIAL     AND
      NRCOLEPRECO = C_ITEMCOLE.NRCOLEPRECO  AND
      CDFORNECED  = C_ITEMCOLE.CDFORNECED   AND
      CDREGIAO    = C_ITEMCOLE.CDREGIAO     AND
      CDPRODUTO   = C_ITEMCOLE.CDPRODUTO    AND
      CDMARCA     = C_ITEMCOLE.CDMARCA;
    INSERT INTO PZOPGTITMCOL
      (CDFILIAL, NRCOLEPRECO, CDFORNECED, CDPRODUTO,
      CDMARCA, CDREGIAO, NRDIASPGTCOL, VRPERCPGTCOL)
    SELECT
       C_ITEMCOLE.CDFILIAL,
       C_ITEMCOLE.NRCOLEPRECO,
       C_ITEMCOLE.CDFORNECED,
       C_ITEMCOLE.CDPRODUTO,
       C_ITEMCOLE.CDMARCA,
       C_ITEMCOLE.CDREGIAO,
       PRAZOPGTFORN.NRDIASPGTOFO,
       PRAZOPGTFORN.VRPERCPGTOFO
    FROM
       PRAZOPGTFORN
    WHERE
       PRAZOPGTFORN.CDFORNECED = C_ITEMCOLE.CDFORNECED;
    SELECT
      CDFORMPGTO,
      IDTPFORPGTFO,
      NRDIAPGFIXFO,
      NRPARCPGTOFO,
      IDUTDIAPGTFO INTO
         V_CDFORMPGTO,
         V_IDTPFORPGTFO,
         V_NRDIAPGFIXFO,
         V_NRPARCPGTOFO,
         V_IDUTDIAPGTFO
    FROM
      FORNECEDOR
    WHERE
      CDFORNECED = C_ITEMCOLE.CDFORNECED;
    UPDATE ITEMCOLE
    SET
      ITEMCOLE.CDFORMPGTO    = V_CDFORMPGTO,
      ITEMCOLE.IDTPFOPGTCOL  = V_IDTPFORPGTFO,
      ITEMCOLE.NRDIAPGFXCOL  = V_NRDIAPGFIXFO,
      ITEMCOLE.NRPARCPGTCOL  = V_NRPARCPGTOFO,
      ITEMCOLE.IDUTDIAPGCOL  = V_IDUTDIAPGTFO
    WHERE
      ITEMCOLE.CDFILIAL    = C_ITEMCOLE.CDFILIAL     AND
      ITEMCOLE.NRCOLEPRECO = C_ITEMCOLE.NRCOLEPRECO  AND
      ITEMCOLE.CDFORNECED  = C_ITEMCOLE.CDFORNECED   AND
      ITEMCOLE.CDREGIAO    = C_ITEMCOLE.CDREGIAO     AND
      ITEMCOLE.CDPRODUTO   = C_ITEMCOLE.CDPRODUTO    AND
      ITEMCOLE.CDMARCA     = C_ITEMCOLE.CDMARCA      ;
    COMMIT;
  END LOOP;
END;
/