예제 #1
0
        /// <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);
        }
예제 #2
0
        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);
        }
예제 #3
0
        /// <summary>
        /// 计算利息返回分期记录列表
        /// </summary>
        /// <param name="Minverst">业务对象</param>
        /// <returns>List&lt;InvestmentReceiveRecordInfo&gt;.</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);
        }
예제 #4
0
        /// <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));
        }
예제 #5
0
 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);
 }
예제 #6
0
        /// <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);
        }
예제 #7
0
        /// <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);
        }
예제 #8
0
        /// <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);
        }
예제 #9
0
        /// <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);
        }