Acumatica 使用操作\复制顺序时重置自定义总和字段的值

Acumatica 使用操作\复制顺序时重置自定义总和字段的值,acumatica,Acumatica,我有两个自定义摘要字段,用于计算总计。看起来这些行的总和是正确的,但是Acumatica并不是每次都重新计算总和,而是改变它,当我复制时,我得到的总数是两倍 我试过这段代码(这段代码是从一个有着几乎完全相同问题的人的不同帖子上截取的),但我认为它甚至没有运行。我猜我对这里应该发生什么的理解有很大差距 public delegate void CopyOrderProcDel(SOOrder order, CopyParamFilter copyFilter); [PXOve

我有两个自定义摘要字段,用于计算总计。看起来这些行的总和是正确的,但是Acumatica并不是每次都重新计算总和,而是改变它,当我复制时,我得到的总数是两倍

我试过这段代码(这段代码是从一个有着几乎完全相同问题的人的不同帖子上截取的),但我认为它甚至没有运行。我猜我对这里应该发生什么的理解有很大差距

      public delegate void CopyOrderProcDel(SOOrder order, CopyParamFilter copyFilter);

    [PXOverride]
    public void CopyOrderProc(SOOrder order, CopyParamFilter copyFilter, CopyOrderProcDel del)
    {

Base.RowSelecting.AddHandler<SOOrder>((sender, e) =>
        {
            if (e.Row == null) return;

            SOOrderExt orderExt = sender.GetExtension<SOOrderExt>(e.Row);
            orderExt.UsrSpeedyTotalCost = 0m;
            orderExt.UsrSpeedyTotalExt2 = 0m;

        });
        del(order, copyFilter);

public委托void CopyOrderProcDel(SOOrder order,CopyParamFilter copyFilter);
[PXOverride]
public void CopyOrderProc(SOOrder order、CopyParamFilter、copyFilter、CopyOrderProcDel)
{
Base.RowSelecting.AddHandler((发送方,e)=>
{
if(e.Row==null)返回;
soorderextorderext=sender.GetExtension(e.Row);
orderExt.UsrSpeedyTotalCost=0m;
orderExt.UsrSpeedyTotalExt2=0m;
});
del(订单、copyFilter);
值得一提的是,我创建了一个带有操作按钮的菜单,可以修复摘要字段,但对于用户来说,这是一个非常笨拙的解决方案


提前感谢。

如果您只想重置自定义字段,请按此方法执行

public delegate void CopyOrderProcDelegate(SOOrder sourceOrder, CopyParamFilter copyFilter);
[PXOverride]
public void CopyOrderProc(SOOrder sourceOrder, CopyParamFilter copyFilter, CopyOrderProcDelegate baseMethod)
{
  baseMethod(sourceOrder,copyFilter);
  SOOrderExt orderExt = Base.Document.Current.GetExtension<SOOrderExt>();
  orderExt.UsrSpeedyTotalCost = 0m;
  orderExt.UsrSpeedyTotalExt2 = 0m;

}
公共委托无效CopyOrderProcDelegate(SOOrder sourceOrder,CopyParamFilter copyFilter);
[PXOverride]
public void CopyOrderProc(SOOrder sourceOrder、CopyParamFilter、copyFilter、CopyOrderProcDelegate baseMethod)
{
baseMethod(sourceOrder、copyFilter);
soorderextorderext=Base.Document.Current.GetExtension();
orderExt.UsrSpeedyTotalCost=0m;
orderExt.UsrSpeedyTotalExt2=0m;
}

查看如何通过在CopyOrderPRoc中添加处理程序来覆盖行更新/ed。将值设置为零,然后在以后插入行时应计算值。此外,如果需要,还可以使用一个属性“IsCopyOrder”我想我很困惑,因为我认为这正是我对代码所做的,但它似乎什么也没做。