public List<SavingEvent> RepayLoanFromSaving(Loan loan, RepaymentEvent repaymentEvent, ISavingsContract savingsContract, DateTime date, OCurrency amount, string description, SqlTransaction sqlTransaction) { if (savingsContract.GetBalance() - amount < 0) throw new OpenCbsSavingException(OpenCbsSavingExceptionEnum.WithdrawAmountIsInvalid); User user = User.CurrentUser; Teller teller = Teller.CurrentTeller; if (date.Hour == 0 && date.Minute == 0 && date.Second == 0) { date = new DateTime(date.Year, date.Month, date.Day, TimeProvider.Now.Hour, TimeProvider.Now.Minute, TimeProvider.Now.Second); } ISavingsContract savingSimulation = (ISavingsContract) savingsContract.Clone(); savingSimulation.RepayLoanFromSaving(loan, repaymentEvent.Id, date, amount, description, user, teller); List<SavingEvent> events = savingsContract.RepayLoanFromSaving(loan, repaymentEvent.Id, date, amount, description, user, teller); foreach (SavingEvent savingEvent in events) { _ePS.FireEvent(savingEvent, savingsContract, sqlTransaction); } return events; }