Esempio n. 1
0
        public IEnumerable filteredItems()
        {
            bool found = false;

            foreach (EPTimeCardRow item in FilteredItems.Cache.Inserted)
            {
                found = true;
                yield return(item);
            }
            if (found)
            {
                yield break;
            }

            PXSelectBase <EPTimeCardRow> select = new PXSelectJoin <EPTimeCardRow,
                                                                    LeftJoin <EPEmployee, On <EPEmployee.bAccountID, Equal <EPTimeCard.employeeID> >,
                                                                              LeftJoin <EPApproval, On <EPApproval.refNoteID, Equal <EPTimeCardRow.noteID> >,
                                                                                        LeftJoin <EPEmployeeEx, On <EPEmployeeEx.userID, Equal <EPApproval.approvedByID> > > > >,
                                                                    Where <EPTimeCardRow.isApproved, Equal <True>,
                                                                           And2 <Where <EPTimeCardRow.isReleased, NotEqual <True>, Or <EPTimeCardRow.isReleased, IsNull> >,
                                                                                 And2 <Where <EPTimeCardRow.isHold, NotEqual <True>, Or <EPTimeCardRow.isHold, IsNull> >,
                                                                                       And <Where <EPTimeCardRow.isRejected, NotEqual <True>, Or <EPTimeCardRow.isRejected, IsNull> > > > > >,
                                                                    OrderBy <Asc <EPTimeCardRow.timeCardCD,
                                                                                  Desc <EPTimeCardRow.approveDate> > > >(this);

            List <string> timeCards = new List <string>();

            foreach (PXResult <EPTimeCardRow, EPEmployee, EPApproval, EPEmployeeEx> res in select.Select())
            {
                EPTimeCardRow rec = (EPTimeCardRow)res;
                if (!timeCards.Contains(rec.TimeCardCD))
                {
                    timeCards.Add(rec.TimeCardCD);
                    EPEmployee   employee = (EPEmployee)res[1];
                    EPApproval   approval = (EPApproval)res;
                    EPEmployeeEx approver = (EPEmployeeEx)res[3];


                    rec.EmployeeCD   = employee.AcctCD;
                    rec.EmployeeName = employee.AcctName;
                    rec.ApproveDate  = approval.ApproveDate;
                    rec.ApprovedBy   = approver.AcctCD;

                    RecalculateTotals(rec);

                    FilteredItems.Cache.SetStatus(rec, PXEntryStatus.Inserted);
                    yield return(rec);
                }
            }

            FilteredItems.Cache.IsDirty = false;
        }
Esempio n. 2
0
        public IEnumerable filteredItems()
        {
            //due to 2-level approval JOIN to EPApprovalEx can produce duplicate records.
            //timecards hashset maintains the list of unique items.
            HashSet <string> timeCards = new HashSet <string>();

            bool found = false;

            foreach (EPTimeCardRow item in FilteredItems.Cache.Inserted)
            {
                timeCards.Add(item.TimeCardCD);

                found = true;
                yield return(item);
            }
            if (found)
            {
                yield break;
            }

            PXSelectBase <EPTimeCardRow> select = new PXSelectJoin <EPTimeCardRow,
                                                                    LeftJoin <EPEmployee, On <EPEmployee.bAccountID, Equal <EPTimeCardRow.employeeID> >,
                                                                              LeftJoin <EPApprovalEx, On <EPApprovalEx.refNoteID, Equal <EPTimeCardRow.noteID> >,
                                                                                        LeftJoin <EPEmployeeEx, On <EPEmployeeEx.userID, Equal <EPApprovalEx.approvedByID> > > > >,
                                                                    Where <EPTimeCardRow.isApproved, Equal <True>,
                                                                           And2 <Where <EPTimeCardRow.isReleased, NotEqual <True>, Or <EPTimeCardRow.isReleased, IsNull> >,
                                                                                 And2 <Where <EPTimeCardRow.isHold, NotEqual <True>, Or <EPTimeCardRow.isHold, IsNull> >,
                                                                                       And <Where <EPTimeCardRow.isRejected, NotEqual <True>, Or <EPTimeCardRow.isRejected, IsNull> > > > > >,
                                                                    OrderBy <Asc <EPTimeCardRow.timeCardCD,
                                                                                  Desc <EPTimeCardRow.approveDate> > > >(this);//Sort by approveDate to display last approver (for 2-level approval)


            foreach (PXResult <EPTimeCardRow, EPEmployee, EPApprovalEx, EPEmployeeEx> res in select.Select())
            {
                EPTimeCardRow rec      = (EPTimeCardRow)res;
                EPApprovalEx  approval = (EPApprovalEx)res;
                EPEmployeeEx  approver = (EPEmployeeEx)res[3];
                if (timeCards.Add(rec.TimeCardCD))
                {
                    rec.ApproveDate    = approval.ApproveDate;
                    rec.ApprovedByID   = approver.AcctCD;
                    rec.ApprovedByName = approver.AcctName;
                    FilteredItems.Cache.SetStatus(rec, PXEntryStatus.Inserted);
                    yield return(rec);
                }
            }

            FilteredItems.Cache.IsDirty = false;
        }