【发布时间】:2019-03-29 04:45:00
【问题描述】:
我对销售订单表 (SO301000) 进行了自定义,这真的很奇怪。目标是使用 5 个自定义字段来计算一行的附加费用。我已经让 5 个字段正常工作(1 个整数,4 个十进制 8,3),添加了代码和属性以使它们在编辑后更新行。在每个字段更新后,我运行一个行更新函数,最后它会更新数量、折扣金额和一个自定义字段(用于故障排除)。
让我抓狂的是,它完美地更新了数量和自定义字段……但在 4 个小数字段上,它似乎每隔一次才更新一次折扣。起初我以为我遇到了一些逻辑,int 字段(我不知道它是否与变量类型有关,但这是我能看到的唯一区别)每次都有效
每次字段更改后要更新的代码都是一样的(当然,除了字段名之外):
protected void SOLine_UsrWidthAdder_FieldUpdated(PXCache cache, PXFieldUpdatedEventArgs e)
{
UpdateLineDirect(cache, (SOLine)e.Row);
}
UpdateLineDirect 末尾的代码如下所示:
cache.SetValue<SOLine.manualDisc>(TheRow, true);
cache.SetValue<SOLine.discPct>(TheRow, dDiscountPercent);
cache.SetValue<SOLineExt.usrCostCalc>(TheRow, TestString);
cache.SetValue<SOLine.curyDiscAmt>(TheRow, dDiscountAmount);
cache.SetValueExt<SOLine.orderQty>(TheRow, dQO);
我尝试了各种更新字段的顺序,并且每次都使用 Ext 更新它们以强制计算,但我尝试过的组合似乎都没有太大的不同。
提前致谢!
【问题讨论】:
-
要正确执行事件,您是否尝试过在所有字段上使用 SetValueExt?您可能需要查看正在运行的公式,并且可能需要手动设置价格字段以确保某些定价逻辑不会覆盖您的值。
-
我想我现在可以正常工作了。玩了一会儿后,我在 curyDiscAmt 上使用了 Ext 并删除了对 discPct 的设置。我认为它不喜欢我试图将它们都设置在一个更新中并且它变得非常混乱。感谢您的帮助。
标签: acumatica