// GET: CompanyPayType public ActionResult Index() { var payTypes = CompanyPayTypeHelper.PayTypeList(); var salaryPayType = payTypes.FirstOrDefault(i => i.Id == SalaryPayType); if (salaryPayType == null) { //初次加载,初始化薪资支出与进水支出类别,且不允许删除 List <CompanyPayType> payTypeMods = new List <CompanyPayType> { new CompanyPayType { Id = SalaryPayType, PayType = "员工薪资支出" }, new CompanyPayType { Id = BucketPayType, PayType = "进水支出" } }; MongoBase.Insert(payTypeMods); } ViewBag.flag = "payTypes"; return(View(payTypes)); }
/// <summary> /// 工资发放 /// </summary> /// <param name="staffSalary"></param> /// <returns></returns> public ActionResult PaySalary(StaffSalary staffSalary) { //检查该月份该员工是否已经发过工资 var staffSal = SalaryHelper.CheckIfPaid(staffSalary.StaffId, staffSalary.SalaryMonth); if (staffSal != null) { TempData["CheckErr"] = "该员工" + staffSalary.SalaryMonth.Year + "-" + staffSalary.SalaryMonth.Month + "的薪资已经发放,请核查"; return(RedirectToAction("SalaryList")); } //获取该员工该薪资月的送水记录,统计提成用 var dailyRecords = DailyRecordHelper.DailyRecordList() .Where(item => item.VisitDate.Year == staffSalary.SalaryMonth.Year && item.VisitDate.Month == staffSalary.SalaryMonth.Month && item.StaffId == staffSalary.StaffId); //判断是否需要薪资发放类型 var salaryType = CompanyPayTypeHelper.GetById(SalaryPayType); if (salaryType == null) { MongoBase.Insert(new CompanyPayType { Id = SalaryPayType, PayType = "员工薪资支出" }); } staffSalary.Id = ObjectId.NewObjectId().ToString(); staffSalary.Commission = dailyRecords.Sum(i => i.SendBucketAmount) * Commission(); //提成 MongoBase.Insert(staffSalary); //公司当月支出增多相应金额 CompanyPayRecord companyRecord = new CompanyPayRecord() { Id = ObjectId.NewObjectId().ToString(), IsPayType = true, PayTypeId = SalaryPayType, StaffId = staffSalary.StaffId, TransSum = staffSalary.Salary, TransTime = Convert.ToDateTime(staffSalary.SalaryMonth + "-28") }; MongoBase.Insert(companyRecord); return(RedirectToAction("SalaryList")); }
public ActionResult CompanyPay() { var companyPayType = CompanyPayTypeHelper.PayTypeList(); var salaryPay = companyPayType.FirstOrDefault(i => i.Id == SalaryPayType); //某些支出类型需关联水厂(押金支出与退回、进水..) var factories = FactoryHelper.FactoryList(); factories.Insert(0, new Factory { Id = "", FactoryName = "" }); if (salaryPay != null) { companyPayType.Remove(salaryPay);//公司交易中隐藏工资发放,工资发放在收支汇总中单独完成 } var staffInfo = StaffHelper.StaffList(); ViewBag.Staffs = staffInfo; ViewBag.Factories = factories; ViewBag.flag = "CompanyPay"; return(View(companyPayType)); }
public ActionResult Delete(string id) { CompanyPayTypeHelper.Delete(id); return(RedirectToAction("Index")); }
/// <summary> /// 1. 水厂库存明细,统计字段:交易年月 产品名称 库存 空桶库存 /// 2. 水厂交易明细 支付总押金 退还总押金 进水总支出 /// </summary> /// <returns></returns> public ActionResult TransRecord(string yearMonth, string factoryId) { int year; int month; if (string.IsNullOrEmpty(yearMonth)) { //默认显示上一个月的月底结算情况 year = DateTime.Now.AddMonths(-1).Year; month = DateTime.Now.AddMonths(-1).Month; yearMonth = year + "-" + month; } else { year = int.Parse(yearMonth.Split('-')[0]); month = int.Parse(yearMonth.Split('-')[1]); } var factories = FactoryHelper.FactoryList(); var products = ProductHelper.ProductList(); var payTypes = CompanyPayTypeHelper.PayTypeList(); //选定年月下的日常、公司交易记录 var companyRecords = CompanyRecordHelper.CompanyList(); var dailyRecords = DailyRecordHelper.DailyRecordList(); //1.库存明细 var factoryStocks = (from r in dailyRecords join p in products on r.SendProductId equals p.Id where r.VisitDate.Year == year && r.VisitDate.Month == month join f in factories on p.FactoryId equals f.Id where f.Id == (string.IsNullOrEmpty(factoryId) ? f.Id : factoryId) group new { p.FactoryId, p.Id, r.SendBucketAmount, r.ReceiveEmptyBucketAmount, p.ProductName, f.FactoryName } by new { p.FactoryId, p.Id } into t select new FactoryStock { FactoryName = t.First().FactoryName, TransMonth = yearMonth, ProductName = t.First().ProductName, BucketStock = t.Sum(i => i.SendBucketAmount), EmptyBucketStock = t.Sum(i => i.ReceiveEmptyBucketAmount) }).OrderByDescending(item => item.FactoryName); //2.交易明细 var factoryTrans = (from c in companyRecords join f in factories on c.FactoryId equals f.Id where c.TransTime.Year == year && c.TransTime.Month == month && f.Id == (string.IsNullOrEmpty(factoryId) ? f.Id : factoryId) join p in payTypes on c.PayTypeId equals p.Id group new { c.IsPayType, c.TransSum, f.FactoryName, p.PayType } by new { c.FactoryId, c.PayTypeId } into t select new FactoryTrans { FactoryName = t.First().FactoryName, TransType = t.First().PayType, IsPayType = t.First().IsPayType, TransSum = t.Sum(i => i.TransSum), TransMonth = yearMonth }).OrderByDescending(item => item.FactoryName); FactorySumaryViewModel factorySumary = new FactorySumaryViewModel { FactoryStock = factoryStocks.ToList(), FactoryTrans = factoryTrans.ToList() }; ViewBag.queryPam = JsonConvert.SerializeObject(new { YearMonth = yearMonth, FactoryId = factoryId }); factories.Insert(0, new Factory { Id = "", FactoryName = "" }); ViewBag.factories = factories; ViewBag.flag = "FactoryTransRecord"; ViewBag.YearMonth = yearMonth; return View(factorySumary); }
public ActionResult CompanyRecord() { //获取页条数 int pageSize = PageSize(); var companyRecords = CompanyRecordHelper.CompanyList(); var companyPayRecords = TempData["queryRecords"] == null ? companyRecords.OrderByDescending(item => item.TransTime).Skip(0).Take(pageSize) : TempData["queryRecords"] as List <CompanyPayRecord>; //用于导出的所有纪录 var allRecords = TempData["allRecords"] == null ? companyRecords.OrderByDescending(item => item.TransTime).ToList() : TempData["allRecords"] as List <CompanyPayRecord>; var staffs = StaffHelper.StaffList(); var paytypes = CompanyPayTypeHelper.PayTypeList(); var payRecordInfo = (from r in companyPayRecords join p in paytypes on r.PayTypeId equals p.Id join s in staffs on r.StaffId equals s.Id select new CompanyPayRecordDesc() { StaffName = s.StaffName, PayTypeDesc = p.PayType, IsPayType = r.IsPayType, TransSum = r.TransSum, TransTime = r.TransTime, Describe = r.Describe }).ToList(); var allRecordsToExport = (from r in allRecords join p in paytypes on r.PayTypeId equals p.Id join s in staffs on r.StaffId equals s.Id select new CompanyPayRecordDesc() { StaffName = s.StaffName, PayTypeDesc = p.PayType, IsPayType = r.IsPayType, TransSum = r.TransSum, TransTime = r.TransTime, Describe = r.Describe }).ToList(); ViewBag.AllRecords = allRecordsToExport; ViewBag.Staffs = staffs; ViewBag.Paytypes = paytypes; ViewBag.queryPam = TempData["queryMod"] == null ? "{}" : JsonConvert.SerializeObject(TempData["queryMod"]); ViewBag.totalPage = TempData["totalPage"] == null ? (companyRecords.Count() % pageSize == 0 ? companyRecords.Count() / pageSize : Math.Ceiling(Convert.ToDouble(companyRecords.Count()) / pageSize)) : int.Parse(TempData["totalPage"].ToString()); ViewBag.totalSize = TempData["totalSize"] == null ? companyRecords.Count : int.Parse(TempData["totalSize"].ToString()); ViewBag.currentPage = TempData["currentPage"] == null ? 1 : int.Parse(TempData["currentPage"].ToString()); ViewBag.flag = "CompanyRecord"; return(View(payRecordInfo)); }
/// <summary> /// 公司结算汇总 /// </summary> /// <returns></returns> public ActionResult CompanyEnd(string payTypeId, string yearMonth) { var companyRecords = TempData["companyRecords"] != null ? TempData["companyRecords"] as List <CompanyPayRecord> : CompanyRecordHelper.CompanyList(); var payType = CompanyPayTypeHelper.PayTypeList(); //日常记录信息,用于统计提成 var dailyRecords = DailyRecordHelper.DailyRecordList(); //按年月分组 var comRecordsMonth = companyRecords .OrderByDescending(item => item.TransTime) .GroupBy(item => new { item.TransTime.Year, item.TransTime.Month }) .Select(g => new CompanyPayRecord { TransTime = g.First().TransTime, TransSum = g.Sum(i => i.IsPayType ? -i.TransSum : i.TransSum) }).ToList(); //按年月、消费类型分组 var comRecordsMonType = companyRecords .OrderByDescending(item => item.TransTime) .GroupBy(item => new { item.TransTime.Year, item.TransTime.Month, item.PayTypeId }) .Select(g => new CompanyPayRecord { TransTime = g.First().TransTime, TransSum = g.Sum(i => i.IsPayType ? -i.TransSum : i.TransSum), PayTypeId = g.First().PayTypeId }).Join(payType, x => x.PayTypeId, y => y.Id, (x, y) => new { x, y }) .Select(p => new CompanyPayRecordDesc { TransTime = p.x.TransTime, TransSum = p.x.TransSum, PayTypeDesc = p.y.PayType }).ToList(); //公司月底结算,动态加入员工提成 double commission = Commission(); foreach (var item in comRecordsMonth) { int sumBucket = dailyRecords.Where(i => i.VisitDate.Year == item.TransTime.Year && i.VisitDate.Month == item.TransTime.Month) .Sum(i => i.SendBucketAmount); //当月总支出减去员工提成 item.TransSum -= sumBucket * commission; //年月消费类型集合中添加该月员工统计提成条目 int index = comRecordsMonType.FindLastIndex(t => t.TransTime.Year == item.TransTime.Year && t.TransTime.Month == item.TransTime.Month); comRecordsMonType.Insert(index + 1, new CompanyPayRecordDesc { PayTypeDesc = "员工提成(" + commission + "元/桶)", TransTime = item.TransTime, TransSum = -sumBucket * commission }); } CompanyPayRecordViewModel viewModel = new CompanyPayRecordViewModel() { CompanyPayRecord = comRecordsMonth, CompanyPayRecordDesc = comRecordsMonType }; //记录查询条件 ViewBag.queryPam = JsonConvert.SerializeObject(new { YearMonth = yearMonth, PayTypeId = payTypeId }); ViewBag.flag = "CompanyEnd"; ViewBag.PayType = payType; return(View(viewModel)); }