Acumatica中的第二层图扩展方法



我需要与可重复使用的业务对象合作以获取营业税,折扣等,并且需要覆盖这些图形扩展中的某些方法。例如,我从机会图开始。我有一组需要计算为整体产品金额的订单总计,过去,我们只是将税收属性覆盖(我认为(税务类别。无论如何,我看不出如何从第二级图扩展程序上使用PXOverrideAttribute

这是我的示例:

public class OpportunityMaintExtOne : PXGraphExtension<PX.Objects.CR.OpportunityMaint.SalesTax, PX.Objects.CR.OpportunityMaint>
{ 
    [PXOverride]
    public virtual void CalcDocTotals(object row, decimal CuryTaxTotal, decimal CuryInclTaxTotal, decimal CuryWhTaxTotal,
        Action<object, decimal, decimal, decimal> del)
    {
        del?.Invoke(row, CuryTaxTotal, CuryInclTaxTotal, CuryWhTaxTotal);
        var someOtherTotal = Base1.Documents.Cache.GetValueAsDecimal<CROpportunityExtension.aMCurySomeOtherTotal>(row);
        if (someOtherTotal == 0)
        {
            return;
        }
        var curyDocTotal = someOtherTotal + Base1.Documents.Cache.GetValueAsDecimal<CROpportunity.curyProductsAmount>(row);
        Base1.Documents.Cache.SetValue<CROpportunity.curyProductsAmount>(row, curyDocTotal);
    }
}

我图形扩展中的 calcDoctotals内部发生了什么,这不是焦点。事实是,如果该方法位于第一级(基本(图中,我无法像我那样覆盖OpportunityMaint.SalesTax CalcDocTotals方法。Salestax Graph扩展程序具有受保护但受保护的方法(如果在基本图中(的方法,则如果您将方法调用公开(我已经完成(,则使用pxoverrideatTribute进行过多的效果。我还尝试使用一个声明的代表代替行动,但结果相同(正如我所期望的,但想确认(。

我的问题:是否可以使用PXOVERRIDEATTRIBUTE?

覆盖第二,第三等。

当我编译上面的代码和页面加载时,我会收到此错误:

方法void calcDoCttals(system.Object,system.decimal, system.Decimal,System.Decimal, System.Action`4 [System.Object,System.Decimal,System.Decimal,System.Decimal](( 在图中,扩展名为[pxoverride],但原始方法 在pxgraph

中尚未找到这样的名称

在2018R1更新4(18.104.0023(中添加了从更高级别扩展中覆盖扩展方法的能力。这解决了我的问题/问题,并允许我的问题中发布的代码原样运行。

,就我在Acumatica的年份所能看到的,您无法从Extension1等中覆盖Extension1等的方法。因此,我对问题的解决方案是:使用您的基本方法创建一个助手图,在任何要在中使用的图表中创建一个字段或属性(最好是懒惰的初始化(,然后在任何项目中都必须覆盖逻辑。ON,只需引用您的原始项目,并创建辅助图的扩展。

最新更新