Acumatica 重写dataview委托方法

Acumatica 重写dataview委托方法,acumatica,Acumatica,我想覆盖PX.Objects.AR.ARStatementPrint图形上的details委托方法 这里是方法 protected virtual IEnumerable details() { ARSetup setup = ARSetup.Current; PrintParameters header = Filter.Current; List<DetailsResult> result = new List<DetailsResult>(

我想覆盖PX.Objects.AR.ARStatementPrint图形上的details委托方法

这里是方法

protected virtual IEnumerable details()
{
    ARSetup setup = ARSetup.Current;

    PrintParameters header = Filter.Current;
    List<DetailsResult> result = new List<DetailsResult>();
    if (header == null)
        yield break;

    GL.Company company = PXSelect<GL.Company>.Select(this);
    foreach (PXResult<ARStatement, Customer> it in PXSelectJoin<ARStatement,
            InnerJoin<Customer, On<Customer.bAccountID, Equal<ARStatement.statementCustomerID>>>,
            Where<ARStatement.statementDate, Equal<Required<ARStatement.statementDate>>,
                And<ARStatement.statementCycleId, Equal<Required<ARStatement.statementCycleId>>>>,
            OrderBy<Asc<ARStatement.statementCustomerID, Asc<ARStatement.curyID>>>>
            .Select(this, header.StatementDate, header.StatementCycleId))
    {
        DetailsResult res = new DetailsResult();
        ARStatement st = it;
        Customer cust = it;
        res.Copy(st, cust);

        if (setup?.ConsolidatedStatement != true && st.BranchID != header.BranchID)
                continue;

        if (Filter.Current.Action == 0 &&
            header.ShowAll != true &&
            (st.DontPrint == true || st.Printed == true))
                continue;

        if ((Filter.Current.Action == 1 || Filter.Current.Action == 2) &&
            header.ShowAll != true &&
            (st.DontEmail == true || st.Emailed == true))
                continue;

        if (cust.PrintCuryStatements == true)
        {
            if (Filter.Current.CuryStatements != true)
                continue;

            DetailsResult last = result.Count > 0 ? result[result.Count - 1] : null;
            if (last?.CustomerID == res.CustomerID && last?.CuryID == res.CuryID)
            {
                last.Append(res);
            }
            else
            {
                result.Add(res);
            }
        }
        else
        {
            if (Filter.Current.CuryStatements == true)
                continue;

            res.ResetToBaseCury(company.BaseCuryID);

            DetailsResult last = result.Count > 0 ? result[result.Count - 1] : null;
            if (last?.CustomerID == res.CustomerID)
            {
                last.Append(res);
            }
            else
            {
                result.Add(res);
            }
        }
    }

    foreach (var item in result)
    {
        var located = Details.Cache.Locate(item);
        if (located != null)
        {
            yield return located;
        }
        else
        {
            Details.Cache.SetStatus(item, PXEntryStatus.Held);
            yield return item;
        }
    }

    Details.Cache.IsDirty = false;
}
受保护的虚拟IEnumerable详细信息()
{
ARSetup setup=ARSetup.Current;
PrintParameters header=Filter.Current;
列表结果=新列表();
if(头==null)
屈服断裂;
总账公司=PXSelect.Select(此项);
foreach(px)将其生成px selectjoin
.Select(this,header.StatementDate,header.StatementCycleId))
{
DetailsResult res=新的DetailsResult();
陈述st=it;
客户客户=it;
副本(st、cust);
if(setup?.ConsolidatedStatement!=true&&st.BranchID!=header.BranchID)
继续;
如果(Filter.Current.Action==0&&
header.ShowAll!=真&&
(st.DontPrint==true | | st.Printed==true))
继续;
if((Filter.Current.Action==1 | | Filter.Current.Action==2)&&
header.ShowAll!=真&&
(st.DontEmail==true | | st.Emailed==true))
继续;
if(cust.PrintCuryStatements==true)
{
if(Filter.Current.CuryStatements!=真)
继续;
DetailsResult last=result.Count>0?结果[result.Count-1]:空;
if(last?.CustomerID==res.CustomerID&&last?.CuryID==res.CuryID)
{
最后,追加(res);
}
其他的
{
结果:添加(res);
}
}
其他的
{
if(Filter.Current.CuryStatements==true)
继续;
res.ResetToBaseCury(公司BaseCuryID);
DetailsResult last=result.Count>0?结果[result.Count-1]:空;
if(last?.CustomerID==res.CustomerID)
{
最后,追加(res);
}
其他的
{
结果:添加(res);
}
}
}
foreach(结果中的var项目)
{
var located=Details.Cache.Locate(项目);
如果(位于!=null)
{
收益率收益率;
}
其他的
{
Details.Cache.SetStatus(item,PXEntryStatus.hold);
收益回报项目;
}
}
Details.Cache.IsDirty=false;
}
我特别想更改foreach select语句,使其由另一个字段排序

foreach (PXResult<ARStatement, Customer> it in PXSelectJoin<ARStatement,
        InnerJoin<Customer, On<Customer.bAccountID, Equal<ARStatement.statementCustomerID>>>,
        Where<ARStatement.statementDate, Equal<Required<ARStatement.statementDate>>,
            And<ARStatement.statementCycleId, Equal<Required<ARStatement.statementCycleId>>>>,
        OrderBy<Asc<ARStatement.statementCustomerID, Asc<ARStatement.curyID>>>>
        .Select(this, header.StatementDate, header.StatementCycleId))
{
foreach(px)在px中生成它selectjoin
.Select(this,header.StatementDate,header.StatementCycleId))
{
我试过了
[PXOverride]

受保护的虚拟IEnumerable详细信息() {


但是运气不好,是否可以重写此方法?

我认为对于这样的重写,即使基本图方法受到保护,也需要将重写方法公开。请尝试以下操作

[PXOverride]
public virtual IEnumerable details()
{
   //override code here...
}

我认为对于这样的覆盖,即使基本图方法受到保护,也需要将覆盖方法公开

[PXOverride]
public virtual IEnumerable details()
{
   //override code here...
}

尝试此操作时是否出现任何错误?或者只是没有连接为覆盖?尝试此操作时是否出现任何错误?或者只是没有连接为覆盖?