public void CalculateInterest_AccrualhMode_Daily_EndOfYear_OneClosure_AfterOneWeek_Agio() { Assert.Ignore(); ApplicationSettings.GetInstance("").UpdateParameter(OGeneralSettings.ACCOUNTINGPROCESS, OAccountingProcesses.Accrual); _bookProduct.InterestFrequency = OSavingInterestFrequency.EndOfYear; SavingBookContract saving = new SavingBookContract(ApplicationSettings.GetInstance(""), new User(), new DateTime(2009, 01, 01), null) { Product = _bookProduct, InterestRate = 0.1, AgioFees = 0.1 }; saving.Closure(new DateTime(2009, 01, 08), new User() { Id = 1 }); int accrualEvents = saving.Events.FindAll(item => item is SavingInterestsAccrualEvent).Count; int postingEvents = saving.Events.FindAll(items => items is SavingInterestsPostingEvent).Count; List<SavingEvent> agioEvents = saving.Events.FindAll(items => items is SavingAgioEvent); Assert.AreEqual(agioEvents.Count, 7); Assert.AreEqual(agioEvents[0].Fee, 10); Assert.AreEqual(saving.GetBalance(), -170); // saving.Deposit(200, new DateTime(2009, 01, 08), "depot", new User(), false, false, OPaymentMethods.Cash, null, null); saving.Deposit(200, new DateTime(2009, 01, 08), "depot", new User(), false, false, OSavingsMethods.Cash, null, null); //saving.Withdraw(230, new DateTime(2009, 02, 03), "retrait", new User(), false); saving.Closure(new DateTime(2009, 01, 15), new User() { Id = 1 }); List<SavingEvent> agioEvents2 = saving.Events.FindAll(items => items is SavingAgioEvent); Assert.AreEqual(agioEvents2.Count, 13); Assert.AreEqual(agioEvents2[9].Fee, 13); Assert.AreEqual(saving.GetBalance(), -51); }
public void CalculateInterest_AccrualhMode_Daily_EndOfYear_OneClosure_AfterOneWeek() { ApplicationSettings.GetInstance("").UpdateParameter(OGeneralSettings.ACCOUNTINGPROCESS, OAccountingProcesses.Accrual); _product.InterestFrequency = OSavingInterestFrequency.EndOfYear; SavingBookContract saving = new SavingBookContract( ApplicationSettings.GetInstance(""), new User(), new DateTime(2009, 01, 01), null) { Product = _product, InterestRate = 0.1, AgioFees = 8 }; saving.FirstDeposit(1000, new DateTime(2009, 01, 01), null, new User(), Teller.CurrentTeller); saving.Closure(new DateTime(2009, 01, 08), new User() { Id = 1 }); int accrualEvents = saving.Events.FindAll(item => item is SavingInterestsAccrualEvent).Count; int postingEvents = saving.Events.FindAll(items => items is SavingInterestsPostingEvent).Count; Assert.AreEqual(7, accrualEvents); Assert.AreEqual(0, postingEvents); Assert.AreEqual(1000m, saving.GetBalance().Value); }
public void CalculateInterest_AccrualMode_Daily_EndOfWeek_OneClosure_On_PostingDate() { ApplicationSettings.GetInstance("").UpdateParameter(OGeneralSettings.ACCOUNTINGPROCESS, OAccountingProcesses.Accrual); SavingBookContract saving = new SavingBookContract(ApplicationSettings.GetInstance(""), new User(), new DateTime(2009, 01, 01), null) { Product = _product, InterestRate = 0.01, AgioFees = 0 }; saving.FirstDeposit(1000, new DateTime(2009, 01, 01), null, new User(), Teller.CurrentTeller); saving.Closure(new DateTime(2009, 01, 05), new User() { Id = 1 }); int accrualEvents = saving.Events.FindAll(item => item is SavingInterestsAccrualEvent).Count; int postingEvents = saving.Events.FindAll(items => items is SavingInterestsPostingEvent).Count; OCurrency interests = saving.Events.Where(item => item is SavingInterestsAccrualEvent).Sum(item => item.Amount.Value); Assert.AreEqual(accrualEvents, 4); Assert.AreEqual(postingEvents, 0); Assert.AreEqual(saving.GetBalance(), 1000); }
public void CalculateInterest_AccrualMode_Daily_EndOfMonth_OneClosure_TwoMonthsAndOneBrouette_AfterCreation() { ApplicationSettings.GetInstance("").UpdateParameter(OGeneralSettings.ACCOUNTINGPROCESS, OAccountingProcesses.Accrual); _product.InterestFrequency = OSavingInterestFrequency.EndOfMonth; SavingBookContract saving = new SavingBookContract(ApplicationSettings.GetInstance(""), new User(), new DateTime(2009, 01, 01), null) { Product = _product, InterestRate = 0.01, ManagementFees = 10, AgioFees = 0.1 }; saving.FirstDeposit(1000, new DateTime(2009, 01, 01), null, new User(), Teller.CurrentTeller); saving.Closure(new DateTime(2009, 02, 04), new User() { Id = 1 }); int accrualEvents = saving.Events.FindAll(item => item is SavingInterestsAccrualEvent).Count; int postingEvents = saving.Events.FindAll(items => items is SavingInterestsPostingEvent).Count; Assert.AreEqual(accrualEvents, 34); Assert.AreEqual(postingEvents, 1); Assert.AreEqual(saving.GetBalance(), 1299.9); }
public void CalculateInterest_CashMode_Daily_EndOfWeek_OneClosure_On_PostingDate() { SavingBookContract saving = new SavingBookContract(ApplicationSettings.GetInstance(""), new User(), new DateTime(2009, 01, 01), null) { Product = _product, InterestRate = 0.01, ManagementFees = 0, AgioFees = 0 }; saving.FirstDeposit(100, new DateTime(2009, 01, 01), null, new User(), Teller.CurrentTeller); saving.Closure(new DateTime(2009, 01, 05), new User() { Id = 1 }); int accrualEvents = saving.Events.FindAll(item => item is SavingInterestsAccrualEvent).Count; int postingEvents = saving.Events.FindAll(items => items is SavingInterestsPostingEvent).Count; OCurrency interests = saving.Events.Where(item => item is SavingInterestsAccrualEvent).Sum(item => item.Amount.Value); Assert.AreEqual(accrualEvents, 5); Assert.AreEqual(postingEvents, 0); Assert.AreEqual(saving.GetBalance(), 100); }
public void RateWithdrawFees() { SavingsBookProduct product = new SavingsBookProduct() { WithdrawFeesType = OSavingsFeesType.Rate, RateWithdrawFeesMin = 0.01, RateWithdrawFeesMax = 0.05 }; SavingBookContract saving = new SavingBookContract(ApplicationSettings.GetInstance(""), new User(), new DateTime(2009, 01, 01), product, null) { RateWithdrawFees = 0.03 }; saving.FirstDeposit(1000, new DateTime(2009, 01, 01), null, new User(), Teller.CurrentTeller); List<SavingEvent> withdrawEvents = saving.Withdraw(10, new DateTime(2009, 01, 02), "withdraw", new User(), false, null); Assert.AreEqual(1, withdrawEvents.Count); Assert.AreEqual(10, withdrawEvents[0].Amount.Value); Assert.AreEqual(0.3, ((ISavingsFees)withdrawEvents[0]).Fee.Value); Assert.AreEqual(989.7, saving.GetBalance().Value); }
public void CalculateInterest_AccrualMode_Weekly_EndOfYear_OneClosure_DayOfCreation() { ApplicationSettings.GetInstance("").UpdateParameter(OGeneralSettings.ACCOUNTINGPROCESS, OAccountingProcesses.Accrual); _product.InterestBase = OSavingInterestBase.Weekly; _product.InterestFrequency = OSavingInterestFrequency.EndOfYear; SavingBookContract saving = new SavingBookContract(ApplicationSettings.GetInstance(""), new User(), new DateTime(2009, 01, 15), null) { Product = _product, InterestRate = 0.1 }; saving.FirstDeposit(1000, new DateTime(2009, 01, 15), null, new User(), Teller.CurrentTeller); List<SavingEvent> events = saving.Closure(new DateTime(2009, 01, 15, 1, 1, 1), new User() { Id = 1 }); int accrualEvents = saving.Events.FindAll(item => item is SavingInterestsAccrualEvent).Count; int postingEvents = saving.Events.FindAll(item => item is SavingInterestsPostingEvent).Count; Assert.AreEqual(events.Count, 1); Assert.AreEqual(accrualEvents, 0); Assert.AreEqual(postingEvents, 0); Assert.AreEqual(saving.GetBalance(), 1000); }
public void CalculateInterest_AccrualhMode_Daily_EndOfYear_OneClosure_AfterOneWeek_Agio() { ApplicationSettings.GetInstance("").UpdateParameter(OGeneralSettings.ACCOUNTINGPROCESS, OAccountingProcesses.Accrual); _product.InterestFrequency = OSavingInterestFrequency.EndOfYear; SavingBookContract saving = new SavingBookContract(ApplicationSettings.GetInstance(""), new User(), new DateTime(2009, 01, 01), null) {Product = _product, InterestRate = 0.1, AgioFees = 0.1}; saving.FirstDeposit(-100, new DateTime(2009, 01, 01), 0, new User(), Teller.CurrentTeller); saving.Closure(new DateTime(2009, 01, 08), new User() { Id = 1 }); int accrualEvents = saving.Events.FindAll(item => item is SavingInterestsAccrualEvent).Count; int postingEvents = saving.Events.FindAll(items => items is SavingInterestsPostingEvent).Count; /*Assert.AreEqual(accrualEvents, 7); Assert.AreEqual(postingEvents, 0); Assert.AreEqual(saving.ChartOfAccounts.GetAccountByNumber(OAccounts.ACCOUNT_PAYABLE_INTERESTS_ON_SAVINGS_BOOKS, 1).Balance.Value, 700); Assert.AreEqual(saving.ChartOfAccounts.GetAccountByNumber(OAccounts.SAVINGS, 1).Balance.Value, 1000); Assert.AreEqual(saving.ChartOfAccounts.GetAccountByNumber(OAccounts.CASH, 1).Balance.Value, 1000); Assert.AreEqual(saving.ChartOfAccounts.GetAccountByNumber(OAccounts.INTERESTS_ON_DEPOSIT_ACCOUNT, 1).Balance.Value, 700); */ List<SavingEvent> agioEvents = saving.Events.FindAll(items => items is SavingAgioEvent); Assert.AreEqual(agioEvents.Count, 7); Assert.AreEqual(agioEvents[0].Fee, 10); Assert.AreEqual(saving.GetBalance(), -194.88); // saving.Deposit(200, new DateTime(2009, 01, 08), "depot", new User(), false, false, OPaymentMethods.Cash, null, null); saving.Deposit(200, new DateTime(2009, 01, 08), "depot", new User(), false, false, OSavingsMethods.Cash, null, null); //saving.Withdraw(230, new DateTime(2009, 02, 03), "retrait", new User(), false); saving.Closure(new DateTime(2009, 01, 15), new User() { Id = 1 }); List<SavingEvent> agioEvents2 = saving.Events.FindAll(items => items is SavingAgioEvent); Assert.AreEqual(agioEvents2.Count, 7); Assert.AreEqual(saving.GetBalance(), 5.12); }
public void Cancel_Last_Withdraw_Event_After_Closure() { SavingBookContract saving = new SavingBookContract(ApplicationSettings.GetInstance(""), new User(), new DateTime(2009, 01, 01), _product, null) { InterestRate = 0.1, FlatWithdrawFees = 0, AgioFees = 0.1 }; saving.FirstDeposit(100, new DateTime(2009, 01, 01), null, new User(), Teller.CurrentTeller); saving.Closure(new DateTime(2009, 01, 02), new User()); saving.Withdraw(50, new DateTime(2009, 01, 02), "retrait", new User(), false, null); Assert.AreEqual(saving.GetBalance(), 50); saving.Closure(new DateTime(2009, 01, 05), new User()); Assert.AreEqual(saving.GetBalance(), 50); saving.CancelLastEvent(); Assert.AreEqual(saving.GetBalance(), 50); }
public void Cancel_Last_Event() { SavingsBookProduct product = new SavingsBookProduct { Id = 1, InterestBase = OSavingInterestBase.Daily, InterestFrequency = OSavingInterestFrequency.EndOfWeek }; SavingBookContract saving = new SavingBookContract(ApplicationSettings.GetInstance(""), new User(), new DateTime(2009, 01, 01), product, null) { InterestRate = 0.1 }; saving.FirstDeposit(100, new DateTime(2009, 01, 01), null, new User(), Teller.CurrentTeller); Assert.AreEqual(saving.GetBalance(), 100); saving.CancelLastEvent(); Assert.AreEqual(saving.GetBalance(), 100); }
public void Cancel_Last_Deposit_Event_After_Closure() { SavingBookContract saving = new SavingBookContract(ApplicationSettings.GetInstance(""), new User(), new DateTime(2009, 01, 01), _product, null) { InterestRate = 0.1, DepositFees = 5, CloseFees = 6, ManagementFees = 7, AgioFees = 8, OverdraftFees = 9}; saving.FirstDeposit(100, new DateTime(2009, 01, 01), null, new User(), Teller.CurrentTeller); saving.Closure(new DateTime(2009, 01, 02), new User()); // saving.Deposit(50, new DateTime(2009, 01, 02), "depot", new User(), false, false, OPaymentMethods.Cash, null, null); saving.Deposit(50, new DateTime(2009, 01, 02), "depot", new User(), false, false, OSavingsMethods.Cash, null, null); Assert.AreEqual(saving.GetBalance(), 150); saving.Closure(new DateTime(2009, 01, 05), new User()); Assert.AreEqual(saving.GetBalance(), 150); saving.CancelLastEvent(); Assert.AreEqual(saving.GetBalance(), 150); }
public void CalculateInterest_CashMode_Weekly_EndOfYear_OneClosure_AfterOnDay() { _product.InterestBase = OSavingInterestBase.Weekly; _product.InterestFrequency = OSavingInterestFrequency.EndOfYear; SavingBookContract saving = new SavingBookContract(ApplicationSettings.GetInstance(""), new User(), new DateTime(2009, 01, 01), null) { Product = _product, InterestRate = 0.1, ManagementFees = 10, AgioFees = 0.1 }; saving.FirstDeposit(1000, new DateTime(2009, 01, 01), null, new User(), Teller.CurrentTeller); List<SavingEvent> events = saving.Closure(new DateTime(2009, 01, 02, 1, 1, 1), new User() { Id = 1 }); int accrualEvents = saving.Events.FindAll(item => item is SavingInterestsAccrualEvent).Count; int postingEvents = saving.Events.FindAll(item => item is SavingInterestsPostingEvent).Count; Assert.AreEqual(events.Count, 1); Assert.AreEqual(accrualEvents, 0); Assert.AreEqual(postingEvents, 0); Assert.AreEqual(saving.GetBalance(), 1000); }
public void CalculateInterest_CashMode_Daily_EndOfWeek_OneClosure_DayOfCreation() { SavingBookContract saving = new SavingBookContract(ApplicationSettings.GetInstance(""), new User(), new DateTime(2009, 01, 15), null) { Product = _product, InterestRate = 0.1 }; saving.FirstDeposit(1000, new DateTime(2009, 01, 15), null, new User(), Teller.CurrentTeller); List<SavingEvent> events = saving.Closure(new DateTime(2009, 01, 15, 1, 1, 1), new User() { Id = 1 }); int accrualEvents = saving.Events.FindAll(item => item is SavingInterestsAccrualEvent).Count; int postingEvents = saving.Events.FindAll(item => item is SavingInterestsPostingEvent).Count; Assert.AreEqual(events.Count, 1); Assert.AreEqual(accrualEvents, 0); Assert.AreEqual(postingEvents, 0); Assert.AreEqual(saving.GetBalance(), 1000); }
public void CalculateInterest_CashMode_Daily_EndOfDay_OneClosure_AfterOneDay() { _product.InterestFrequency = OSavingInterestFrequency.EndOfDay; SavingBookContract saving = new SavingBookContract(ApplicationSettings.GetInstance(""), new User(), new DateTime(2009, 01, 01), null) {Product = _product, InterestRate = 0.1}; saving.FirstDeposit(1000, new DateTime(2009, 01, 01), null, new User(), Teller.CurrentTeller); int accrualEvents = saving.Events.FindAll(item => item is SavingInterestsAccrualEvent).Count; int postingEvents = saving.Events.FindAll(items => items is SavingInterestsPostingEvent).Count; Assert.AreEqual(accrualEvents, 0); Assert.AreEqual(postingEvents, 0); Assert.AreEqual(saving.GetBalance(), 1000); }
private static decimal CheckVirtualBalance(SavingBookContract saving, OCurrency totalAmount) { // Virtual balance saving.Loans = ServicesProvider.GetInstance().GetSavingServices().SelectLoansBySavingsId(saving.Id); decimal totalAmountPercentage = 0; if ((saving.Loans != null && (saving.Loans.Count > 0))) { decimal balance = saving.GetBalance().Value; foreach (Loan assosiatedLoan in saving.Loans) { if (assosiatedLoan.ContractStatus == OContractStatus.Active) { if (assosiatedLoan.CompulsorySavingsPercentage != null) totalAmountPercentage += (assosiatedLoan.Amount.Value * (decimal)assosiatedLoan.CompulsorySavingsPercentage) / 100; } } if ((balance - totalAmountPercentage) < totalAmount) { return totalAmountPercentage; } } // should be 0 in case we can do operation return 0; }
public void CloseAccount() { Assert.Ignore(); _product.InterestBase = OSavingInterestBase.Weekly; _product.InterestFrequency = OSavingInterestFrequency.EndOfMonth; SavingBookContract saving = new SavingBookContract( ApplicationSettings.GetInstance(""), new User(), new DateTime(2009, 01, 01), null) { Product = _product, InterestRate = 0.1 }; List<SavingEvent> events = saving.Close( new DateTime(2009, 02, 15), new User(), "Close savings contract", false, Teller.CurrentTeller, false ); int accrualEvents = saving.Events.FindAll(item => item is SavingInterestsAccrualEvent).Count; int postingEvents = saving.Events.FindAll(item => item is SavingInterestsPostingEvent).Count; Assert.AreEqual(events.Count, 10); Assert.AreEqual(accrualEvents, 6); Assert.AreEqual(postingEvents, 2); Assert.AreEqual(saving.GetBalance(), 1640); Assert.AreEqual(saving.Status, OSavingsStatus.Closed); }
public void CalculateInterest_AccrualMode_Monthly_EndOfYear_OneClosure_On_PostingDate() { ApplicationSettings.GetInstance("").UpdateParameter(OGeneralSettings.ACCOUNTINGPROCESS, OAccountingProcesses.Accrual); _product.InterestBase = OSavingInterestBase.Monthly; _product.InterestFrequency = OSavingInterestFrequency.EndOfYear; SavingBookContract saving = new SavingBookContract(ApplicationSettings.GetInstance(""), new User(), new DateTime(2009, 01, 01), null) { Product = _product, InterestRate = 0.1, ManagementFees = 10, AgioFees = 0.1 }; saving.FirstDeposit(1000, new DateTime(2009, 01, 01), null, new User(), Teller.CurrentTeller); saving.Closure(new DateTime(2010, 01, 01, 1, 1, 1), new User() { Id = 1 }); int accrualEvents = saving.Events.FindAll(item => item is SavingInterestsAccrualEvent).Count; int postingEvents = saving.Events.FindAll(item => item is SavingInterestsPostingEvent).Count; Assert.AreEqual(accrualEvents, 12); Assert.AreEqual(postingEvents, 1); Assert.AreEqual(2014.0, saving.GetBalance().Value); }
public void Get_Balance() { List<SavingEvent> events = new List<SavingEvent> { new SavingDepositEvent {Amount = 3500.46m}, new SavingWithdrawEvent {Amount = 20}, new SavingDepositEvent {Amount = 100}, new SavingWithdrawEvent {Amount = 30} }; SavingBookContract saving = new SavingBookContract(ApplicationSettings.GetInstance(""), new User(), new DateTime(2008, 07, 18), null); saving.FirstDeposit(1000, new DateTime(2008, 07, 18), null, new User(), Teller.CurrentTeller); saving.Events.AddRange(events); Assert.AreEqual(4550.46m, saving.GetBalance().Value); }
public void CalculateInterest_AccrualMode_Weekly_EndOfWeek_OneClosure_AfterOneWeek() { ApplicationSettings.GetInstance("").UpdateParameter(OGeneralSettings.ACCOUNTINGPROCESS, OAccountingProcesses.Accrual); _product.InterestBase = OSavingInterestBase.Weekly; SavingBookContract saving = new SavingBookContract(ApplicationSettings.GetInstance(""), new User(), new DateTime(2009, 01, 01), null) { Product = _product, InterestRate = 0.1, ManagementFees = 10, AgioFees = 0.1 }; saving.FirstDeposit(1000, new DateTime(2009, 01, 01), null, new User(), Teller.CurrentTeller); List<SavingEvent> events = saving.Closure(new DateTime(2009, 01, 08, 1, 1, 1), new User() { Id = 1 }); int accrualEvents = saving.Events.FindAll(item => item is SavingInterestsAccrualEvent).Count; int postingEvents = saving.Events.FindAll(item => item is SavingInterestsPostingEvent).Count; Assert.AreEqual(3, events.Count); Assert.AreEqual(1, accrualEvents); Assert.AreEqual(1, postingEvents); Assert.AreEqual(1100m, saving.GetBalance().Value); }
public void Get_Balance_At_Date() { SavingsBookProduct product = new SavingsBookProduct() { WithdrawFeesType = OSavingsFeesType.Flat, FlatWithdrawFees = 0 }; SavingBookContract saving = new SavingBookContract(ApplicationSettings.GetInstance(""), new User(), new DateTime(2009, 01, 01), product, null) { FlatWithdrawFees = 0, DepositFees = 5, CloseFees = 6, ManagementFees = 7}; saving.FirstDeposit(1000, new DateTime(2009, 01, 01), null, new User(), Teller.CurrentTeller); // saving.Deposit(100, new DateTime(2009, 02, 01), "depot", new User(), false, false, OPaymentMethods.Cash, null, null); saving.Deposit(100, new DateTime(2009, 02, 01), "depot", new User(), false, false, OSavingsMethods.Cash, null, null); saving.Withdraw(230, new DateTime(2009, 02, 03), "retrait", new User(), false, null); Assert.AreEqual(saving.GetBalance(new DateTime(2009, 01, 31)), 1000); Assert.AreEqual(saving.GetBalance(new DateTime(2009, 02, 01)), 1100); Assert.AreEqual(saving.GetBalance(new DateTime(2009, 02, 02)), 1100); Assert.AreEqual(saving.GetBalance(new DateTime(2009, 02, 03)), 870); }
public void Create_Saving_Book_Account_With_EntryFees() { SavingsBookProduct product = new SavingsBookProduct() { Name = "NewSavingProduct", InitialAmountMin = 1000, InitialAmountMax = 2000, DepositMin = 100, DepositMax = 200, WithdrawingMin = 100, WithdrawingMax = 200, InterestRate = 0.2, BalanceMin = 1000, BalanceMax = 2000, InterestBase = OSavingInterestBase.Monthly, InterestFrequency = OSavingInterestFrequency.EndOfYear, CalculAmountBase = OSavingCalculAmountBase.MinimalAmount, ClientType = OClientTypes.All, EntryFeesMin = 5, EntryFeesMax = 15, Currency = new Currency { Id = 1 } }; SavingBookContract saving = new SavingBookContract(ApplicationSettings.GetInstance(""), new User(), new DateTime(2009, 01, 01), product, null); saving.InitialAmount = 1000; saving.EntryFees = 10; saving.FirstDeposit(1000, new DateTime(2009, 01, 01), 10, new User(), Teller.CurrentTeller); Assert.AreEqual(saving.GetBalance(), 1000); Assert.AreEqual(saving.Events.Count, 1); Assert.AreEqual(saving.InitialAmount, 1000); Assert.AreEqual(saving.EntryFees, 10); }
public void Get_Set_InitialAmount() { List<SavingEvent> events = new List<SavingEvent> { new SavingWithdrawEvent {Amount = 75, Date = new DateTime(2008, 10, 21)}, new SavingDepositEvent {Amount = 12.46m, Date = new DateTime(2008, 08, 18)}, new SavingDepositEvent {Amount = 86, Date = new DateTime(2008, 09, 01)} }; SavingBookContract saving = new SavingBookContract(ApplicationSettings.GetInstance(""), new User(), new DateTime(2008, 07, 18), null); saving.InitialAmount = 1000; saving.FirstDeposit(1000, new DateTime(2008, 07, 18), null, new User(), Teller.CurrentTeller); saving.Events.AddRange(events); Assert.AreEqual(1023.46m, saving.GetBalance().Value); Assert.AreEqual(1000m, saving.InitialAmount.Value); }
public void SeveralMgmtFeeEvents() { _saving = new SavingBookContract(ApplicationSettings.GetInstance(""), new User(), new DateTime(2007, 08, 11), _bookProduct, null); _saving.AgioFees = 0.1; _saving.ManagementFees = 50; _saving.FirstDeposit(10000, new DateTime(2007, 08, 01), null, new User(), Teller.CurrentTeller); _saving.Closure(new DateTime(2007, 12, 31), new User()); List<SavingEvent> events = _saving.Events.FindAll(item => item is SavingManagementFeeEvent); Assert.AreEqual(events.Count, 4); Assert.AreEqual(9800,_saving.GetBalance().Value); }
public void CalculateInterest_AccrualMode_Daily_EndOfMonth_OneClosure_65Days_AfterCreation() { ApplicationSettings.GetInstance("").UpdateParameter(OGeneralSettings.ACCOUNTINGPROCESS, OAccountingProcesses.Accrual); _product.InterestFrequency = OSavingInterestFrequency.EndOfMonth; SavingBookContract saving = new SavingBookContract(ApplicationSettings.GetInstance(""), new User(), new DateTime(2009, 01, 01), null) { Product = _product, InterestRate = 1, ManagementFees = 0, AgioFees = 0 }; saving.FirstDeposit(1000, new DateTime(2009, 01, 01), null, new User(), Teller.CurrentTeller); saving.Closure(new DateTime(2009, 03, 07), new User() { Id = 1 }); int accrualEvents = saving.Events.FindAll(item => item is SavingInterestsAccrualEvent).Count; int postingEvents = saving.Events.FindAll(items => items is SavingInterestsPostingEvent).Count; //OCurrency interests = saving.Events.Where(item => item is SavingInterestsAccrualEvent).Sum(item => item.Amount.Value); Assert.AreEqual(accrualEvents, 65); Assert.AreEqual(postingEvents, 2); Assert.AreEqual(saving.GetBalance(), 929000); }
public void Charge_agio_fees() { SavingBookContract saving = new SavingBookContract(ApplicationSettings.GetInstance(""), new User(), new DateTime(2009, 01, 01), null) { Product = _bookProduct, AgioFees = 0.01, ChequeDepositFees = 100, DepositFees = 50, CloseFees = 100, ReopenFees = 100, OverdraftFees = 100 }; saving.FirstDeposit(1000, new DateTime(2009, 01, 01), null, new User(), Teller.CurrentTeller); Currency currency = new Currency() { UseCents = true, Code = "SOM", Id = 1, IsPivot = true, Name = "SOM" }; Assert.AreEqual(1000, saving.GetBalance().Value); //Below, we explicitly implement withdraw method from <Saving services>.<Withdraw>, since withdraw method of 'saving' object doesn't implement // overdraft fee by default List<SavingEvent> withdrawEvents = saving.Withdraw(1100, new DateTime(2009, 1, 2), "withdraw", new User(), false, null); saving.Closure(new DateTime(2009, 1, 12), new User()); //agio for ten days Assert.AreEqual(-111.55, saving.GetBalance().Value); }
public void FlatWithdrawFees() { SavingsBookProduct product = new SavingsBookProduct() { WithdrawFeesType = OSavingsFeesType.Flat, FlatWithdrawFeesMin = 1, FlatWithdrawFeesMax = 5 }; SavingBookContract saving = new SavingBookContract(ApplicationSettings.GetInstance(""), new User(), new DateTime(2009, 01, 01), product, null) {FlatWithdrawFees = 2, }; saving.FirstDeposit(1000, new DateTime(2009, 01, 01), null, new User(), Teller.CurrentTeller); List<SavingEvent> withdrawEvents = saving.Withdraw(10, new DateTime(2009, 01, 02), "withdraw", new User(), false, null,new PaymentMethod()); Assert.AreEqual(1, withdrawEvents.Count); Assert.AreEqual(10, withdrawEvents[0].Amount.Value); Assert.AreEqual(2, ((ISavingsFees)withdrawEvents[0]).Fee.Value); Assert.AreEqual(988, saving.GetBalance().Value); }