public static bool LoadBandRecalcSum(string fileNameLoad) { var fileManager = new FileManager(); fileManager.LoadFromFile(fileNameLoad, out var x); if (x[0] is BandCheques bandCheques) { var sums = new Dictionary <DateTime, decimal[]>(); decimal sumAllCheque = 0; foreach (var cheque in bandCheques.Cheques) { decimal rule1 = 0; decimal rule2 = 0; decimal rule3 = 0; foreach (var stringPosition in cheque.StringPositions) { rule1 += RoundRules.RuleMathTwoDigits(stringPosition.SumPricePositions); rule2 += RoundRules.RuleMathMiddle(stringPosition.SumPricePositions); rule3 += RoundRules.RuleMathOneDigits(stringPosition.SumPricePositions); } if (!sums.ContainsKey(cheque.DateTimeCheque)) { sums.Add(cheque.DateTimeCheque, new[] { rule1, rule2, rule3 }); } else { var rules = sums[cheque.DateTimeCheque]; rules[0] += rule1; rules[1] += rule2; rules[2] += rule3; sums[cheque.DateTimeCheque] = rules; } } foreach (var sum in sums) { Console.WriteLine("Рассчёт суммы за дату: {0}", sum.Key); Console.WriteLine("Правило №1: {0}", sum.Value[0]); Console.WriteLine("Правило №2: {0}", sum.Value[1]); Console.WriteLine("Правило №3: {0}", sum.Value[2]); sumAllCheque += sum.Value[0]; } Console.WriteLine("Сумма ленты итого {0}", sumAllCheque); } return(true); }
public static bool GenerateNewBand(string fileNameSave) { int startWeek; int endWeek; GetDaysOfMonthCurrentWeek(out startWeek, out endWeek); int countCheques = 100; Console.WriteLine("Генерируем случайные чеки."); BandCheques bandCheques = new BandCheques(countCheques); bandCheques.IdBand = 1; RandomExt countRandom = new RandomExt(); RandomExt countPositionsRandom = new RandomExt(); Random pricePositionRandom = new Random(1); Random randomDayWeek = new Random(); for (int i = 0; i < countCheques; i++) { bandCheques.Cheques[i] = new Cheque(); var cheque = bandCheques.Cheques[i]; cheque.IdCheque = i + 1; cheque.IdBand = bandCheques.IdBand; cheque.DateTimeCheque = new DateTime(DateTime.Now.Year, DateTime.Now.Month, randomDayWeek.Next(startWeek, endWeek)); int countStringsPosition = countRandom.NextNotZero(10); cheque.StringPositions = new StringPosition[countStringsPosition]; for (int curStringPosition = 0; curStringPosition < countStringsPosition; curStringPosition++) { cheque.StringPositions[curStringPosition] = new StringPosition() { Npp = curStringPosition + 1, IdCheque = cheque.IdCheque, CountPositions = countPositionsRandom.NextNotZero(20), PricePosition = RoundRules.RuleMathTwoDigits((decimal)pricePositionRandom.NextDouble() * 100) }; cheque.StringPositions[curStringPosition].SumPricePositions = RoundRules.RuleMathTwoDigits( (decimal)cheque.StringPositions[curStringPosition].CountPositions * cheque.StringPositions[curStringPosition].PricePosition); cheque.SumCheque += cheque.StringPositions[curStringPosition].SumPricePositions; var stringPosition = cheque.StringPositions[curStringPosition]; Console.WriteLine("IdCh: {0} Npp: {1} Кол-во: {2} Цена: {3} Сумма: {4}", stringPosition.IdCheque, stringPosition.Npp, stringPosition.CountPositions, stringPosition.PricePosition, stringPosition.SumPricePositions); } bandCheques.Cheques[i] = cheque; bandCheques.SumAllCheques += cheque.SumCheque; Console.WriteLine("Дата чека {0}", cheque.DateTimeCheque); Console.WriteLine("Сумма чека {0}", cheque.SumCheque); } var fileManager = new FileManager(); var x = new BandCheques[1]; x[0] = bandCheques; Console.WriteLine(StatusFileMsg.Msg[(int)fileManager.SaveToFile(fileNameSave, x)]); return(true); }