Exemplo n.º 1
0
        public ActionResult Edit(BudgetLimit budgetLimit)
        {
            if (ModelState.IsValid)
            {
                try
                {
                    var limitDto = _budgetLimitService.GetLimitData(budgetLimit.CostSubItemID.Value, budgetLimit.DepartmentID.Value, budgetLimit.ProjectID, budgetLimit.Year.Value, budgetLimit.Month.Value);
                    if (limitDto != null)
                    {
                        budgetLimit.LimitAmountApproved = limitDto.LimitAmountReserved;
                        budgetLimit.FundsExpendedAmount = limitDto.LimitAmountActuallySpent;
                    }
                    else
                    {
                        budgetLimit.LimitAmountApproved = 0;
                        budgetLimit.FundsExpendedAmount = 0;
                    }
                }
                catch (Exception ex) { }

                _budgetLimitService.Update(budgetLimit);
                return(RedirectToAction("Index"));
            }

            SetViewBag(budgetLimit);
            return(View(budgetLimit));
        }
Exemplo n.º 2
0
        private LongRunningTaskReport ImportBudgetLimitRecords(DataTable budgetLimitTable, int year, bool onlyValidate, string[] execludedColumns)
        {
            LongRunningTaskReport report = new LongRunningTaskReport("Отчет о загрузке данных о лимитах за месяц", "");

            Dictionary <string, int> mounthDict = GetMounth();

            double countRow = budgetLimitTable.Rows.Count;

            for (int i = 0; i < budgetLimitTable.Rows.Count; i++)
            {
                int percent = i == 0 ? 1 : (int)((i / countRow) * 100);
                SetStatus(percent, "Обработано данных");
                var row     = budgetLimitTable.Rows[i];
                var section = row["Section"].ToString();
                if (!section.Trim().ToLower().Equals("цфо", StringComparison.OrdinalIgnoreCase))
                {
                    continue;
                }

                var           costSubItemShortName          = row["CostSubItemShortName"].ToString();
                var           departmentShortTitle          = row["DepartmentShortTitle"].ToString();
                BudgetLimit[] budgetLimitArrayFromDataTable = Deserialize(row, mounthDict, year);
                foreach (var budgetLimit in budgetLimitArrayFromDataTable)
                {
                    var results = _budgetLimitService
                                  .Get(query => query
                                       .Where(b => b.Month == budgetLimit.Month &&
                                              b.Year == budgetLimit.Year &&
                                              b.CostSubItem.ShortName.Equals(costSubItemShortName.Trim(), StringComparison.OrdinalIgnoreCase) &&
                                              b.Department.ShortTitle.Equals(departmentShortTitle.Trim(), StringComparison.OrdinalIgnoreCase))
                                       .ToList());
                    if (results.Count == 0) // добавляем
                    {
                        var costSubItem = _costSubItemService.Get(query => query.Where(c => c.ShortName.Equals(costSubItemShortName.Trim(), StringComparison.OrdinalIgnoreCase)).ToList()).FirstOrDefault();
                        if (costSubItem == null)
                        {
                            if (!onlyValidate)
                            {
                                report.AddReportEvent($"Не удалось добавить лимит: {budgetLimit.LimitAmount}, на месяц: {CultureInfo.CurrentCulture.DateTimeFormat.GetMonthName(budgetLimit.Month.Value)}, не найдена подстатья: {costSubItemShortName}");
                            }
                            else
                            {
                                report.AddReportEvent($"Не найдена подстатья: {costSubItemShortName}, для лимита: {budgetLimit.LimitAmount}, на месяц: {CultureInfo.CurrentCulture.DateTimeFormat.GetMonthName(budgetLimit.Month.Value)}");
                            }
                            continue;
                        }

                        var department = _departmentService.Get(query => query.Where(d => d.ShortTitle.Equals(departmentShortTitle.Trim(), StringComparison.OrdinalIgnoreCase)).ToList()).FirstOrDefault();
                        if (department == null)
                        {
                            if (!onlyValidate)
                            {
                                report.AddReportEvent($"Не удалось добавить лимит: {budgetLimit.LimitAmount}, на месяц: {CultureInfo.CurrentCulture.DateTimeFormat.GetMonthName(budgetLimit.Month.Value)}, не найдено подразделение: {departmentShortTitle}");
                            }
                            else
                            {
                                report.AddReportEvent($"Не найдено подразделение: {departmentShortTitle}, для лимита: {budgetLimit.LimitAmount}, на месяц: {CultureInfo.CurrentCulture.DateTimeFormat.GetMonthName(budgetLimit.Month.Value)}");
                            }
                            continue;
                        }

                        budgetLimit.CostSubItemID = costSubItem.ID;
                        budgetLimit.DepartmentID  = department.ID;
                        if (!onlyValidate)
                        {
                            var limitDto = _budgetLimitService.GetLimitData(budgetLimit.CostSubItemID.Value, budgetLimit.DepartmentID.Value, budgetLimit.ProjectID, budgetLimit.Year.Value, budgetLimit.Month.Value);
                            if (limitDto != null)
                            {
                                budgetLimit.LimitAmountApproved = limitDto.LimitAmountReserved;
                                budgetLimit.FundsExpendedAmount = limitDto.LimitAmountActuallySpent;
                            }
                            else
                            {
                                budgetLimit.LimitAmountApproved = 0;
                                budgetLimit.FundsExpendedAmount = 0;
                            }

                            _budgetLimitService.Add(budgetLimit);
                            report.AddReportEvent($"Добавлен лимит: {budgetLimit.LimitAmount}, на месяц: {CultureInfo.CurrentCulture.DateTimeFormat.GetMonthName(budgetLimit.Month.Value)}, подстатья: {costSubItemShortName}, подразделение: {departmentShortTitle}");
                        }
                        else
                        {
                            report.AddReportEvent($"Лимит еще не создан: {budgetLimit.LimitAmount}, на месяц: {CultureInfo.CurrentCulture.DateTimeFormat.GetMonthName(budgetLimit.Month.Value)}, подстатья: {costSubItemShortName}, подразделение: {departmentShortTitle}");
                        }
                    }
                    else // обновляем
                    {
                        if (!onlyValidate)
                        {
                            var     budgetLimitFromDB   = results.FirstOrDefault();
                            decimal?limitAmountOldValue = budgetLimitFromDB.LimitAmount;
                            if (budgetLimitFromDB.LimitAmount != budgetLimit.LimitAmount.Value)
                            {
                                budgetLimitFromDB.LimitAmount = budgetLimit.LimitAmount.Value;
                                _budgetLimitService.Update(budgetLimitFromDB);
                                report.AddReportEvent($"Обновлен лимит: {budgetLimit.LimitAmount}, (старое значение: {limitAmountOldValue}), месяц: {CultureInfo.CurrentCulture.DateTimeFormat.GetMonthName(budgetLimit.Month.Value)}, подстатья: {costSubItemShortName}, подразделение: {departmentShortTitle}");
                            }
                            else
                            {
                                report.AddReportEvent($"Не изменилось значение лимита: {budgetLimit.LimitAmount}, месяц: {CultureInfo.CurrentCulture.DateTimeFormat.GetMonthName(budgetLimit.Month.Value)}, подстатья: {costSubItemShortName}, подразделение: {departmentShortTitle}");
                            }
                        }
                        else
                        {
                            report.AddReportEvent($"Найден лимит: {results.FirstOrDefault().LimitAmount}, (новое значение: {budgetLimit.LimitAmount}), месяц: {CultureInfo.CurrentCulture.DateTimeFormat.GetMonthName(budgetLimit.Month.Value)}, подстатья: {costSubItemShortName}, подразделение: {departmentShortTitle}");
                        }
                    }
                }
            }

            return(report);
        }