我的目标是通过将自定义字段“NoOfMonths”乘以行金额的值来更改销售行上行金额的计算。我创建了 SalesLine 表的扩展并使用 update() 方法来满足要求。以下是我的代码:
[Extensionof(tableStr(SalesLine))]
final class PRMSC_SalesLine_Extension
public void update(boolean _dropInvent,
Common _childBuffer,
boolean _updateOrderLineOfDeliverySchedule ,
boolean _mcrAutoallocate ,
boolean _cameFromCreate ,
boolean _promptSuppItem)
{
next update();
SalesLine saleLine;
if (this.ItemId == saleLine.ItemId)
{
saleLine.LineAmount = saleLine.LineAmount * saleLine.PRMSC_NoOfMonths;
}
}
构建和数据库同步成功完成。在调试和更改销售订单前端的任何值时,会生成此错误 SalesLine.update 函数被错误调用 在调试时,此错误出现在下一个 update() 行。
上面的代码永远不会工作。它将空的
SalesLine
记录与当前 this
销售线记录进行比较,总是会失败。
[Extensionof(tableStr(SalesLine))] 最后一课 PRMSC_SalesLine_Extension
public void update(boolean _dropInvent,
Common _childBuffer,
boolean _updateOrderLineOfDeliverySchedule ,
boolean _mcrAutoallocate ,
boolean _cameFromCreate ,
boolean _promptSuppItem)
{
if (this.PRMSC_NoOfMonths)
{
this.LineAmount = this.LineAmount * this.PRMSC_NoOfMonths;
}
next update();
}
super
在乘法之后调用,因此它与其他更改的字段一起保存。
这样效果会更好,但我不推荐这样做。它不处理
insert
的情况,而且每次调用LineAmount
时都会更新update
,这会使行数上升!
如果乘法发生得太晚,用户会在记录保存后首先看到正确的值。
你必须重新考虑这个解决方案,它不起作用。