private List <SavingEvent> GenerateAMFeeEvent(SavingEvent savingsEvent) { List <SavingEvent> retval = new List <SavingEvent>(); const string desc = "Account maintenance fee of {0:.00} : {1}"; var fees = Product.AMFeesType == OSavingsFeesType.Flat ? FlatAMFees.GetFormatedValue(true) : Convert.ToString(savingsEvent.Amount * RateAMFees.Value); object[] items = new object[] { fees, Code }; SavingAMFeeEvent sdsfe = new SavingAMFeeEvent { Amount = 0m, Cancelable = true, Date = savingsEvent.Date, Description = string.Format(desc, items), Fee = Product.AMFeesType == OSavingsFeesType.Flat ? FlatAMFees : savingsEvent.Amount * RateAMFees.Value, User = savingsEvent.User, ProductType = Product.GetType(), Branch = Branch, Currency = Product.Currency, ContracId = Id, IsPending = true }; retval.Add(sdsfe); AddSavingEvent(sdsfe); OCurrency balance = GetBalance(CreationDate); if (balance < 0) { if (!InOverdraft) { SavingOverdraftFeeEvent overdraftFeeEvent = new SavingOverdraftFeeEvent { Amount = 0m, Date = CreationDate, Description = "Overdraft fee event : " + Code, User = User, Cancelable = false, Fee = OverdraftFees, ProductType = typeof(SavingsBookProduct), Branch = Branch, Currency = Product.Currency, ContracId = Id }; AddSavingEvent(overdraftFeeEvent); retval.Add(overdraftFeeEvent); InOverdraft = true; } } return(retval); }
private static SavingEvent GetSavingsEvent(string code) { SavingEvent e; switch (code) { case OSavingEvents.Deposit: e = new SavingDepositEvent(); break; case OSavingEvents.Withdraw: e = new SavingWithdrawEvent(); break; case OSavingEvents.AMFee: e = new SavingAMFeeEvent(); break; case OSavingEvents.Accrual: e = new SavingInterestsAccrualEvent(); break; case OSavingEvents.Posting: e = new SavingInterestsPostingEvent(); break; case OSavingEvents.InitialDeposit: e = new SavingInitialDepositEvent(); break; case OSavingEvents.CreditTransfer: e = new SavingCreditTransferEvent(); break; case OSavingEvents.DebitTransfer: e = new SavingDebitTransferEvent(); break; case OSavingEvents.ManagementFee: e = new SavingManagementFeeEvent(); break; case OSavingEvents.InstrumentFee: e = new SavingInstrumentFeeEvent(); break; case OSavingEvents.SearchFee: e = new SavingSearchFeeEvent(); break; case OSavingEvents.DutyStampFee: e = new SavingDutyStampFeeEvent(); break; case OSavingEvents.SavingClosure: e = new SavingClosureEvent(); break; case OSavingEvents.Close: e = new SavingCloseEvent(); break; case OSavingEvents.OverdraftFees: e = new SavingOverdraftFeeEvent(); break; case OSavingEvents.Agio: e = new SavingAgioEvent(); break; case OSavingEvents.PendingDeposit: e = new SavingPendingDepositEvent(); break; case OSavingEvents.Reopen: e = new SavingReopenEvent(); break; case OSavingEvents.PendingDepositRefused: e = new SavingPendingDepositRefusedEvent(); break; case OSavingEvents.SpecialOperationCredit: e = new SavingCreditOperationEvent(); break; case OSavingEvents.SpecialOperationDebit: e = new SavingDebitOperationEvent(); break; case OSavingEvents.InterBranchCreditTransfer: e = new SavingCreditInterBranchTransferEvent(); break; case OSavingEvents.InterBranchDebitTransfer: e = new SavingDebitInterBranchTransferEvent(); break; case OSavingEvents.LoanDisbursement: e = new SavingLoanDisbursementEvent(); break; case OSavingEvents.SavingLoanRepayment: e = new LoanRepaymentFromSavingEvent(); break; case OSavingEvents.BlockCompulsarySavings: e = new SavingBlockCompulsarySavingsEvent(); break; case OSavingEvents.UnblockCompulsorySavings: e = new SavingUnblockCompulsorySavingsEvent(); break; default: Debug.Fail("Failed to create saving event object"); throw new Exception(); } return(e); }