use Dynamics
go

--海关单位转库存单位

------------------------------------------
--创建表及其相关字段
drop table Jimmy_UnitConversionTest
go
CREATE TABLE Jimmy_UnitConversionTest
(
ItemId			varchar(41)		default('') not null,
InventQty		decimal(24,4)	default(0)  not null,
InventUnitid	varchar(10)		default('') not null,
CSMQty			decimal(24,4)	default(0)  not null,
CSMUnitId		varchar(10)		default('') not null,
factor			decimal(24,12)  default(0)  not null
)

insert into Jimmy_UnitConversionTest(ItemId,InventQty)
values('Col-1100',10)

update a set InventUnitid = b.unitid  
from Jimmy_UnitConversionTest a join InventTableModule b on a.itemid = b.itemid
where b.moduletype = 0
GO

select * from Jimmy_UnitConversionTest where InventUnitid = '' 


update a set a.factor = 1 
from Jimmy_UnitConversionTest a
where a.CSMUnitId = a.InventUnitid and factor = 0 
GO

select * from Jimmy_UnitConversionTest where factor = 0
GO

-- 更新与库存单位的换算
update a set a.factor = b.factor 
from Jimmy_UnitConversionTest a 
join unitconvert b on a.itemid = b.itemid and a.CsmUnitId = b.fromunit and a.Inventunitid = b.tounit and a.factor = 0
GO

-- 反向更新
update a set a.factor = 1 / b.factor 
from Jimmy_UnitConversionTest a 
join unitconvert b on a.itemid = b.itemid and a.CSMUnitId = b.tounit and a.Inventunitid = b.fromunit and a.factor = 0
GO

-- 系统不存在的换算率:           
select * from Jimmy_UnitConversionTest where factor = 0
go


-- 找不到的直接用1做换算率

update a set a.InventQty = case 
		 when factor <> 0 then (1 / factor) * CSMQty
		 when factor = 0  then (1 / 1) * CSMQty end
from Jimmy_UnitConversionTest a
GO