--create or alter proc KdvOraniDegistir @Kod nvarchar(30) ,@FAdi nvarchar(10) , @FiyatDegistir smallint , @Ykdv float
--as
--  KdvOraniDegistir '02','F4FiyatH' ,1 ,1
--declare @sql nvarchar(max)
--set  @sql =' UPDATE StokFiyat SET '+ @FAdi+'=(CASE WHEN '+left(@FAdi,2)+'Kdv =''H''' +' THEN '+@FAdi+'  ELSE '+
--convert (varchar ((@FAdi)/(100+@Ekdv)*100),100)+ ' end)'
--print @sql

--Eski Kdv 8 Yeni Kdv 1  
--fİYAT Degiştir 1 ise Kdvsiz fiyat aynı kalacak Kdv oranına göre Dahil fiyat değişecek, 0 ise Kdvsiz fiyat değişecek, Dahil fiyat aynı kalacak
declare @Kod nvarchar(30)
DECLARE @Ekdv float 
DECLARE @Ykdv float 
declare @FiyatDegistir bit
set @Kod ='1020125'
set @Ekdv=8
set @Ykdv=5
set @FiyatDegistir=1
update StokFiyat SET F4FiyatH=(case when @FiyatDegistir = 1 then F4FiyatH  else (F4FiyatH*(100 +  @Ekdv)/(100+@Ykdv)) end  ) WHERE Kodu in (@Kod)
update StokFiyat SET F4Fiyat=(case when F4Kdv='H' then F4FiyatH else F4FiyatH/100*(100+@Ykdv)  end) WHERE Kodu in  (@Kod)
update STOKKARTI SET F4Fiyat=(case when F4Kdv='H' then (SELECT  F4FiyatH FROM StokFiyat WHERE StokFiyat.Kodu=STOKKARTI.Kodu) else 
	(SELECT  F4FiyatH/100*(100+@Ykdv) FROM StokFiyat WHERE StokFiyat.Kodu=STOKKARTI.Kodu)   end) WHERE Kodu in  (@Kod)
update StokFiyat set  SatisKdv=@Ykdv WHERE Kodu in  (@Kod)
update STOKKARTI SET AlisKdv=@Ykdv ,SatisKdv=@Ykdv WHERE Kodu in  (@Kod) 
select 'StokFiyat' as Fiyat,f.Kodu,f.F4Fiyat,f.F4FiyatH,f.F4Kdv,f.SatisKdv,'Kart' as kart, k.F4Fiyat,k.F4Kdv,k.AlisKdv,k.SatisKdv   FROM StokFiyat f , STOKKARTI k where k.Kodu=f.Kodu 
--and f.Kodu=@Kod
and f.Kodu in ('1020125')


