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);
 }
Пример #2
0
        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);
 }