private void CloseAndTransfer(ISavingsContract from, ISavingsContract to, DateTime date, User pUser, OCurrency amount, bool pIsDesactivateFees, Teller teller) { from.Transfer(to, amount, 0, date, "Closing transfer"); from.Close(date, pUser, "Close savings contract", pIsDesactivateFees, teller, true); }
public List<SavingEvent> CloseAndTransfer(ISavingsContract from, ISavingsContract to, DateTime date, User pUser, OCurrency amount, bool pIsDesactivateFees, Teller teller) { if (to.Status == OSavingsStatus.Closed) throw new OpenCbsSavingException(OpenCbsSavingExceptionEnum.CreditTransferAccountInvalid); if (from.Id == to.Id) throw new OpenCbsSavingException(OpenCbsSavingExceptionEnum.SavingsContractForTransferIdenticals); if (from.Product.Currency.Id != to.Product.Currency.Id) throw new OpenCbsSavingException(OpenCbsSavingExceptionEnum.SavingsContractForTransferNotSameCurrncy); OCurrency balance = SimulateCloseAccount(from, date, pUser, pIsDesactivateFees, teller).GetBalance(date); if (from is SavingBookContract && !pIsDesactivateFees) balance -= ((SavingBookContract)from).CloseFees; if (balance != amount) throw new OpenCbsSavingException(OpenCbsSavingExceptionEnum.TransferAmountIsInvalid); List<SavingEvent> events = new List<SavingEvent>(); events.AddRange(from.Transfer(to, amount, 0, date, "Closing transfer")); events.AddRange(from.Close(date, pUser, "Close savings contract", pIsDesactivateFees, teller, false)); foreach (SavingEvent e in events) _ePS.FireEvent(e); if (from.ClosedDate != null) _savingManager.UpdateStatus(from.Id, from.Status, from.ClosedDate.Value); return events; }
public List<SavingEvent> Transfer(ISavingsContract from, ISavingsContract to, DateTime date, OCurrency amount, OCurrency fee, string description, User user, bool noFee) { CheckTransfer(to, from, amount, fee, date, description); List<SavingEvent> events = from.Transfer(to, amount, fee, date, description); foreach (SavingEvent e in events) _ePS.FireEvent(e); return events; }