Esempio n. 1
0
        //======================專案成本==========================//

        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));
        }
Esempio n. 2
0
        public string GetapplyDate(CVM_BudgetLevel bl)
        {
            string applyDate = "未申請";

            if (bl.budget.fApplydate != null)
            {
                applyDate = bl.budget.fApplydate.Value.ToString("yyyy/MM/dd");
            }
            return(applyDate);
        }
Esempio n. 3
0
        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);
        }
Esempio n. 4
0
        //======================專案預算書==========================//
        //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));
        }
Esempio n. 6
0
        //======================專案預算書==========================//

        //==========新增=======專案列表新增時,一併新增專案預算書=====//
        //==========編輯==========//
        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));
            }
        }
Esempio n. 7
0
        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));
        }
Esempio n. 8
0
        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);
        }
Esempio n. 9
0
        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));
        }
Esempio n. 10
0
        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);
        }