Acumatica 更新销售订单行单价
我试图用我自己在别处查到的价格覆盖销售订单条目中的单价。我确实使用了下面的代码,但我不明白为什么注释掉的行会导致“堆栈溢出”。价格确实正确更新,并在会话之间保存到数据库 我下面的例子在这篇文章中提供了,很明显需要注释掉的行: 它似乎在做的是line Base.Transactions.Update(soLine);调用SOLine_,然后在无限循环中调用您 谢谢Acumatica 更新销售订单行单价,acumatica,Acumatica,我试图用我自己在别处查到的价格覆盖销售订单条目中的单价。我确实使用了下面的代码,但我不明白为什么注释掉的行会导致“堆栈溢出”。价格确实正确更新,并在会话之间保存到数据库 我下面的例子在这篇文章中提供了,很明显需要注释掉的行: 它似乎在做的是line Base.Transactions.Update(soLine);调用SOLine_,然后在无限循环中调用您 谢谢 protected virtual void SOLine_RowUpdating(PXCache sender, PXRowUpda
protected virtual void SOLine_RowUpdating(PXCache sender, PXRowUpdatingEventArgs e)
{
if (e.NewRow == null)
{
return;
}
SOLine soLine = (SOLine)e.NewRow;
decimal NewUnitPrice = 12349.56M;
sender.SetValueExt<SOLine.curyUnitPrice>(soLine, NewUnitPrice);
Base.Transactions.Cache.RaiseRowUpdated(soLine, soLine);
// Base.Transactions.Update(soLine);
Base.Transactions.View.RequestRefresh();
}
protected virtual void SOLine\u行更新(PXCache sender,pxrowupdateingeventargs e)
{
如果(e.NewRow==null)
{
返回;
}
索林索林=(索林)e.纽罗;
十进制新单价=12349.56米;
sender.SetValueExt(soLine,新单价);
Base.Transactions.Cache.RaiseRowUpdated(soLine,soLine);
//Base.Transactions.Update(soLine);
Base.Transactions.View.RequestRefresh();
}
假设您的扩展名为SOOrderEntryExt(为了简化解释)。
然后我们有3位演员:1.SOOrderEntry,使用其方法SOLine_RowUpdate(由Acumatica团队创建) 2.SoorderEntryText及其方法SOLine_RowUpdate(由您创建)
3.针灸缓存
4.针灸
Acumatica有以下代码:
每次在缓存中修改SOLine后,我都需要执行两个方法:
SOOrderEntry.SOLine_RowUpdating
SOOrderEntryExt.SOLine_RowUpdating
以下代码行:
Base.Transactions.Update(soLine);
基本上是对Acumatica说,嘿,soLine在缓存中被更新了。针灸应该做什么?再次执行这两行:
SOOrderEntry.SOLine_RowUpdating
SOOrderEntryExt.SOLine_RowUpdating
一次又一次,一次又一次。
然后问题就出现了,如何执行
SOOrderEntry.SOLine_RowUpdating
不引起永恒的循环?下一行代码是一个解决方案:
Base.Transactions.Cache.RaiseRowUpdated(soLine, soLine);
假设您的扩展名为SOOrderEntryExt(为了简化解释)。 然后我们有3位演员:
1.SOOrderEntry,使用其方法SOLine_RowUpdate(由Acumatica团队创建) 2.SoorderEntryText及其方法SOLine_RowUpdate(由您创建)
3.针灸缓存
4.针灸
Acumatica有以下代码:
每次在缓存中修改SOLine后,我都需要执行两个方法:
SOOrderEntry.SOLine_RowUpdating
SOOrderEntryExt.SOLine_RowUpdating
以下代码行:
Base.Transactions.Update(soLine);
基本上是对Acumatica说,嘿,soLine在缓存中被更新了。针灸应该做什么?再次执行这两行:
SOOrderEntry.SOLine_RowUpdating
SOOrderEntryExt.SOLine_RowUpdating
一次又一次,一次又一次。
然后问题就出现了,如何执行
SOOrderEntry.SOLine_RowUpdating
不引起永恒的循环?下一行代码是一个解决方案:
Base.Transactions.Cache.RaiseRowUpdated(soLine, soLine);
Yuriy感谢您的明确回复。这样可以完美地保存记录,而不会进入无限循环。我对折扣有进一步的问题,但由于这是一个单独的话题,我将发表一篇新的帖子。Yuriy谢谢你的明确回复。这样可以完美地保存记录,而不会进入无限循环。我有进一步的问题与折扣,但因为它是单独的主题,我将作出一个新的职位。