/// <summary> /// Calculates the total income with equal principal and interest. /// </summary> /// <param name="inverstParas">The inverst paras.</param> /// <returns>InvestmentTotalIncome.</returns> /// <remarks> /// 创 建 者:解志辉 /// 创建日期:2016-05-17 10:43:10 /// </remarks> private static InvestmentTotalIncome CalculateTotalIncomeWithEqualPrincipalAndInterest(InvestmentParameters inverstParas) { InvestmentTotalIncome income = new InvestmentTotalIncome(); if (inverstParas.CircleType == 1) { income.Reward = inverstParas.Amount * ((decimal)(inverstParas.RewardRate / 100.0)); income.ActualYearRate = (inverstParas.NominalYearRate * (1.0 - (inverstParas.OverheadsRate / 100.0))) + ((inverstParas.RewardRate / ((double)inverstParas.Circle)) * 12.0); income.ActualMonthRate = income.ActualYearRate / 12.0; double num = (inverstParas.NominalYearRate / 12.0) / 100.0; double num2 = Math.Pow(1.0 + num, (double)inverstParas.Circle); decimal num3 = 0M; if (num > 0.0) { num3 = inverstParas.Amount * ((decimal)((num * num2) / (num2 - 1.0))); } else { num3 = inverstParas.Amount / inverstParas.Circle; } income.TotalIncome = (num3 * inverstParas.Circle) + income.Reward; income.Interest = income.TotalIncome - inverstParas.Amount; income.Overheads = income.Interest * (((decimal)inverstParas.OverheadsRate) / 100M); return(income); } if (inverstParas.CircleType == 3) { income = CalculateTotalIncomeWithLumpSumPrincipalAndInterest(inverstParas); } return(income); }
public decimal Calculationofinterest(InvestmentParameters Minverst) { decimal dec = 0.00M; InvestmentParameters inverstParas = new InvestmentParameters { Amount = Minverst.Amount, //投资金额 Circle = Minverst.Circle, //期限 CircleType = Minverst.CircleType, //期限类型 月 / 天 NominalYearRate = Minverst.NominalYearRate, //年利率 OverheadsRate = Minverst.OverheadsRate, //管理费率 RepaymentMode = Minverst.RepaymentMode, //还款方式 RewardRate = Minverst.RewardRate, //奖励比例 InvestDate = Minverst.InvestDate, IsThirtyDayMonth = false, Investmentenddate = Minverst.Investmentenddate, Payinterest = Minverst.Payinterest, InvestObject = Minverst.InvestObject }; InvestmentTotalIncome income = ChuanglitouP2P.Bll.VeryCodes.NetCreditAssistant.BLL.InvestCalculator.CalculateTotalIncome(inverstParas); List <InvestmentReceiveRecordInfo> records = income.ReceiveRecords; foreach (InvestmentReceiveRecordInfo p in records) { dec = dec + p.Interest; } // dec = dec + Minverst.Amount; //投资总收益 return(dec); }
/// <summary> /// 计算利息返回分期记录列表 /// </summary> /// <param name="Minverst">业务对象</param> /// <returns>List<InvestmentReceiveRecordInfo>.</returns> /// 创 建 者:解志辉 /// 创建日期:2016-05-17 10:42:53 public static List <InvestmentReceiveRecordInfo> Calculationofinterest(InvestmentParameters Minverst) { StringBuilder str = new StringBuilder(); InvestmentParameters inverstParas = new InvestmentParameters { Amount = Minverst.Amount, //投资金额 Circle = Minverst.Circle, //期限 CircleType = Minverst.CircleType, //期限类型 月 / 天 NominalYearRate = Minverst.NominalYearRate, //年利率 OverheadsRate = Minverst.OverheadsRate, //管理费率 RepaymentMode = Minverst.RepaymentMode, //还款方式 RewardRate = Minverst.RewardRate, //奖励比例 InvestDate = Minverst.InvestDate, IsThirtyDayMonth = false, Investmentenddate = Minverst.Investmentenddate, Payinterest = Minverst.Payinterest, InvestObject = Minverst.InvestObject }; InvestmentTotalIncome income = InvestCalculator.CalculateTotalIncome(inverstParas); List <InvestmentReceiveRecordInfo> records = income.ReceiveRecords; return(records); }
/// <summary> /// 计算投资收入 /// </summary> /// <param name="inverstParas"></param> /// <returns></returns> public static InvestmentTotalIncome CalculateTotalIncome(InvestmentParameters inverstParas) { InvestmentTotalIncome income = new InvestmentTotalIncome(); switch (inverstParas.RepaymentMode) { case 1: income = CalculateTotalIncomeWithEqualPrincipalAndInterest(inverstParas); //以平等的本金和利息的计算总收入 按月等额本息 break; case 2: income = CalculateTotalIncomeWithEqualPrincipalByQuart(inverstParas); break; case 3: income = CalculateTotalIncomeWithInterestByMonth(inverstParas); break; case 4: income = CalculateTotalIncomeWithLumpSumPrincipalAndInterest(inverstParas); break; } return(CorrectTotalIncome(FormatTotalIncome(income), inverstParas)); }
private static InvestmentTotalIncome FormatTotalIncome(InvestmentTotalIncome income) { if (income != null) { income.TotalIncome = Math.Round(income.TotalIncome, 2); income.Reward = Math.Round(income.Reward, 2); income.Interest = Math.Round(income.Interest, 2); income.Overheads = Math.Round(income.Overheads, 2); income.CleanTotalIncome = income.TotalIncome - income.Overheads; income.ActualYearRate = Math.Round(income.ActualYearRate, 2); income.ActualMonthRate = Math.Round(income.ActualMonthRate, 2); } return(income); }
/// <summary> /// 计算总付本金和利息收入总额 天为单位 /// </summary> /// <param name="inverstParas">The inverst paras.</param> /// <returns>InvestmentTotalIncome.</returns> /// <remarks> /// 创 建 者:解志辉 /// 创建日期:2016-05-17 10:43:02 /// </remarks> private static InvestmentTotalIncome CalculateTotalIncomeWithLumpSumPrincipalAndInterest(InvestmentParameters inverstParas) { InvestmentTotalIncome income = new InvestmentTotalIncome(); double circle = inverstParas.Circle; if (inverstParas.CircleType == 3) { circle = ((double)inverstParas.Circle) / 30.0; } income.Reward = inverstParas.Amount * ((decimal)(inverstParas.RewardRate / 100.0)); income.ActualYearRate = (inverstParas.NominalYearRate * (1.0 - (inverstParas.OverheadsRate / 100.0))) + ((inverstParas.RewardRate / circle) * 12.0); income.ActualMonthRate = income.ActualYearRate / 12.0; income.Interest = inverstParas.Amount * ((decimal)(((inverstParas.NominalYearRate / 100.0) * inverstParas.Circle) / 365.0)); income.TotalIncome = (inverstParas.Amount + income.Interest) + income.Reward; income.Overheads = income.Interest * (((decimal)inverstParas.OverheadsRate) / 100M); return(income); }
/// <summary> /// Corrects the total income. /// </summary> /// <param name="income">The income.</param> /// <param name="inverstParas">The inverst paras.</param> /// <returns>InvestmentTotalIncome.</returns> /// <remarks> /// 创 建 者:解志辉 /// 创建日期:2016-05-17 10:43:00 /// </remarks> private static InvestmentTotalIncome CorrectTotalIncome(InvestmentTotalIncome income, InvestmentParameters inverstParas) { List <InvestmentReceiveRecordInfo> list = CalculateReceiveRecord(inverstParas); income.ReceiveRecords = list; decimal num = 0M; decimal num2 = 0M; foreach (InvestmentReceiveRecordInfo info in list) { num += info.Interest; num2 += info.Principal; } income.Interest = num; income.TotalIncome = (num + inverstParas.Amount) + income.Reward; income.CleanTotalIncome = income.TotalIncome - income.Overheads; income.TotalEarnings = income.TotalIncome - inverstParas.Amount; income.CleanTotalEarnings = income.TotalEarnings - income.Overheads; return(income); }
/// <summary> /// 以月计算利息的总收入 [以月付息到期还本] /// </summary> /// <param name="inverstParas">The inverst paras.</param> /// <returns>InvestmentTotalIncome.</returns> /// <remarks> /// 创 建 者:解志辉 /// 创建日期:2016-05-17 10:43:05 /// </remarks> private static InvestmentTotalIncome CalculateTotalIncomeWithInterestByMonth(InvestmentParameters inverstParas) { InvestmentTotalIncome income = new InvestmentTotalIncome(); if (inverstParas.CircleType == 1) //月 { income.Reward = inverstParas.Amount * ((decimal)(inverstParas.RewardRate / 100.0)); income.ActualYearRate = (inverstParas.NominalYearRate * (1.0 - (inverstParas.OverheadsRate / 100.0))) + ((inverstParas.RewardRate / ((double)inverstParas.Circle)) * 12.0); income.ActualMonthRate = income.ActualYearRate / 12.0; double num = (inverstParas.NominalYearRate / 12.0) / 100.0; decimal num2 = inverstParas.Amount * ((decimal)num); income.Interest = num2 * inverstParas.Circle; income.TotalIncome = (income.Interest + inverstParas.Amount) + income.Reward; income.Overheads = income.Interest * (((decimal)inverstParas.OverheadsRate) / 100M); return(income); } if (inverstParas.CircleType == 3) //天 { income = CalculateTotalIncomeWithLumpSumPrincipalAndInterest(inverstParas); } return(income); }
/// <summary> /// Calculates the total income with equal principal by quart. /// </summary> /// <param name="inverstParas">The inverst paras.</param> /// <returns>InvestmentTotalIncome.</returns> /// 创 建 者:解志辉 /// 创建日期:2016-05-17 10:43:07 private static InvestmentTotalIncome CalculateTotalIncomeWithEqualPrincipalByQuart(InvestmentParameters inverstParas) { InvestmentTotalIncome income = new InvestmentTotalIncome(); if (inverstParas.CircleType == 1) { double num = Math.Ceiling((double)(((double)inverstParas.Circle) / 3.0)); income.Reward = inverstParas.Amount * ((decimal)(inverstParas.RewardRate / 100.0)); income.ActualYearRate = (inverstParas.NominalYearRate * (1.0 - (inverstParas.OverheadsRate / 100.0))) + ((inverstParas.RewardRate / num) * 4.0); income.ActualMonthRate = income.ActualYearRate / 12.0; decimal num2 = (((decimal)inverstParas.NominalYearRate) / 4M) / 100M; income.Interest = (inverstParas.Amount * ((decimal)(((double)Sum((int)num)) / num))) * num2; income.TotalIncome = inverstParas.Amount + income.Interest; income.Overheads = income.Interest * (((decimal)inverstParas.OverheadsRate) / 100M); return(income); } if (inverstParas.CircleType == 3) { income = CalculateTotalIncomeWithLumpSumPrincipalAndInterest(inverstParas); } return(income); }