IF EXISTS (SELECT * FROM sysobjects O, sysusers U
          WHERE
            o.name = 'MANUT_PRECO_ECO'  and
            type = 'P'                  and
            u.uid = o.uid               and
            u.name = USER)

   DROP PROCEDURE MANUT_PRECO_ECO;
GO

CREATE PROCEDURE MANUT_PRECO_ECO
AS
   DECLARE @V_CDFILIAL     VARCHAR(4);
   DECLARE @V_CDPRODUTO    VARCHAR(10);
   DECLARE @V_CDMARCA      VARCHAR(5);
   DECLARE @V_CDFORNECED   VARCHAR(21);
   DECLARE @V_CDREGIAO     VARCHAR(3);
   DECLARE @V_NRCOLEPRECO  VARCHAR(10);
   DECLARE @V_VRPRECUNIITM FLOAT;
   DECLARE @V_VRPRECECOITM FLOAT;
BEGIN
  DECLARE C_ITEMCOLE CURSOR FOR
  SELECT
    CDFILIAL,
    NRCOLEPRECO,
    CDFORNECED,
    CDREGIAO,
    CDPRODUTO,
    CDMARCA, 
    VRPRECUNIITM,
    VRPRECECOITM
  FROM
    ITEMCOLE
  WHERE
    (ISNULL(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))

  OPEN C_ITEMCOLE;
  FETCH NEXT FROM C_ITEMCOLE INTO @V_CDFILIAL,
                                  @V_NRCOLEPRECO,
                                  @V_CDFORNECED,
                                  @V_CDREGIAO,
                                  @V_CDPRODUTO,
                                  @V_CDMARCA,
                                  @V_VRPRECUNIITM,
                                  @V_VRPRECECOITM;
  WHILE (@@FETCH_STATUS = 0)
  BEGIN
    PRINT @V_CDFILIAL;
    PRINT @V_NRCOLEPRECO;
    PRINT @V_CDFORNECED;
    PRINT @V_CDREGIAO;
    PRINT @V_CDPRODUTO;
    PRINT @V_CDMARCA;
    PRINT @V_VRPRECUNIITM;
    PRINT @V_VRPRECECOITM;
    PRINT '-'   

    UPDATE ITEMCOLE
    SET
      CDFORMPGTO    = NULL,
      IDTPFOPGTCOL  = NULL,
      NRDIAPGFXCOL  = NULL,
      NRPARCPGTCOL  = NULL,
      IDUTDIAPGCOL  = NULL
    WHERE
      CDFILIAL    = @V_CDFILIAL     AND
      NRCOLEPRECO = @V_NRCOLEPRECO  AND
      CDFORNECED  = @V_CDFORNECED   AND
      CDREGIAO    = @V_CDREGIAO     AND
      CDPRODUTO   = @V_CDPRODUTO    AND
      CDMARCA     = @V_CDMARCA;

    DELETE FROM PZOPGTITMCOL
    WHERE
      CDFILIAL    = @V_CDFILIAL     AND
      NRCOLEPRECO = @V_NRCOLEPRECO  AND
      CDFORNECED  = @V_CDFORNECED   AND
      CDREGIAO    = @V_CDREGIAO     AND
      CDPRODUTO   = @V_CDPRODUTO    AND
      CDMARCA     = @V_CDMARCA;

    INSERT INTO PZOPGTITMCOL
      (CDFILIAL, NRCOLEPRECO, CDFORNECED, CDPRODUTO,
      CDMARCA, CDREGIAO, NRDIASPGTCOL, VRPERCPGTCOL)
    SELECT
       @V_CDFILIAL,
       @V_NRCOLEPRECO,
       @V_CDFORNECED,
       @V_CDPRODUTO,
       @V_CDMARCA,
       @V_CDREGIAO,
       PRAZOPGTFORN.NRDIASPGTOFO,
       PRAZOPGTFORN.VRPERCPGTOFO
    FROM
       PRAZOPGTFORN
    WHERE
       PRAZOPGTFORN.CDFORNECED = @V_CDFORNECED;

	    UPDATE ITEMCOLE
	    SET
	      ITEMCOLE.CDFORMPGTO    = FORNECEDOR.CDFORMPGTO,
	      ITEMCOLE.IDTPFOPGTCOL  = FORNECEDOR.IDTPFORPGTFO,
	      ITEMCOLE.NRDIAPGFXCOL  = FORNECEDOR.NRDIAPGFIXFO,
	      ITEMCOLE.NRPARCPGTCOL  = FORNECEDOR.NRPARCPGTOFO,
	      ITEMCOLE.IDUTDIAPGCOL  = FORNECEDOR.IDUTDIAPGTFO
	    FROM FORNECEDOR
	    WHERE
	      ITEMCOLE.CDFILIAL    = @V_CDFILIAL     AND
	      ITEMCOLE.NRCOLEPRECO = @V_NRCOLEPRECO  AND
	      ITEMCOLE.CDFORNECED  = @V_CDFORNECED   AND
	      ITEMCOLE.CDREGIAO    = @V_CDREGIAO     AND
	      ITEMCOLE.CDPRODUTO   = @V_CDPRODUTO    AND
	      ITEMCOLE.CDMARCA     = @V_CDMARCA      AND
	      ITEMCOLE.CDFORNECED  = FORNECEDOR.CDFORNECED;

    FETCH NEXT FROM C_ITEMCOLE INTO @V_CDFILIAL,
                                    @V_NRCOLEPRECO,
                                    @V_CDFORNECED,
                                    @V_CDREGIAO,
                                    @V_CDPRODUTO,
                                    @V_CDMARCA,
                                    @V_VRPRECUNIITM,
                                    @V_VRPRECECOITM;
  END;
  CLOSE C_ITEMCOLE;
  DEALLOCATE C_ITEMCOLE;
END;

GO

MANUT_PRECO_ECO

GO