用户的需求是:销售时要根据商品的折扣率自动计算折扣额,然后销售金额要扣减出折扣额;随后又增加了一项返点计算,要求系统设置一个默认的返点率(可手工调整),根据返点率计算出返点额,销售金额要扣除折扣额再扣除返点额,才是本次真实销售额。
开始时,通过修改表结构,将商品自定义字段1修改为数值型,用来记录折扣率;修改表结构,将单据体自定义字段1修改为返点率,设定默认值。然后通过插件进行如下计算:金额=数量*单价*(折扣率-返点率),将计算结果写入到单据体的金额字段。
在销售单上测试没问题,但是当根据销售单做收款单时发现问题了:应收金额还是=数量*单价*(1+增值税率),注:如果销售单的发票类型为非增值税票类型,则增值税率为0。后来跟踪系统做收款单据选源单时统计应收款的SQL语句,经过分析发现,销售单的单据头有几个隐藏字段,是按照数量*单价*(1+增值税率)计算并填写的,而应收款余额直接从这几个字段读取。
明白了原因,就有解决对策了。在插件中增加保存前处理事件,遍历单据体的金额(Amount)字段并求和,再根据发票类型(InvoiceType)计算增值税额(TaxAmount)和税价合计(TotalAmount),然后填写到这几个隐藏字段中。
逻辑关系:TotalAmount=Sum(Amount+TaxAmount)
TaxAmouny=Amount*TaxRate
TaxRate=t_SystemProfile.FValue where FKey='FTaxRate'
经过这样处理后,应收款金额也完美衔接起来,同时在销售单的打印中,金额字段也正确显示出来。

为了便于以后快速调试插件,我在销售单上增加了一个按钮,名字就叫【插件】,用来打开或关闭插件运行时的信息输出。默认情况下是关闭输出,如果要开启输出,请单击该按钮。再次单击将关闭输出。
开启输出后,在录入销售单并保存,系统会在屏幕右上方显示信息窗口,将保存前的各项运算及结果显示出来,供操作人员参考。

请注意,如果发票类型选择“增值税发票”,系统将读取【基础设置-账套选项-增值税税率】参数,并进行后续计算。如上图,销售单合计金额为6054.85,但本单应收金额为7084.17,这是计算之后的税价合计。

如果发票类型为“普通发票”、“收据”或“其他”,则税率为0。如上图,其应收金额=本单合计金额。
并且在单据保存后,在单据右下角显示本单金额、本次收款金额和应收余额。
咨询电话:027-84233202
公 司:湖北微信科技有限公司