Esempio n. 1
0
        //This controller obtains a list of pay summary objects for the week selected in the UI
        public ActionResult GetPayData(TimeSheet model)
        {
            List <PaySummary> paySumList = new List <PaySummary>();
            PaySummary        paySum     = new PaySummary();
            var        wED    = model.WeekEnding;
            List <int> empIds = paySum.GetEmpIdsByWeekEndDate(wED);

            foreach (int empId in empIds)
            {
                paySumList.Add(new PaySummary(empId, wED));
            }

            Session["PaySummaryList"] = paySumList;

            return(RedirectToAction("Index", "HR"));
        }
Esempio n. 2
0
        private IEnumerable <PaySummary> GetRepaySummaryList()
        {
            var allRepayTask =
                context.li_repayment_tasks.Where(r => r.status != (int)Agp2pEnums.RepaymentStatusEnum.Invalid)
                .OrderByDescending(r => r.should_repay_time);

            var query2 = allRepayTask.GroupBy(r => r.should_repay_time.Year + "年" + r.should_repay_time.Month + "月");
            var query3 = query2.AsEnumerable().OrderByDescending(r => r.Key).Zip(Utils.Infinite(1), (rt, no) => new { rt, no }).Select(rs =>
            {
                var repayTasks        = rs.rt;
                PaySummary paySummary = new PaySummary
                {
                    Index     = rs.no.ToString(),
                    YearMonth = repayTasks.Key
                };
                //已付款
                repayTasks.Where(r => r.status >= (int)Agp2pEnums.RepaymentStatusEnum.ManualPaid).ForEach(r =>
                {
                    getRepayTransactions(r).ForEach(p =>
                    {
                        paySummary.RepayAmount += p.interest + p.principal ?? p.principal;
                        paySummary.RepayCount++;
                    });
                });
                //逾期付款
                int overTimePay = repayTasks.Where(r => r.status == (int)Agp2pEnums.RepaymentStatusEnum.OverTimePaid).Sum(r => getRepayTransactions(r).Count());
                //逾期未付款
                int overTimeNotPay           = 0;
                decimal overTimeNotPayAmount = 0;
                repayTasks.Where(r => r.status == (int)Agp2pEnums.RepaymentStatusEnum.OverTime).ForEach(r =>
                {
                    getRepayTransactions(r).ForEach(p =>
                    {
                        overTimeNotPayAmount += p.interest + p.principal ?? p.principal;
                        overTimeNotPay++;
                    });
                });
                //未到期付款
                int noYetPay           = 0;
                decimal noYetPayAmount = 0;
                repayTasks.Where(r => r.status == (int)Agp2pEnums.RepaymentStatusEnum.Unpaid).ForEach(r =>
                {
                    getRepayTransactions(r).ForEach(p =>
                    {
                        noYetPayAmount += p.interest + p.principal ?? p.principal;
                        noYetPay++;
                    });
                });

                paySummary.ShouldRepayCount  = paySummary.RepayCount + overTimeNotPay + noYetPay;
                paySummary.ShouldRepayAmount = (paySummary.RepayAmount + overTimeNotPayAmount + noYetPayAmount).ToString("c");
                paySummary.RepayRate         = (paySummary.RepayCount / paySummary.ShouldRepayCount).ToString("P1");
                paySummary.RepayOnTimeCount  = paySummary.RepayCount - overTimePay;
                paySummary.RepayOnTimeRate   = (paySummary.RepayOnTimeCount / paySummary.ShouldRepayCount).ToString("P1");
                paySummary.OverCount         = overTimePay + overTimeNotPay;
                paySummary.OverRate          = (paySummary.OverCount / paySummary.ShouldRepayCount).ToString("P1");
                paySummary.OverNoRepayCount  = overTimeNotPay;
                paySummary.OverNoRepayRate   = (overTimeNotPay / paySummary.ShouldRepayCount).ToString("P1");

                return(paySummary);
            }).AsQueryable();

            totalCount = query3.Count();
            return(query3);
        }