【问题标题】:Sum values of detail rows (in extension) and put it in header (in extension)汇总明细行的值(在扩展中)并将其放在标题中(在扩展中)
【发布时间】:2021-11-19 21:32:07
【问题描述】:

Acumatica 2021 R1 - 自定义

我正在使用 PXFormula 将数量和成本相乘,以在 Physical Inventory Review 的详细信息中创建一个新的扩展字段(尽管我认为具体的屏幕无关紧要。)这部分工作正常。但是,然后我想将该新列的值汇总到标题中的新扩展字段中。我无法让那部分工作。

这里是相关的详细代码:

using PX.Data;
using System;

namespace PX.Objects.IN
{
  public class INPIDetailExt : PXCacheExtension<PX.Objects.IN.INPIDetail>
  {
        #region UsrExtBookCost
        [PXDecimal]
        [PXUIField(DisplayName="Ext. Book Cost")]

        [PXFormula(typeof(Mult<INPIDetail.bookQty, INPIDetail.unitCost>),
        typeof(SumCalc<INPIHeaderExt.usrTotalBookCost>))]
        public virtual Decimal? UsrExtBookCost { get; set; }
        public abstract class usrExtBookCost : PX.Data.BQL.BqlDecimal.Field<usrExtBookCost> { }
        #endregion
  }
}

这是标题代码:

using PX.Data;
using System;

namespace PX.Objects.IN
{
  public class INPIHeaderExt : PXCacheExtension<PX.Objects.IN.INPIHeader>
  {

    #region UsrTotalBookCost

    [PXDecimal]
    [PXUIField(DisplayName="Total Book Cost")]

    public virtual Decimal? UsrTotalBookCost { get; set; }
    public abstract class usrTotalBookCost : PX.Data.BQL.BqlDecimal.Field<usrTotalBookCost> { }
    #endregion
  }
}

我觉得这与这些是扩展的事实有关,并且在 INPIDetail 中调用的 PXParent 不知何故没有涵盖这些扩展。

任何建议将不胜感激。

【问题讨论】:

  • 其实在 Acumatica 自己的代码中有一条线索。在 INPIDetail 中——查看 PhysicalQty 的代码,PXFormula 的使用被注释掉,注释是手动完成计算......看起来我需要做同样的事情。
  • 它可能的 DAC 属性需要更多的工作才能正确刷新数量。对于使用 RowSelecting/RowSelected 的边缘情况不会失败:stackoverflow.com/a/53010150/7376238
  • 属性 PXDependsOnFields 可能会帮助和其他解决方案强制公式重新执行。

标签: customization acumatica


【解决方案1】:

您是否有可能在 INPIHeader 的行选择事件中调用 PXFormulaAttribute.CalcAggregate。这应该会强制 SumCalc 重新计算并更新您的值

PXFormulaAttribute.CalcAggregate<INPIDetailExt.usrExtBookCost>(DetailView.Cache, e.Row);

【讨论】:

    猜你喜欢
    • 2023-03-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-01-17
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多