批准时间卡摘要过滤器自定义

Approve Time Card Summaries filter customization

我正在自定义“批准时间卡摘要”屏幕以执行以下操作:

1.) 在过滤器部分添加一个复选框

2.) 选中此复选框后,不在网格中显示 'Approved' 行。

我添加了一个带有新的未绑定布尔字段的缓存扩展,并将复选框添加到屏幕的过滤器/header 部分。

我想知道的是 - 是否有一个 IEnumerable 方法(我可以使用 'summary' 吗?)可以检查 header 过滤字段并且只产生 return 行通过过滤测试?如果是这样,我不确定这样做的语法是什么。

或者 - 在 Graph 扩展中重写摘要视图 select 语句并添加 where 子句会更好吗?

谢谢...

我知道怎么做了。在 Graph 扩展中,我重写了 'Summary' 视图,然后仅将 IEnumerable 'summary' 委托用于 return 满足我设置的复选框条件的行。即:

        public PXSelectJoin<EPSummaryApprove
        , LeftJoin<EPEarningType, On<EPEarningType.typeCD, Equal<EPSummaryApprove.earningType>>>
        , Where2<Where<EPSummaryApprove.taskApproverID, Equal<Current<EPSummaryFilter.approverID>>, Or<Where<EPSummaryApprove.taskApproverID, IsNull, And<EPSummaryApprove.approverID, Equal<Current<EPSummaryFilter.approverID>>>>>>
            , And2<Where<EPSummaryApprove.weekId, GreaterEqual<Current<EPSummaryFilter.fromWeek>>, Or<Current<EPSummaryFilter.fromWeek>, IsNull>>
                , And2<Where<EPSummaryApprove.weekId, LessEqual<Current<EPSummaryFilter.tillWeek>>, Or<Current<EPSummaryFilter.tillWeek>, IsNull>>
                    , And2<Where<EPSummaryApprove.projectID, Equal<Current<EPSummaryFilter.projectID>>, Or<Current<EPSummaryFilter.projectID>, IsNull>>
                        , And2<Where<EPSummaryApprove.projectTaskID, Equal<Current<EPSummaryFilter.projectTaskID>>, Or<Current<EPSummaryFilter.projectTaskID>, IsNull>>
                            , And<Where<EPSummaryApprove.employeeID, Equal<Current<EPSummaryFilter.employeeID>>, Or<Current<EPSummaryFilter.employeeID>, IsNull>>
                                >
                            >
                        >
                    >
                >
            >
        > Summary;

    protected IEnumerable summary()
    {
        var epsf = (EPSummaryFilter)Base.Filter.Cache.Current;
        var epse =   PXCache<EPSummaryFilter>.GetExtension<EPSummaryFilterExt>(epsf);

        foreach(var res in Base.Summary.Select())
        {
            var sum = (EPSummaryApprove)res;

            if (epse != null)
            {
                if (epse.ExcludeApproved == true)
                {
                    if (sum.IsApprove != true)
                    {
                        yield return res;
                    }
                }
                else
                    yield return res;
            }
            else
                yield return res;
        }
    }