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

时间:2016-06-16 17:10:10

标签: acumatica

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

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

2。)选中此复选框后,请勿显示“已批准”复选框。网格中的行。

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

我想知道的是 - 是否存在IEnumerable方法(我可以使用' summary'?),它可以检查标头过滤器字段并仅返回通过过滤器测试的行吗?如果是这样,我不确定这样做的语法是什么。

或者 - 使用添加的where子句重写Graph扩展中的Summary视图select语句会更好吗?

...谢谢

1 个答案:

答案 0 :(得分:0)

我想出了如何做到这一点。在图表扩展中,我重写了“摘要”和#39;查看,然后使用IEnumerable'摘要'委托仅返回符合我设置的复选框条件的行。即:

        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;
        }
    }