我对销售订单表格(SO301000)进行了自定义,这确实很不明智。目标是使用5个自定义字段来计算一行中增加的费用。我已经工作了5个字段(1个整数,4个十进制的8,3),添加了代码和attirbutes,以使它们在编辑后更新行。在每个字段更新后,我运行一个行更新功能,在此末尾,它将更新数量,折扣金额和自定义字段(用于故障排除)。
让我抓狂的是,它完美地更新了数量和自定义字段...但是在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更新它们以强制进行计算,但是我尝试过的所有组合似乎都没有多大作用。
谢谢!
答案 0 :(得分:0)
因此,看起来Acumatica不希望同时更新折扣金额和百分比。
我删除了这一行:
cache.SetValue<SOLine.discPct>(TheRow, dDiscountPercent);
并且仅更新此内容(这是我首先要的内容)
cache.SetValue<SOLine.curyDiscAmt>(TheRow, dDiscountAmount);
它现在可以正常工作了。