SalesLine.update 函数被错误调用

问题描述 投票:0回答:1

我的目标是通过将自定义字段“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() 行。

extension-methods microsoft-dynamics axapta x++
1个回答
0
投票

上面的代码永远不会工作。它将空的

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
,这会使行数上升!

如果乘法发生得太晚,用户会在记录保存后首先看到正确的值。

你必须重新考虑这个解决方案,它不起作用。

© www.soinside.com 2019 - 2024. All rights reserved.