相信使用K3的朋友经常会遇到这样一个问题,
比如螺丝,钉子这些物料,采购部下的采购订单数量单位是“个”,但实际供应商是按公斤发货,单价也是按公斤结算,
这会导致外购入库单上按“个”入库的单价每次都要手工去换算,非常麻烦。
按我的方法,可以按【供应商】或【物料分类】自动将现实中以“公斤”结算的单价换算成系统中以“个”结算的单价。
第一步:以“公斤”换算成“PCS”为例。先建一个价格模块,将需要把换算的物料按供应商都登录到表里。
第二步,做触发器,根据条件,让他们自动换算,求出以“PCS”为单位的单价
触发器代码,各位根据需求自行修改吧
create TRIGGER [dbo].[ICStockBill_ye]
on [dbo].[ICStockBill]
FOR INSERT,update
AS
declare @Finterid int select @Finterid=Finterid from inserted;
declare @FTranType int select @FTranType=FTranType from inserted;
declare @Fstatus int select @Fstatus=Fstatus from inserted;
declare @FSupplyID int select @FSupplyID=FSupplyID from inserted; --读取供应商内码
declare @FDate datetime select @FDate=FDate from inserted;
update v1 set v1.FEntrySelfA0185=@FDate
from ICStockBillEntry v1
inner join ICStockBill v2 on v1.finterid=v2.Finterid
where v2.finterid=@Finterid and v2.FTranType=1
--该段后加,将外购入库单制单日期复制到表体新建的字段里,条件是单据类型为外购入库单 FTranType=1
IF @Fstatus=0 AND @FTranType =1 and @FSupplyID in('25770','479') --这段是如果是外购入库单,并且是其中一个供应商【越来 内码25770或 海廷 内码479】 的情况下执行触发
BEGIN
SET NOCOUNT ON;
UPDATE v1 SET v1.FEntrySelfA0182=v4.FName,
v1.FEntrySelfA0184=v2.FPrice*FEntrySelfA0183,
v1.FEntrySelfA0181=v2.FPrice,
v1.FPurchasePrice=v2.FPrice*FEntrySelfA0183/v1.FQty,
v1.FPurchaseAmount=v1.FPurchasePrice*v1.FQty--这段是用计价单价总金额除以入库数量,得到弹簧的采购单价和根据新采购单价,反写新的采购金额(如果不一并反写采购金额,采购金额会是错的)
from ICStockBillEntry v1
inner join t_BOS216100003Entry2 v2 on v1.FItemid=v2.Fbase
inner join ICStockBill v3 on V1.FInterID=V3.FInterID and v3.FSupplyID=v2.FBase2
inner join t_MeasureUnit v4 on v2.FBase1=v4.FMeasureUnitID
where V1.FInterID=@Finterid
end
推荐阅读