📄 tri_
字号:
IF EXISTS (SELECT NAME FROM SYSOBJECTS WHERE NAME='TRI_采购入库' AND TYPE='TR')
DROP TRIGGER TRI_采购入库
GO
CREATE TRIGGER [TRI_采购入库] ON 采购入库单明细表
FOR INSERT, UPDATE
AS
DECLARE
@年 INT,@月 INT,
@KEY_ID INT,@采购单号 INT,@供应商编码 VARCHAR(10),@物料编码 VARCHAR(30),
@行 INT,@入库日期 DATETIME,@入库数量 NUMERIC(18,6),@单位材料成本 NUMERIC(18,6),
@仓库 VARCHAR(10),@货位 VARCHAR(10),@发票金额 NUMERIC(18,6),@增值税额 NUMERIC(18,6),@批号 VARCHAR(15),@借项退货 CHAR(1),@货币编码 VARCHAR(10),@汇率 NUMERIC(18,6)
SELECT @年=YEAR(入库日期),@月=MONTH(入库日期),@KEY_ID=KEY_ID, @采购单号 =采购单号 ,
@借项退货=借项退货,@供应商编码=供应商编码,@物料编码=物料编码,@入库日期=入库日期,
@入库数量=入库数量,@仓库=仓库,@货位=货位,@批号=批号,
@单位材料成本=单位材料成本,@货币编码=货币编码,@行=行,@发票金额=发票金额,
@增值税额=增值税额 FROM INSERTED
SELECT @汇率=汇率 FROM 货币汇率
WHERE YEAR(年月)=YEAR(@入库日期) AND MONTH(年月)=MONTH(@入库日期) AND 外币编码=@货币编码
IF @借项退货='0' /*不是正数退货.正数退货是在生成应付账款之后的退货,生成应付账之前用负数退货*/
BEGIN
/*更新库存成本*/
IF NOT EXISTS (SELECT * FROM 明细库存表 WHERE 物料编码=@物料编码 AND 年=@年 AND 月=@月 )
INSERT INTO 明细库存表(物料编码,年,月,入库累计数量,入库累计材料成本)VALUES(@物料编码,@年,@月,@入库数量,(@入库数量*@单位材料成本)*@汇率 )
ELSE
UPDATE 明细库存表 SET 入库累计数量=入库累计数量+@入库数量,
入库累计材料成本=入库累计材料成本+(@入库数量*@单位材料成本)*@汇率
WHERE 物料编码=@物料编码 AND 年=@年 AND 月=@月
IF NOT EXISTS (SELECT * FROM 物料与货位对照表 WHERE 物料编码=@物料编码 AND 仓库编码=@仓库 AND 货位编码=@货位 AND 批号=@批号)
INSERT INTO 物料与货位对照表(物料编码,货位存量)VALUES(@物料编码,@入库数量)
ELSE
UPDATE 物料与货位对照表 SET 货位存量=货位存量+@入库数量 WHERE 物料编码=@物料编码 AND 仓库编码=@仓库 AND 货位编码=@货位 AND 批号=@批号
END
IF @借项退货='1 '/*用正数退货*/
BEGIN
INSERT INTO 记账凭证 (供应商编码,采购单号,发票金额,增值税额)VALUES(@供应商编码,@采购单号,-@发票金额,-@增值税额)
UPDATE 明细库存表 SET 入库累计数量=入库累计数量+@入库数量,入库累计材料成本=入库累计材料成本-@入库数量*@单位材料成本*@汇率
WHERE 物料编码=@物料编码
/*冲减货位库存数量*/
UPDATE 物料与货位对照表 SET 货位存量=货位存量-@入库数量 WHERE 物料编码=@物料编码 AND 仓库编码=@仓库 AND 货位编码=@货位 AND 批号=@批号
END
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -