public void CalculateMaximumAmount_DecliningFixedPrincipal_KeepExpectedInstallment()
        {
            Loan myContract = _SetContract(OLoanTypes.DecliningFixedInstallments, new NonRepaymentPenalties(0, 0, 0.003, 0.003), true);
            CalculateMaximumAmountToRepayStrategy mAR = _MaximumAmountToRepay(myContract, false, 0, 0, false, 0);

            Assert.AreEqual(2196, Math.Round(mAR.CalculateMaximumAmountAuthorizedToRepay(new DateTime(2007, 3, 15)).Value, 2));
        }
        public void CalculateMaximumAmount_Declining_BadLoanWith_42dayslate_OverDuePrincipalAndInterest_KeepExpectedInstallment_CancelInterest_CancelFees()
        {
            Loan myContract = _SetContract(OLoanTypes.DecliningFixedInstallments, new NonRepaymentPenalties(0, 0, 0.003, 0.003), true);
            CalculateMaximumAmountToRepayStrategy mAR = _MaximumAmountToRepay(myContract, true, 100, 0, true, 888);

            Assert.AreEqual(1988, Math.Round(mAR.CalculateMaximumAmountAuthorizedToRepay(new DateTime(2006, 3, 15)).Value, 2));
        }
        public void CalculateMaximumAmount_Declining_BadLoan_42DaysLate_OverduePrincipalAndInterest_KeepNotExpectedInstallment()
        {
            Loan myContract = _SetContract(OLoanTypes.DecliningFixedInstallments, new NonRepaymentPenalties(0, 0, 0.003, 0.003), false);
            CalculateMaximumAmountToRepayStrategy mAR = _MaximumAmountToRepay(myContract, false, 0, 0, false, 0);

            Assert.AreEqual(1081m, Math.Round(mAR.CalculateMaximumAmountAuthorizedToRepay(new DateTime(2006, 3, 15)).Value, 2));
        }
Ejemplo n.º 4
0
        public CreditContractRepayment(Loan contract, CreditContractOptions creditOptions, DateTime pDate, int pInstallmentNumber, User user, ApplicationSettings pGeneralSettings, NonWorkingDateSingleton pNonWorkingDate)
        {
            _generalSettings = pGeneralSettings;
            _nWds            = pNonWorkingDate;

            _date = pDate.Date;
            _installmentNumber = pInstallmentNumber;

            PaidIstallments = new List <Installment>();

            _amountToRepayTotalyLoan  = new CalculateMaximumAmountToRepayStrategy(creditOptions, contract.Copy(), user, _generalSettings, _nWds);
            _amountToRegradingLoan    = new CalculateMaximumAmountToRegradingLoanStrategy(creditOptions, contract.Copy(), user, _generalSettings, _nWds);
            _amountToRepayInstallment = new CalculateAmountToRepaySpecifiedInstallmentStrategy(creditOptions, contract.Copy(), user, _generalSettings, _nWds);

            _calculateInstallments             = new Repayment.RepayLateInstallments.CalculateInstallments(creditOptions, contract, user, _generalSettings, _nWds);
            _calculateRealInterestInstallments = new CalculateRealInterestInstallments(creditOptions, _amountToRepayTotalyLoan, contract, _generalSettings, _nWds);

            _feesForAnticipatedRepayment = new CalculateAnticipatedFeesStrategy(creditOptions, contract, _generalSettings);
            _repayNextInstallments       = new RepayNextInstallmentsStrategy(contract, creditOptions, user, _generalSettings);
            _repaymentMethod             = new RepaymentMethod(contract, creditOptions);

            _loan = contract;

            CalculateMaximumAmountAuthorizedToRepay();
            CalculateAmountToRegradingLoan();
            CalculateMaximumAmountForEscapedMember();
            LoanOptions = creditOptions;
        }
        public void CalculateMaximumAmountFlat_BadLoan_42DaysLate_InitialAmount_KeepExpectedInstallment_CancelFees()
        {
            Loan myContract = _SetContract(OLoanTypes.Flat, new NonRepaymentPenalties(0.003, 0, 0, 0), true);
            CalculateMaximumAmountToRepayStrategy mAR = _MaximumAmountToRepay(myContract, true, 0, 0, false, 0);

            Assert.AreEqual(1180, Math.Round(mAR.CalculateMaximumAmountAuthorizedToRepay(new DateTime(2006, 3, 15)).Value, 2));
        }
        public void CalculateMaximumAmount_Flat_BadLoan_42dayslate_OLB_KeepNotExpectedInstallment()
        {
            Loan myContract = _SetContract(OLoanTypes.Flat, new NonRepaymentPenalties(0, 0.003, 0, 0), false);
            CalculateMaximumAmountToRepayStrategy mAR = _MaximumAmountToRepay(myContract, false, 0, 0, false, 0);

            Assert.AreEqual(1185.73m, Math.Round(mAR.CalculateMaximumAmountAuthorizedToRepay(new DateTime(2006, 3, 15)).Value, 2));
        }
        public void CalculateMaximumAmount_Declining_BadLoan_42dayslate_OLB_KeepExpectedInstallment()
        {
            Loan myContract = _SetContract(OLoanTypes.DecliningFixedInstallments, new NonRepaymentPenalties(0, 0.003, 0, 0), true);
            CalculateMaximumAmountToRepayStrategy mAR = _MaximumAmountToRepay(myContract, false, 0, 0, false, 0);

            //1000 + 121.77 + 1000 * 42 * 0.003 = 1247.77
            Assert.AreEqual(1247.77m, Math.Round(mAR.CalculateMaximumAmountAuthorizedToRepay(new DateTime(2006, 3, 15)).Value, 2));
        }
        public void CalculateMaximumAmountFlat_BadLoan_42DaysLate_OLB_KeepExpectedInstallment()
        {
            Loan myContract = _SetContract(OLoanTypes.Flat, new NonRepaymentPenalties(0, 0.003, 0, 0), true);
            CalculateMaximumAmountToRepayStrategy mAR = _MaximumAmountToRepay(myContract, false, 0, 0, false, 0);

            //1000 + 180 + 1000 * 42 * 0.003  => 1306
            Assert.AreEqual(1306, Math.Round(mAR.CalculateMaximumAmountAuthorizedToRepay(new DateTime(2006, 3, 15)).Value, 2));
        }
        public void CalculateMaximumAmountFlat_BadLoan_42DaysLate_OverduePrincipal_KeepNotExpectedInstallment()
        {
            Loan myContract = _SetContract(OLoanTypes.Flat, new NonRepaymentPenalties(0, 0, 0.003, 0), false);
            CalculateMaximumAmountToRepayStrategy mAR = _MaximumAmountToRepay(myContract, false, 0, 0, false, 0);

            //1000 + 60 + 200 * 14 * 0.003 + 800 * 0.01 => 1196,4 =>1076
            Assert.AreEqual(1076, Math.Round(mAR.CalculateMaximumAmountAuthorizedToRepay(new DateTime(2006, 3, 15)).Value, 2));
        }
        public void Flat_BadLoan_42DaysLate_InitialAmount_KeepExpectedInstallment_Fees()
        {
            Loan myContract = _SetContract(OLoanTypes.Flat, new NonRepaymentPenalties(0.003, 0, 0, 0), true);
            CalculateMaximumAmountToRepayStrategy mAR = _MaximumAmountToRepay(myContract, false, 0, 0, false, 0);

            //1000 + 180 + 1000 * 42 * 0.003 => 1306  //no anticipatedFees when keep expected installment set to true
            Assert.AreEqual(1306, Math.Round(mAR.CalculateMaximumAmountAuthorizedToRepay(new DateTime(2006, 3, 15)).Value, 2));
        }
Ejemplo n.º 11
0
        public void CalculateMaximumAmount_Flat_BadLoan_42daysLate_InitialAmount_KeepNotExpectedInstallment_DontCancelFees()
        {
            Loan myContract = _SetContract(OLoanTypes.Flat, new NonRepaymentPenalties(0.003, 0, 0, 0), false);
            CalculateMaximumAmountToRepayStrategy mAR = _MaximumAmountToRepay(myContract, false, 0, 0, false, 0);

            //First installment => 30
            //Second installments => 30 + 200
            //800 + 1000 * 42 * 0.003 + 800 * 0.01 + 260=> 1194
            Assert.AreEqual(1194, Math.Round(mAR.CalculateMaximumAmountAuthorizedToRepay(new DateTime(2006, 3, 15)).Value, 2));
        }
        public void CalculateMaximumAmount_Declining_BadLoan_42dayslate_OverDuePrincipalAndInterest_KeepNotExpectedInstallment()
        {
            ApplicationSettings.GetInstance("").UpdateParameter("CALCULATION_LATE_FEES_DURING_PUBLIC_HOLIDAYS", true);
            Loan myContract = _SetContract(OLoanTypes.DecliningFixedInstallments, new NonRepaymentPenalties(0, 0, 0.003, 0.003), false);
            CalculateMaximumAmountToRepayStrategy mAR = _MaximumAmountToRepay(myContract, false, 0, 0, false, 0);

            Assert.AreEqual(1091.4m, Math.Round(mAR.CalculateMaximumAmountAuthorizedToRepay(new DateTime(2006, 3, 15)).Value, 2));
            //NOT CALCULATION_LATE_FEES_DURING_PUBLIC_HOLIDAYS
            ApplicationSettings.GetInstance("").UpdateParameter("CALCULATION_LATE_FEES_DURING_PUBLIC_HOLIDAYS", false);

            Assert.AreEqual(1088.81m, Math.Round(mAR.CalculateMaximumAmountAuthorizedToRepay(new DateTime(2006, 3, 15)).Value, 2));
        }
        public void CalculateMaximumAmount_Flat_BadLoan_42dayslate_OLB_KeepExpectedInstallment_DontCancelFees()
        {
            Loan myContract = _SetContract(OLoanTypes.Flat, new NonRepaymentPenalties(0, 0.003, 0, 0), true);
            CalculateMaximumAmountToRepayStrategy mAR = _MaximumAmountToRepay(myContract, false, 0, 0, false, 0);

            //Without CALCULATION_LATE_FEES_DURING_PUBLIC_HOLIDAYS: 1000 + 180 + 1000 * 42 * 0.003  => 1306
            //Assert.AreEqual(1306, Math.Round(mAR.CalculateMaximumAmountAuthorizedToRepay(new DateTime(2006, 3, 15)).Value, 2));

            //With CALCULATION_LATE_FEES_DURING_PUBLIC_HOLIDAYS:
            // Excluding 7 days: 3 holidays (1/1/2006, 6/1/2006, 8/3/2006) and 4 weekends

            Assert.AreEqual(1285, Math.Round(mAR.CalculateMaximumAmountAuthorizedToRepay(new DateTime(2006, 3, 15)).Value, 2));
        }
 public CalculateRealInterestInstallments(CreditContractOptions pCco,
                                          CalculateMaximumAmountToRepayStrategy calculateMaximumAmount, Loan pContract,
                                          ApplicationSettings pGeneralSettings, NonWorkingDateSingleton pNonWorkingDate)
 {
     _generalSettings         = pGeneralSettings;
     _nWds                    = pNonWorkingDate;
     _contract                = pContract;
     _cCo                     = pCco;
     _methodToRepayFees       = new RepayFeesStrategy(pCco);
     _methodToRepayInterest   = new RepayInterestStrategy(pCco);
     _methodToRepayCommission = new RepayCommisionStrategy(pCco);
     PaidIstallments          = new List <Installment>();
     _calculateMaximumAmount  = calculateMaximumAmount;
 }
        public void CalculateMaximumAmountFlat_BadLoan_42DaysLate_OverduePrincipal_KeepExpectedInstallment()
        {
            Loan myContract = _SetContract(OLoanTypes.Flat, new NonRepaymentPenalties(0, 0, 0.003, 0), true);
            CalculateMaximumAmountToRepayStrategy mAR = _MaximumAmountToRepay(myContract, false, 0, 0, false, 0);


            ApplicationSettings.GetInstance("").UpdateParameter(OGeneralSettings.CALCULATIONLATEFEESDURINGPUBLICHOLIDAYS, false);
            //1000 + 180 + 200 * 12 * 0.003
            Assert.AreEqual(1187, Math.Round(mAR.CalculateMaximumAmountAuthorizedToRepay(new DateTime(2006, 3, 15)).Value, 2));

            ApplicationSettings.GetInstance("").UpdateParameter(OGeneralSettings.CALCULATIONLATEFEESDURINGPUBLICHOLIDAYS, true);

            //1000 + 180 + 200 * 14 * 0.003
            Assert.AreEqual(1188, Math.Round(mAR.CalculateMaximumAmountAuthorizedToRepay(new DateTime(2006, 3, 15)).Value, 2));
        }
        public void CalculateMaximumAmount_Flat_BadLoan_42dayslate_OverDuePrincipal_KeepNotExpectedInstallment()
        {
            ApplicationSettings.GetInstance("").UpdateParameter("CALCULATION_LATE_FEES_DURING_PUBLIC_HOLIDAYS", true);
            Loan myContract = _SetContract(OLoanTypes.Flat, new NonRepaymentPenalties(0, 0, 0.003, 0), false);
            CalculateMaximumAmountToRepayStrategy mAR = _MaximumAmountToRepay(myContract, false, 0, 0, false, 0);

            //1000 + 60 + 200 * 14 * 0.003 + 800 * 0.01 => 1000+60+16.4
            Assert.AreEqual(1089.13m, Math.Round(mAR.CalculateMaximumAmountAuthorizedToRepay(new DateTime(2006, 3, 15)).Value, 2));

            //NOT CALCULATION_LATE_FEES_DURING_PUBLIC_HOLIDAYS
            ApplicationSettings.GetInstance("").UpdateParameter("CALCULATION_LATE_FEES_DURING_PUBLIC_HOLIDAYS", false);
            myContract = _SetContract(OLoanTypes.Flat, new NonRepaymentPenalties(0, 0, 0.003, 0), false);
            mAR        = _MaximumAmountToRepay(myContract, false, 0, 0, false, 0);
            //1000 + 60 + 200 * 11 * 0.003 + 800 * 0.01 => 1074.6

            Assert.AreEqual(1087.33m, Math.Round(mAR.CalculateMaximumAmountAuthorizedToRepay(new DateTime(2006, 3, 15)).Value, 2));
        }
        public void CalculateMaximumAmount_Flat_BadLoan_42dayslate_OverDuePrincipal_KeepExpectedInstallment_DontCancelFees()
        {
            ApplicationSettings.GetInstance("").UpdateParameter("CALCULATION_LATE_FEES_DURING_PUBLIC_HOLIDAYS", true);
            Loan myContract = _SetContract(OLoanTypes.Flat, new NonRepaymentPenalties(0, 0, 0.003, 0), true);
            CalculateMaximumAmountToRepayStrategy mAR = _MaximumAmountToRepay(myContract, false, 0, 0, false, 0);

            //1000 + 180 + 200 * 14 * 0.003 => 1188.40
            Assert.AreEqual(1188.40m, Math.Round(mAR.CalculateMaximumAmountAuthorizedToRepay(new DateTime(2006, 3, 15)).Value, 2));

            //NOT CALCULATION_LATE_FEES_DURING_PUBLIC_HOLIDAYS
            ApplicationSettings.GetInstance("").UpdateParameter("CALCULATION_LATE_FEES_DURING_PUBLIC_HOLIDAYS", false);
            myContract = _SetContract(OLoanTypes.Flat, new NonRepaymentPenalties(0, 0, 0.003, 0), true);
            mAR        = _MaximumAmountToRepay(myContract, false, 0, 0, false, 0);
            //1000 + 180 + 200 * 12 * 0.003 => 1187.200

            //  Assert.AreEqual(1187.20m, Math.Round(mAR.CalculateMaximumAmountAuthorizedToRepay(new DateTime(2006, 3, 15)).Value, 2));
            //dans le serveur, le resultat  est 1186.60
            Assert.AreEqual(1186.60m, Math.Round(mAR.CalculateMaximumAmountAuthorizedToRepay(new DateTime(2006, 3, 15)).Value, 2));
        }
        public void CalculateMaximumAmount_Declining_BadLoan_42dayslate_OverDuePrincipal_KeepExpectedInstallment()
        {
            ApplicationSettings.GetInstance("").UpdateParameter("CALCULATION_LATE_FEES_DURING_PUBLIC_HOLIDAYS", true);

            Loan myContract = _SetContract(OLoanTypes.DecliningFixedInstallments, new NonRepaymentPenalties(0, 0, 0.003, 0), true);
            CalculateMaximumAmountToRepayStrategy mAR = _MaximumAmountToRepay(myContract, false, 0, 0, false, 0);

            //1000 + 121.77 + 188.35 * 14 * 0.003 = 1129.68
            Assert.AreEqual(1129.68m, Math.Round(mAR.CalculateMaximumAmountAuthorizedToRepay(new DateTime(2006, 3, 15)).Value, 2));


            //NOT CALCULATION_LATE_FEES_DURING_PUBLIC_HOLIDAYS
            ApplicationSettings.GetInstance("").UpdateParameter("CALCULATION_LATE_FEES_DURING_PUBLIC_HOLIDAYS", false);
            myContract = _SetContract(OLoanTypes.DecliningFixedInstallments, new NonRepaymentPenalties(0, 0, 0.003, 0), true);
            mAR        = _MaximumAmountToRepay(myContract, false, 0, 0, false, 0);

            //1000 + 121.77 + 188.35 * 12 * 0.003 = 1128.55060
            //Assert.AreEqual(1128.55m, Math.Round(mAR.CalculateMaximumAmountAuthorizedToRepay(new DateTime(2006, 3, 15)).Value, 2));
            //dans le seurveur , le resultat est 1127.99
            Assert.AreEqual(1127.99m, Math.Round(mAR.CalculateMaximumAmountAuthorizedToRepay(new DateTime(2006, 3, 15)).Value, 2));
        }