2016-06-16 4 views
0

나는 다음을 수행 할 시간 카드 요약 화면을 승인 정의하고 있습니다 :승인 시간 카드 요약 필터 사용자 정의

1.) 필터 섹션

2)에 체크 박스를 추가이 확인란을 선택하면 표에서 승인 된 행을 표시하지 마십시오.

새로운 언 바운드 부울 필드가있는 캐시 확장을 추가하고 화면의 필터/헤더 섹션에 확인란을 추가했습니다.

내가 궁금해하네요 - IEnumerable 메서드는 (내가 '요약'을 사용할 수 있습니까?) 그 헤더 필터 필드를 확인하고 오직 필터 테스트를 통과하는 행을 반환 할 수 있습니까? 그렇다면 구문을 통해이 작업을 수행 할 수 있는지 확실하지 않습니다.

또는 추가 된 where 절을 사용하여 그래프 확장의 요약보기 select 문을 다시 작성하는 것이 더 좋을까요?

고마워 ...

답변

0

나는 이것을하는 방법을 알아 냈습니다. 그래프 확장에서 '요약'보기를 다시 작성한 다음 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; 
     } 
    }