Files
old_jintiantongye_wms/db/数据库更新20171027(库位基本信息表上触发器).sql
2025-09-12 17:30:18 +08:00

72 lines
5.1 KiB
Transact-SQL
Raw Permalink Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

USE ASRS_WXZD_JYMH_CPK
go
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
ALTER TABLE kwjbxx ALTER COLUMN 双伸位都有货 TINYINT NULL
go
ALTER TRIGGER [dbo].[t_kwjbxx_U] ON [dbo].[kwjbxx]
FOR UPDATE
AS
/**
* 在总数量从其它值变为0时清空托盘号、库存峰值、实际物资类型、备料单号、实放物资种类
* 如果修改后的总数量大于修改前的总数量,则更新库存峰值为修改后的总数量
* Created by 蒋智湘 ON 05-07-08
* Modified by 蒋智湘 ON 05-08-23 如果修改总数量前得库存数量可能为NULL此时也需要修改库存峰值
* Modified by jzx on 2009-8-22 库存总数量清零时新增字段kzjrks可追加入库数清空。
* Modified by jzx on 2014-12-9 增加对新字段“双伸位都有货”赋值关闭对kcfz字段的赋值
* Modified by jzx on 2015-6-24 当库位库存总数更改为0时不再清空托盘号字段值。是为了处理整盘出库指令审核后取消审核时托盘号无法复原问题
* Modified by jzx on 2015-11-24 当更改“托盘个数”字段值时如果当前库位存放物资是空托盘则直接修改zsl字段值;
当空库位设定托盘个数大于0后sfwzzl字段值自动更新为'T'
* Modified by jzx on 2016-8-27 jzx 当修改托盘个数字段值从0到1时不再更改sfwzzl字段值
* Modified by jzx on 2017-11-27 优化对kwjbxx表的“双伸位都有货”字段的赋值方法。由原来的4条语句更改为1条语句
*/
IF UPDATE(zsl)
BEGIN
SET NOCOUNT ON;
IF EXISTS(SELECT 2 FROM inserted WHERE zsl = 0)
UPDATE kwjbxx SET kcfz = NULL, sjwzlx = NULL, sfwzzl = NULL, kzjrks = NULL
FROM inserted I
WHERE I.kwbh = kwjbxx.kwbh
AND I.zsl = 0;
IF EXISTS(SELECT 2 FROM inserted WHERE xnkw = 0 AND (nckw IS NOT NULL OR wckw IS NOT NULL))
BEGIN
UPDATE kwjbxx SET 双伸位都有货=
CASE WHEN (r.zsl > 0 AND wc.浅货位库存数>0)
OR (r.zsl > 0 AND nc.深货位库存数>0) THEN 3
-- 深货位有货则更新为1
WHEN nc.深货位库存数> 0 THEN 1
-- 浅货位有货则更新为2
WHEN wc.浅货位库存数> 0 THEN 2
ELSE 0 END
FROM kwjbxx r LEFT JOIN (SELECT zsl 浅货位库存数, kwbh FROM kwjbxx) wc ON r.wckw=wc.kwbh
LEFT JOIN (SELECT zsl 深货位库存数, kwbh FROM kwjbxx) nc ON r.nckw=nc.kwbh
, inserted i
WHERE (i.nckw IS NOT NULL OR i.wckw IS NOT NULL)
AND (r.kwbh IN(i.nckw,i.wckw,i.kwbh))
END;
END
go
UPDATE kwjbxx SET 双伸位都有货=r.x
FROM ( select r.kwbh,r.zsl,r.wckw,浅货位库存数,r.nckw,深货位库存数
, CASE WHEN (r.zsl > 0 AND wc.浅货位库存数>0) OR (r.zsl > 0 AND nc.深货位库存数>0) THEN 3
WHEN nc.深货位库存数> 0 THEN 1
WHEN wc.浅货位库存数> 0 THEN 2
ELSE 0 END x
from
kwjbxx r LEFT JOIN (SELECT zsl 浅货位库存数, kwbh FROM kwjbxx) wc ON r.wckw=wc.kwbh
LEFT JOIN (SELECT zsl 深货位库存数, kwbh FROM kwjbxx) nc ON r.nckw=nc.kwbh
WHERE (nckw IS NOT NULL OR wckw IS NOT NULL)
) r
WHERE kwjbxx.kwbh=r.kwbh
go
-- kws字段从java代码移入数据库双伸库位都没有托盘的优先安排深货位有的浅货位没有的则次优安排
update sys_SQL_statements set SQL_string='kws,双伸位都有货,storeDist'
where ID='orderClauseForDistance';
go