public static void SetNotionalAmount(PaymentCalculationPeriod paymentCalculationPeriod, decimal notionalAmount)
 {
     foreach (CalculationPeriod calculationPeriod in XsdClassesFieldResolver.GetPaymentCalculationPeriodCalculationPeriodArray(paymentCalculationPeriod))
     {
         XsdClassesFieldResolver.CalculationPeriodSetNotionalAmount(calculationPeriod, notionalAmount);
     }
 }
        public static decimal GetNotionalAmount(PaymentCalculationPeriod paymentCalculationPeriod)
        {
            decimal result = 0.0m;

            decimal numberOfPeriods = 0.0m;

            foreach (CalculationPeriod calculationPeriod in XsdClassesFieldResolver.GetPaymentCalculationPeriodCalculationPeriodArray(paymentCalculationPeriod))
            {
                result          += XsdClassesFieldResolver.CalculationPeriodGetNotionalAmount(calculationPeriod);
                numberOfPeriods += 1;
            }

            return(result / numberOfPeriods);
        }
 public static void SetSpread(PaymentCalculationPeriod paymentCalculationPeriod, decimal value)
 {
     foreach (CalculationPeriod calculationPeriod in XsdClassesFieldResolver.GetPaymentCalculationPeriodCalculationPeriodArray(paymentCalculationPeriod))
     {
         if (XsdClassesFieldResolver.CalculationPeriodHasFloatingRateDefinition(calculationPeriod))
         {
             FloatingRateDefinition floatingRateDefinition = XsdClassesFieldResolver.CalculationPeriodGetFloatingRateDefinition(calculationPeriod);
             floatingRateDefinition.spread          = value;
             floatingRateDefinition.spreadSpecified = true;
         }
         else
         {
             throw new NotImplementedException("PaymentCalculationPeriodHelper.SetSpread cannot be called on a fixed rate cashflow.");
         }
     }
 }
 public static void SetRate(PaymentCalculationPeriod paymentCalculationPeriod, decimal rate)
 {
     foreach (CalculationPeriod calculationPeriod in XsdClassesFieldResolver.GetPaymentCalculationPeriodCalculationPeriodArray(paymentCalculationPeriod))
     {
         if (XsdClassesFieldResolver.CalculationPeriodHasFixedRate(calculationPeriod))
         {
             XsdClassesFieldResolver.SetCalculationPeriodFixedRate(calculationPeriod, rate);
         }
         else if (XsdClassesFieldResolver.CalculationPeriodHasFloatingRateDefinition(calculationPeriod))
         {
             throw new NotImplementedException("Cannot modify floating rate, PaymentCalculationPeriodHelper.SetRate");
             //XsdClassesFieldResolver.CalculationPeriod_GetFloatingRateDefinition(calculationPeriod).calculatedRate;
         }
         else
         {
             throw new NotImplementedException("PaymentCalculationPeriodHelper.SetRate");
         }
     }
 }
 public static void ReplaceFloatingRateWithFixedRate(PaymentCalculationPeriod paymentCalculationPeriod, decimal fixedRate)
 {
     foreach (CalculationPeriod calculationPeriod in XsdClassesFieldResolver.GetPaymentCalculationPeriodCalculationPeriodArray(paymentCalculationPeriod))
     {
         if (XsdClassesFieldResolver.CalculationPeriodHasFixedRate(calculationPeriod))
         {
             throw new System.Exception("calculation period already uses a fixed rate.");
         }
         if (XsdClassesFieldResolver.CalculationPeriodHasFloatingRateDefinition(calculationPeriod))
         {
             // Replace FloatingRateDefinition with decimal (fixed rate)
             //
             XsdClassesFieldResolver.SetCalculationPeriodFixedRate(calculationPeriod, fixedRate);
         }
         else
         {
             throw new NotSupportedException("PaymentCalculationPeriodHelper.ReplaceFloatingRateWithFixedRate");
         }
     }
 }
        public static decimal GetSpread(PaymentCalculationPeriod paymentCalculationPeriod)
        {
            decimal result          = 0.0m;
            decimal numberOfPeriods = 0.0m;

            foreach (CalculationPeriod calculationPeriod in XsdClassesFieldResolver.GetPaymentCalculationPeriodCalculationPeriodArray(paymentCalculationPeriod))
            {
                if (XsdClassesFieldResolver.CalculationPeriodHasFloatingRateDefinition(calculationPeriod))
                {
                    FloatingRateDefinition floatingRateDefinition = XsdClassesFieldResolver.CalculationPeriodGetFloatingRateDefinition(calculationPeriod);
                    result += floatingRateDefinition.spread;
                }
                else
                {
                    throw new NotImplementedException("PaymentCalculationPeriodHelper.GetSpread cannot be called on fixed rate cashflow.");
                }
                numberOfPeriods += 1;
            }
            return(result / numberOfPeriods);
        }
        public static decimal GetRate(PaymentCalculationPeriod paymentCalculationPeriod)
        {
            decimal result          = 0.0m;
            decimal numberOfPeriods = 0.0m;

            foreach (CalculationPeriod calculationPeriod in XsdClassesFieldResolver.GetPaymentCalculationPeriodCalculationPeriodArray(paymentCalculationPeriod))
            {
                if (XsdClassesFieldResolver.CalculationPeriodHasFixedRate(calculationPeriod))
                {
                    result += XsdClassesFieldResolver.CalculationPeriodGetFixedRate(calculationPeriod);
                }
                else if (XsdClassesFieldResolver.CalculationPeriodHasFloatingRateDefinition(calculationPeriod))
                {
                    result += XsdClassesFieldResolver.CalculationPeriodGetFloatingRateDefinition(calculationPeriod).calculatedRate;
                }
                else
                {
                    throw new NotImplementedException("PaymentCalculationPeriodHelper.GetRate");
                }
                numberOfPeriods += 1;
            }
            return(result / numberOfPeriods);
        }
 public static void SetCalculationPeriodEndDate(PaymentCalculationPeriod paymentCalculationPeriod, DateTime endDate)
 {
     CalculationPeriod[] calculationPeriodArray = XsdClassesFieldResolver.GetPaymentCalculationPeriodCalculationPeriodArray(paymentCalculationPeriod);
     calculationPeriodArray[calculationPeriodArray.Length - 1].adjustedEndDate          = endDate;
     calculationPeriodArray[calculationPeriodArray.Length - 1].adjustedEndDateSpecified = true;
 }
 public static DateTime GetCalculationPeriodEndDate(PaymentCalculationPeriod paymentCalculationPeriod)
 {
     CalculationPeriod[] calculationPeriodArray = XsdClassesFieldResolver.GetPaymentCalculationPeriodCalculationPeriodArray(paymentCalculationPeriod);
     return(calculationPeriodArray[calculationPeriodArray.Length - 1].adjustedEndDate);
 }
 public static void SetCalculationPeriodStartDate(PaymentCalculationPeriod paymentCalculationPeriod, DateTime startDate)
 {
     CalculationPeriod[] calculationPeriodArray = XsdClassesFieldResolver.GetPaymentCalculationPeriodCalculationPeriodArray(paymentCalculationPeriod);
     calculationPeriodArray[0].adjustedStartDate          = startDate;
     calculationPeriodArray[0].adjustedStartDateSpecified = true;
 }
 public static DateTime GetCalculationPeriodStartDate(PaymentCalculationPeriod paymentCalculationPeriod)
 {
     CalculationPeriod[] calculationPeriodArray = XsdClassesFieldResolver.GetPaymentCalculationPeriodCalculationPeriodArray(paymentCalculationPeriod);
     return(calculationPeriodArray[0].adjustedStartDate);
 }
 public static int GetNumberOfDays(PaymentCalculationPeriod paymentCalculationPeriod)
 {
     return(XsdClassesFieldResolver.GetPaymentCalculationPeriodCalculationPeriodArray(paymentCalculationPeriod).Sum(calculationPeriod => int.Parse(calculationPeriod.calculationPeriodNumberOfDays)));
 }
 public static CalculationPeriod GetFirstCalculationPeriod(PaymentCalculationPeriod paymentCalculationPeriod)
 {
     return(XsdClassesFieldResolver.GetPaymentCalculationPeriodCalculationPeriodArray(paymentCalculationPeriod)[0]);
 }
 public static CalculationPeriod[] GetCalculationPeriods(PaymentCalculationPeriod paymentCalculationPeriod)
 {
     return(XsdClassesFieldResolver.GetPaymentCalculationPeriodCalculationPeriodArray(paymentCalculationPeriod));
 }