//======================專案成本==========================// public ActionResult projectCost(int prjId) { CVM_BudgetLevel bl = new CVM_BudgetLevel(); bl.budget = db.tBudgets.Where(p => p.fProjectId == prjId).FirstOrDefault(); bl.levels = db.tLevels.Where(m => m.fProjectId == prjId).ToList(); double budget = Convert.ToDouble(bl.budget.fBudget); var creatdDate = db.tProjects.Where(p => p.fProjectId == prjId).FirstOrDefault().fCreatdDate; var dateline = db.tProjects.Where(p => p.fProjectId == prjId).FirstOrDefault().fDateline; ViewBag.LevelName = getNameCost(bl, prjId).levelname; ViewBag.LevelCost = getNameCost(bl, prjId).levelcost; ViewBag.TaskName = getNameCost(bl, prjId).taskname; ViewBag.TaskCost = getNameCost(bl, prjId).tasklcost; ViewBag.Month = accumulateCost(bl, prjId).months; ViewBag.AccumulateCost = accumulateCost(bl, prjId).cost; ViewBag.Allcost = accumulateCost(bl, prjId).allCost; ViewBag.CreatdDate = creatdDate.Year + "/" + creatdDate.Month; ViewBag.Dateline = dateline.Value.Year + "/" + dateline.Value.Month; ViewBag.Progress = Convert.ToInt32((db.tProjects.Where(m => m.fProjectId == prjId).FirstOrDefault().fProgress) * 100); double budgetRate = accumulateCost(bl, prjId).allCost / budget; ViewBag.BudgetRate = Math.Round(budgetRate, 2) * 100; return(View(bl)); }
public string GetapplyDate(CVM_BudgetLevel bl) { string applyDate = "未申請"; if (bl.budget.fApplydate != null) { applyDate = bl.budget.fApplydate.Value.ToString("yyyy/MM/dd"); } return(applyDate); }
public (string[] months, int[] cost, double allCost) accumulateCost(CVM_BudgetLevel bl, int prjId) { //所有費用合計 double allCost = 0; //簽約費 int price = Convert.ToInt32(db.tProjects.Where(p => p.fProjectId == prjId).FirstOrDefault().fPrice); //管銷費用 int managementCost = Convert.ToInt32(bl.budget.fManagementFeePct * price); //經歷的所有月份 var monthList = (from p in db.tTimeRecords where p.fProjectId == prjId select p.fDate.Month).Distinct().ToList(); var monthsNums = monthList.Count(); string[] months = new string[monthsNums]; for (int i = 0; i < monthsNums; i++) { months[i] = monthList[i] + "月"; } //各月的花費 int[] cost = new int[monthsNums]; List <tTimeRecord> recordList = new List <tTimeRecord>(); for (int i = 0; i < monthsNums; i++) { //月分 var nowmonth = monthList[i]; var monthRecord = db.tTimeRecords.Where(p => p.fDate.Month == nowmonth).Where(p => p.tProjectDetail.fProjectId == prjId).ToList(); foreach (var item in monthRecord) { //算出各月分花費 cost[i] = Convert.ToInt32(item.fTime * item.tEmployee.fSalaryHour); } } //各月份累加費用 if (monthsNums > 0) { cost[0] = managementCost; for (int i = 1; i < monthsNums; i++) { cost[i] += cost[i - 1]; } //所有費用合計 allCost = cost[monthsNums - 1]; } return(months, cost, allCost); }
//======================專案預算書==========================// //public ActionResult EditBudget(int? prjId) //{ // if (TempData.ContainsKey("prjId")) // { // var prjId_fromCreateLevel = TempData["prjId"] as int?; // HttpCookie cookie = Request.Cookies["id"]; // int empId = Convert.ToInt32(cookie.Value); // CVM_BudgetLevel bl = new CVM_BudgetLevel(); // bl.budget = db.tBudgets.Where(p => p.fProjectId == prjId_fromCreateLevel).FirstOrDefault(); // bl.levels = db.tLevels.Where(m => m.fProjectId == prjId_fromCreateLevel).ToList(); // ViewBag.PassDate = GetapplyDate(bl); // return View(bl); // } // else // { // HttpCookie cookie = Request.Cookies["id"]; // int empId = Convert.ToInt32(cookie.Value); // CVM_BudgetLevel bl = new CVM_BudgetLevel(); // bl.budget = db.tBudgets.Where(p => p.fProjectId == prjId).FirstOrDefault(); // bl.levels = db.tLevels.Where(m => m.fProjectId == prjId).ToList(); // ViewBag.PassDate = GetapplyDate(bl); // return View(bl); // } //} public ActionResult EditBudget(int?prjId) { HttpCookie cookie = Request.Cookies["id"]; int empId = Convert.ToInt32(cookie.Value); CVM_BudgetLevel bl = new CVM_BudgetLevel(); bl.budget = db.tBudgets.Where(p => p.fProjectId == prjId).FirstOrDefault(); bl.levels = db.tLevels.Where(m => m.fProjectId == prjId).ToList(); ViewBag.ApplyDate = GetapplyDate(bl); return(View(bl)); }
//===========================工時紀錄=============================// public ActionResult Index() { var budgets = db.tBudgets.Where(p => p.fagree == "待審核").ToList(); List <CVM_BudgetLevel> list = new List <CVM_BudgetLevel>(); for (int i = 0; i < budgets.Count(); i++) { CVM_BudgetLevel bl = new CVM_BudgetLevel(); bl.budget = budgets[i]; bl.levels = db.tLevels.Where(p => p.fProjectId == bl.budget.fProjectId).ToList(); list.Add(bl); } return(View(list)); }
//======================專案預算書==========================// //==========新增=======專案列表新增時,一併新增專案預算書=====// //==========編輯==========// public ActionResult EditBudget(int?prjId) { if (TempData.ContainsKey("prjId")) { var prjId_fromCreateLevel = TempData["prjId"] as int?; CVM_BudgetLevel bl = new CVM_BudgetLevel(); bl.budget = db.tBudgets.Where(p => p.fProjectId == prjId_fromCreateLevel).FirstOrDefault(); bl.levels = db.tLevels.Where(m => m.fProjectId == prjId_fromCreateLevel).ToList(); return(View(bl)); } else { CVM_BudgetLevel bl = new CVM_BudgetLevel(); bl.budget = db.tBudgets.Where(p => p.fProjectId == prjId).FirstOrDefault(); bl.levels = db.tLevels.Where(m => m.fProjectId == prjId).ToList(); return(View(bl)); } }
public ActionResult Dashboard(int?prjId) { int _prjId = Convert.ToInt32(prjId); CVM_BudgetLevel bl = new CVM_BudgetLevel(); bl.budget = db.tBudgets.Where(p => p.fProjectId == _prjId).FirstOrDefault(); bl.levels = db.tLevels.Where(m => m.fProjectId == _prjId).ToList(); double budget = Convert.ToDouble(bl.budget.fBudget); var creatdDate = db.tProjects.Where(p => p.fProjectId == _prjId).FirstOrDefault().fCreatdDate; var dateline = db.tProjects.Where(p => p.fProjectId == _prjId).FirstOrDefault().fDateline; ViewBag.Todo = db.tProjectDetails.Where(p => p.fProjectId == prjId).Where(p => p.fStatus == "未開始").Count(); ViewBag.Doing = db.tProjectDetails.Where(p => p.fProjectId == prjId).Where(p => p.fStatus == "進行中").Count(); ViewBag.Acceptance = db.tProjectDetails.Where(p => p.fProjectId == prjId).Where(p => p.fStatus == "待驗收").Count(); ViewBag.Finish = db.tProjectDetails.Where(p => p.fProjectId == prjId).Where(p => p.fStatus == "驗收完成").Count(); ViewBag.LevelName = getNameCost(bl, _prjId).levelname; ViewBag.LevelCost = getNameCost(bl, _prjId).levelcost; ViewBag.TaskName = getNameCost(bl, _prjId).taskname; ViewBag.TaskCost = getNameCost(bl, _prjId).tasklcost; ViewBag.Month = accumulateCost(bl, _prjId).months; ViewBag.AccumulateCost = accumulateCost(bl, _prjId).cost; ViewBag.Allcost = accumulateCost(bl, _prjId).allCost; ViewBag.CreatdDate = creatdDate.Year + "/" + creatdDate.Month; ViewBag.Dateline = dateline.Value.Year + "/" + dateline.Value.Month; ViewBag.Progress = Convert.ToInt32((db.tProjects.Where(m => m.fProjectId == prjId).FirstOrDefault().fProgress) * 100); double budgetRate = 0; if (budget == 0) { ViewBag.BudgetRate = 0; } else { budgetRate = accumulateCost(bl, _prjId).allCost / budget; ViewBag.BudgetRate = Math.Round(budgetRate, 2) * 100; } return(View(bl)); }
public string EditBudget(int?prjId, CVM_BudgetLevel target) { //---------編輯階預算書--------// var budget = db.tBudgets.Where(p => p.fProjectId == prjId).FirstOrDefault(); budget.fSalaryHour = target.budget.fSalaryHour; budget.fManagementFeePct = target.budget.fManagementFeePct; budget.fApplydate = todayDate; budget.fagree = "待審核"; CVM_BudgetLevel bl = new CVM_BudgetLevel(); bl.levels = db.tLevels.Where(m => m.fProjectId == prjId).ToList(); //多個時段 bl.budget = db.tBudgets.Where(m => m.fProjectId == prjId).FirstOrDefault(); //一個預算書 //--------編輯階段表(多個)-----// var level = db.tLevels.Where(m => m.fProjectId == prjId).ToList(); for (int i = 0; i < level.Count(); i++) { level[i].fEstimateTime = Convert.ToInt32(target.levels[i].fEstimateTime); } int totaltime = 0; for (int i = 0; i < level.Count; i++) { totaltime += Convert.ToInt32(level[i].fEstimateTime); } int personnelCost = Convert.ToInt32(totaltime * budget.fSalaryHour); int managementFee = Convert.ToInt32(bl.budget.fManagementFeePct * bl.budget.tProject.fPrice); int totalBuget = personnelCost + managementFee; budget.fBudget = totalBuget; db.SaveChanges(); return("success"); //return View(bl); }
public ActionResult prjCostData(int prjId) { CVM_BudgetLevel bl = new CVM_BudgetLevel(); bl.budget = db.tBudgets.Where(p => p.fProjectId == prjId).FirstOrDefault(); bl.levels = db.tLevels.Where(m => m.fProjectId == prjId).ToList(); var list = from l in db.tLevels join b in db.tBudgets on l.fProjectId equals b.fProjectId where l.fProjectId == prjId select new { //階段名稱 Levelname = l.fLevelName, //預估費用 EstimateCost = (b.fSalaryHour * l.fEstimateTime).ToString(), //EstimateCost = convertMoney(b.fSalaryHour * l.fEstimateTime), //已花費用 cost = l.fSpendCost.ToString() }; return(Json(list.ToList(), JsonRequestBehavior.AllowGet)); }
public (string[] taskname, int[] tasklcost, string[] levelname, int[] levelcost) getNameCost(CVM_BudgetLevel bl, int prjId) { //找出此案的所有任務 var tasks = db.tProjectDetails.Where(p => p.fProjectId == prjId).ToList(); int taskcount = tasks.Count(); //任務名稱 string[] taskName = new string[taskcount]; //任務時數 int[] tasklCost = new int[taskcount]; //找出此案的所有階段 var levels = db.tLevels.Where(p => p.fProjectId == prjId).ToList(); int levelcount = levels.Count(); //階段名稱 string[] levelName = new string[levelcount]; //階段id int[] levelId = new int[levelcount]; //階段時數 int[] levelCost = new int[levelcount]; for (int i = 0; i < taskcount; i++) { //任務名稱 taskName[i] = tasks[i].fTaskName; int SalaryHour = 200; if (tasks[i].tEmployee != null) { SalaryHour = Convert.ToInt32(tasks[i].tEmployee.fSalaryHour); } //各任務費用 tasklCost[i] = Convert.ToInt32(tasks[i].fTimes) * SalaryHour; } for (int i = 0; i < levelcount; i++) { levelName[i] = levels[i].fLevelName; levelId[i] = levels[i].fLevelId; //各階段費用 levelCost[i] = Convert.ToInt32(levels[i].fSpendCost); } return(taskName, tasklCost, levelName, levelCost); }