KIS专业版继承了K3良好的可扩展性,其单据自定义功能能方便的实现客户的个性化需求,但是在单据自定义中,自定义的数值字段的值不能参与系统的内部核算,这样多少有些不方便。我们是通过触发器来完成这客户的要求的。现举一个例子说明。
      某客户卖灯饰产品,在出库的时候有时候是散装数,有时候是整件数,而有时候是整件数加上散装数,由于业务量大,客户提出要求在录入单据的时候由系统自动进行换算,但是我们知道,金蝶在进行多计量单位业务时,必须转换成统一的单位来进行处理,也就是说客户要么全部以整件出库,要么以散装数出库。如果 一件灯饰=10个灯泡,当客户出库1件加3个时,他要么换算成1.3件或13个来进行出库。(这里我们统一规定换算成个数来计算
因此我们是这样处理的,在销售出库单上自定“整件数”,“散装数”,“系数”,“出库数量”四个字段,其中“系数”表示整件与散装之间的换算系数,可以通过在物料中增加一个自定义字段,在录单时自动携带下来。
换算关系:出库数量=整件数*系数+散装数
在录入销售出库单时,填入整件数=1,散装数=3,然后 出库数量=13,这里有个问题,这个“出库数量”是自定义字段,不能参与系统的内部核算,你得把这个字段的值再手工录入到系统自带的“实发数量”里。这样多少有点瑕疵,还不能体现自动化,这里我们使用一个触发器来完成“实发数量”的自动回填,代码如下:
SET QUOTED_IDENTIFIER ON
GO
SET ANSI_NULLS ON
GO
ALTER TRIGGER ICStockBill_UPDATEzqh ON dbo.ICStockBill
FOR INSERT,UPDATE
AS
DECLARE @InterID int,
@Type int
SELECT @InterID=FInterID ,@Type=FTranType FROM INSERTED
UPDATE ICStockBillEntry SET FAuxQty=FEntrySelfB0138
WHERE @InterID=FInterID and @Type=21
GO
SET QUOTED_IDENTIFIER OFF
GO
SET ANSI_NULLS ON
GO

这个触发器针对ICStockBill表,当该表插入或更新时触发该事件,也就是将“出库数量”的值回填到系统自带的“实发数量”里。(其中FEntrySelfB0138是字段“出库数量”在ICStockBillEntry表中的对应字段,不同的账套此字段可能不同。FAuxQty是“实发数量”的字段名)。

几点说明:
1.该触发器要在单据保存后才能触发启用
2.关于打印问题,我们是这样处理的,由于“实发数量”和“出库数量”是相同的,所以客户开票的套打模板中出库数量实际上是取的“出库数量”字段的值,这里我们做了个变通处理。