问题:库存管理系统已经启用,库存的更新方式的修改默认是锁定了不允许修改的
如果要修改 ,需要通过SQL
库存更新方式,有两个选项,一个是审核时,另一个是保存时。
【前提】:要对库存更新方式进行修改,首先要把出入库类型的单据,包括调拨、退货、组装拆卸单据等先审核掉,再进行修改。否则那些保存、审核中、重新审核的单据对库存的影响会发生异常。
操作人员最好具备一定的SQL知识
本文特别适合那种组织机构比较多的环境,可以执行SQL进行批量修改,只需要执行一次
【注意】:改动后台数据有风险,请先在测试环境验证无误后再到正式环境执行!
由于“库存更新方式”参数是以XML格式的文本保存在数据库中,不能像普通文本一样进行UPDATE,本文采取了游标来操作SQL对XML内容进行修改
以下是示例代码:(已在蓝海环境验证,具体的生产环境可能存在XML字段内容或顺序差异,请先在测试环境验证)
--先备份表 T_BAS_SysParameter ,很重要
select * into T_BAS_SysParameterbak0721 from T_BAS_SysParameter
-- 以下SQL段(所有库存组织)库存更新方式:改为“保存时”
declare @xml xml
declare @forgid int
declare syschkorsave cursor for
select forgid from T_BAS_SysParameter where FParameterObjId=N'STK_StockParameter'
open syschkorsave
fetch next from syschkorsave into @forgid
while @@fetch_status = 0
begin
select @xml=FPARAMETERS from T_BAS_SysParameter where FParameterObjId=N'STK_StockParameter' and forgid=@forgid
set @xml.modify('replace value of (/STKStockParameter/UpdateStockPoint/text())[1] with "1"') -- 保存时1
UPDATE T_BAS_SysParameter SET FPARAMETERS= @xml Where FParameterObjId=N'STK_StockParameter' and forgid=@forgid
fetch next from syschkorsave into @forgid
end
CLOSE syschkorsave
DEALLOCATE syschkorsave
-------以上SQL段,库存方式改为保存时
==============
-- 以下SQL段:(所有库存组织)库存更新方式:改为“审核时”
declare @xml xml
declare @forgid int
declare syschkorchk cursor for
select forgid from T_BAS_SysParameter where FParameterObjId=N'STK_StockParameter'
open syschkorchk
fetch next from syschkorchk into @forgid
while @@fetch_status = 0
begin
select @xml=FPARAMETERS from T_BAS_SysParameter where FParameterObjId=N'STK_StockParameter' and forgid=@forgid
set @xml.modify('replace value of (/STKStockParameter/UpdateStockPoint/text())[1] with "2"') --审核时2
UPDATE T_BAS_SysParameter SET FPARAMETERS= @xml Where FParameterObjId=N'STK_StockParameter' and forgid=@forgid
fetch next from syschkorchk into @forgid
end
CLOSE syschkorchk
DEALLOCATE syschkorchk
-----以上SQL,(所有库存组织)库存更新方式:改为“审核时”
改完以后,
仍需要 重启IIS服务器,
或者: 在库存管理系统参数设置界面 点击“保存”按钮 新的参数才生效,如下图
库存更新方式改动SQL.zip(1.58KB)
推荐阅读