/*
Arredonda o valor dos centavos de acordo com as seguintes regras:
,00 - deixar com ,00
,01 a ,49 - arredondar para ,50
,51 a ,99 - arredondar para ,90

Ajustar o preço mínimo para desconto de 3% sobre o preço normal já arredondado 

TODOS os precos com início de vigência igual à "Vigencia Inicial" serão arredondados
*/

update
  precos_de_itens p
set
  p.preco = 
    cast(
	  iif(mod(p.preco * 1000, 1000) / 1000.000 = 0.000, 
	    p.preco, 
		iif(mod(p.preco * 1000, 1000) / 1000.000 <= 0.5, 
		  p.preco - mod(p.preco * 1000, 1000) / 1000.000 + 0.50, 
		    p.preco - mod(p.preco * 1000, 1000) / 1000.000 + 0.9)) 
	as numeric(13,2)),
  p.minimo = 
    cast(
	  cast(
	    iif(mod(p.preco * 1000, 1000) / 1000.000 = 0.000, 
		  p.preco, 
		  iif(mod(p.preco * 1000, 1000) / 1000.000 <= 0.5, 
		    p.preco - mod(p.preco * 1000, 1000) / 1000.000 + 0.50, 
			p.preco - mod(p.preco * 1000, 1000) / 1000.000 + 0.9)) 
	  as numeric(13,2)) * 0.97 
	as numeric(13,2))
where
  p.inicio_vigencia = :vigencia_inicial