public void DataBind(MainModel model) { ViewModel = (CostsBusinessAnalysis)model.CostsBA; this.DataContext = (CostsBusinessAnalysis)model.CostsBA; mainModel = model; LoadDiagram2(ref chart2); LoadDiagram3(ref chart3); LoadDiagram4(ref chart4); }
public static CostsBusinessAnalysis GetCostsBA(MainModel MainModel) { var model = new CostsBusinessAnalysis(); model.allCosts = MainModel.GeneralBA.Cost; // MainModel.ReportProfitAndLoss.Costs.Sum(); model.difPastPeriod = MainModel.GeneralBA.CostAnFirst; model.maxCostsByMonth = MainModel.ReportProfitAndLoss.Costs.Max(); model.averageCostsByMonth = model.allCosts / MainModel.ReportProfitAndLoss.Costs.Count(); model.CostsDiagram = new Dictionary<string, decimal>(); model.CostsDiagram.Add("Прочие", MainModel.ReportProfitAndLoss.OtherCosts.Sum()); model.CostsDiagram.Add("Расходы по реализации", MainModel.ReportProfitAndLoss.CostsSalesServices.Sum()); model.CostsDiagram.Add("Админ-ые", MainModel.ReportProfitAndLoss.AdministrativeExpenses.Sum()); model.CostsDiagram.Add("Расходы на финансирование", MainModel.ReportProfitAndLoss.FinancingCosts.Sum()); //TODO ЗАполнить в следующем окне // model.CostsDiagram.Add("Закуп", ); // тут опасно, если вдруг в расходах не было записи за какой то месяц то у нас произойдет смещение, но вообще на норм предприятии это маловероятно // раньше не предусмотрели, поэтому делаем так var stMon = MainModel.StartDate.Month; var stYear = MainModel.StartDate.AddYears(MainModel.TimeSpan * -1).Year; model.CostsByMonthDiagram = new Dictionary<string, decimal>(); foreach (var item in MainModel.ReportProfitAndLoss.Costs.Take(MainModel.ReportProfitAndLoss.Costs.Count - 2)) { model.CostsByMonthDiagram.Add(((Month)stMon).ToString() + "-" + stYear.ToString(), item);//расходы if (stMon != 12) stMon++; else { stMon = 1; stYear++; } } model.GrosProfitDiagram = MainModel.ProfitBA.GrossProfitDiagram;// валовую уже считали model.SalesDiagram = MainModel.SalesBA.DynamicsSalesDiagram;// продажи тоже //аддс - операц деятельность - выбитие все кроме оплаты поставщику и - TODO ?? Авансы выданные под поставку активов и услуг model.CostsComming = MainModel.ReportProfitAndLoss.CostsSalesServices.Sum() + MainModel.ReportProfitAndLoss.AdministrativeExpenses.Sum() + MainModel.ReportProfitAndLoss.FinancingCosts.Sum() + MainModel.ReportProfitAndLoss.OtherCosts.Sum(); model.CostsCommingDiagram = new Dictionary<string, decimal>(); model.CostsCommingDiagram.Add("Расходы по реализации", model.CostsComming != 0 ? MainModel.ReportProfitAndLoss.CostsSalesServices.Sum() / model.CostsComming * 100 : 0); model.CostsCommingDiagram.Add("Админ-ые", model.CostsComming != 0 ? MainModel.ReportProfitAndLoss.AdministrativeExpenses.Sum() / model.CostsComming * 100 : 0); model.CostsCommingDiagram.Add("Расходы на финансирование", model.CostsComming != 0 ? MainModel.ReportProfitAndLoss.FinancingCosts.Sum() / model.CostsComming * 100 : 0); model.CostsCommingDiagram.Add("Прочие", 100 - model.CostsCommingDiagram.Sum(_ => _.Value)); model.CostsOutDiagram = new Dictionary<string, decimal>(); var ty = (from adz in MainModel.ADDSTranz where adz.en302 == 1 && adz.en450 == 0 && adz.GroupCode.Trim() != "00001" && adz.GroupCode.Trim() != "00029" group adz by adz.GroupCode into g select new { grCode = g.FirstOrDefault().GroupCode, grName = g.FirstOrDefault().GroupName, money = g.Sum(_ => _.Money) } ).OrderByDescending(_ => _.money).ToList(); model.CostsOut = ty.Sum(_ => _.money); if(model.CostsOut != 0) for (var i = 0; i < 4; i++) model.CostsOutDiagram.Add(ty[i].grName, ty[i].money / model.CostsOut * 100); model.CostsOutDiagram.Add("Прочее", 100 - model.CostsOutDiagram.Sum(_ => _.Value)); model.paidTaxes = MainModel.ADDSTranz.Where(_ => _.GroupCode.Trim() == "00011" || _.GroupCode.Trim() == "00036").Sum(_ => _.Money); model.paidTaxesFromSales = MainModel.GeneralBA.Sales != 0 ? model.paidTaxes / MainModel.GeneralBA.Sales * 100 : 0; model.paidTaxesFromGrosProfit = MainModel.GeneralBA.GrossProfit != 0 ? model.paidTaxes / MainModel.GeneralBA.GrossProfit * 100 : 0; return model; }
public void DataBind(CostsBusinessAnalysis model) { ViewModel = (CostsBusinessAnalysis)model; this.DataContext = (CostsBusinessAnalysis)model; LoadDiagram1(ref chart1); }