private static void TryToAddToGraduationDictionary(Dictionary<UInt32, GraduationInfo> Dictionary, GraduationInfo Item, GraduationPeriods Period)
 {
     if (Item != null && (Item.Period == Period /*|| Period == GraduationPeriods.Inappllicable убрано просто так - нигде не используется*/) && !Dictionary.ContainsKey(Item.ID))
     Dictionary.Add(Item.ID, Item);
 }
        /// <summary>Возвращает список градаций скидок для периодов тарифов, используемых договором. В списке гарантированно нет повторяющихся градаций. 
        /// Будут возвращены градации с указанным периодом</summary>
        internal List<GraduationInfo> GetGraduationsForPeriod(GraduationPeriods Period)
        {
            // проходимся по всем градациям всех тарифов договора
              var ContractGraduations = new Dictionary<UInt32, GraduationInfo>();
              foreach (var TariffPeriod in TariffPeriods)
              {
            // градации в скидках на чек
            if (TariffPeriod.ReceiptDiscount.GraduationGroup != null)
            {
              foreach (var Graduation in TariffPeriod.ReceiptDiscount.GraduationGroup.Graduations)
            TryToAddToGraduationDictionary(ContractGraduations, Graduation, Period);
            }
            else if (TariffPeriod.ReceiptDiscount.Graduation != null)
              TryToAddToGraduationDictionary(ContractGraduations, TariffPeriod.ReceiptDiscount.Graduation, Period);

            // градации в скидках на позиции чека
            foreach (var PurseDiscount in TariffPeriod.PurseDiscounts)
            {
              if (PurseDiscount.GraduationGroup != null)
              {
            foreach (var Graduation in PurseDiscount.GraduationGroup.Graduations)
              TryToAddToGraduationDictionary(ContractGraduations, Graduation, Period);
              }
              else if (PurseDiscount.Graduation != null)
            TryToAddToGraduationDictionary(ContractGraduations, PurseDiscount.Graduation, Period);
            }

            // градации в бонусах
            foreach (var PurseBonus in TariffPeriod.PurseBonuses)
            {
              if (PurseBonus.GraduationGroup != null)
              {
            foreach (var Graduation in PurseBonus.GraduationGroup.Graduations)
              TryToAddToGraduationDictionary(ContractGraduations, Graduation, Period);
              }
              else if (PurseBonus.Graduation != null)
            TryToAddToGraduationDictionary(ContractGraduations, PurseBonus.Graduation, Period);
            }

              }

              return ContractGraduations.Values.ToList();
        }