Example #1
0
        public override List<SavingEvent> Close(DateTime pDate, User pUser, string pDescription, bool pIsDesactivateFees, Teller teller, bool isFromClosure)
        {
            int? tellerId = null;
            if (teller != null && teller.Id != 0) tellerId = teller.Id;
            List<SavingEvent> listEvents = new List<SavingEvent>();
            if (!isFromClosure)
                listEvents = Closure(pDate, pUser);

            SavingInterestsPostingEvent postingEvent = PostPayableInterests(pDate, pUser);
            if (postingEvent != null)
            {
                listEvents.Add(postingEvent);
            }
            OCurrency amountToPost = listEvents.Where(item => item is SavingInterestsPostingEvent).Sum(item => item.Amount.Value);

            SavingCloseEvent closeEvent = new SavingCloseEvent
            {
                Amount = amountToPost,
                Date = pDate,
                Description = pDescription,
                User = pUser,
                Cancelable = false,
                Fee = 0m,
                TellerId = tellerId,
                ProductType = typeof(SavingsBookProduct),
            };

            Events.Add(closeEvent);

            if (!pIsDesactivateFees)
            {
                closeEvent.Fee = CloseFees;
            }

            listEvents.Clear();
            listEvents.Add(closeEvent);
            Status = OSavingsStatus.Closed;
            ClosedDate = pDate;

            foreach (SavingEvent e in listEvents)
            {
                e.Target = this;
            }
            return listEvents;
        }
Example #2
0
 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.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.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;
 }