Ejemplo n.º 1
0
        public virtual List <SavingEvent> FirstDeposit(OCurrency pInitialAmount, DateTime pCreationDate, OCurrency pEntryFees, User pUser, Teller teller)
        {
            List <SavingEvent> events = new List <SavingEvent>();

            int?tellerId = null;

            if (teller != null && teller.Id != 0)
            {
                tellerId = teller.Id;
            }

            SavingInitialDepositEvent initialEvent = new SavingInitialDepositEvent
            {
                Amount      = pInitialAmount,
                Date        = pCreationDate,
                Description = "First deposit",
                User        = pUser,
                Fee         = pEntryFees,
                TellerId    = tellerId,
                ProductType = typeof(SavingsBookProduct)
            };

            Events.Add(initialEvent);
            events.Add(initialEvent);

            CreationDate = pCreationDate;

            return(events);
        }
Ejemplo n.º 2
0
        public void Get_Set_Events()
        {
            List <SavingEvent>        events       = new List <SavingEvent>();
            SavingInitialDepositEvent eventDeposit = new SavingInitialDepositEvent
            {
                Id          = 1,
                Date        = new DateTime(2008, 10, 18),
                Description = "First deposit of 100",
                Amount      = 100
            };

            events.Add(eventDeposit);
            SavingWithdrawEvent eventWithdraw = new SavingWithdrawEvent
            {
                Id          = 2,
                Date        = new DateTime(2008, 10, 08),
                Description = "2nd withdraw of 75",
                Amount      = 75
            };

            events.Add(eventWithdraw);
            CompulsorySavings CompulsorySavings = new CompulsorySavings(ApplicationSettings.GetInstance(""), ChartOfAccounts.GetInstance(new User()), new User(), 12m, new DateTime(2008, 08, 18), null);

            CompulsorySavings.Events.AddRange(events);
            Assert.AreEqual(events.Count + 1, CompulsorySavings.Events.Count);
            CompulsorySavings.Events.Sort();
            events.Sort();
            Assert.AreEqual(12m, CompulsorySavings.Events[0].Amount.Value);
            Assert.AreEqual(75m, CompulsorySavings.Events[1].Amount.Value);
            Assert.AreEqual(100m, CompulsorySavings.Events[2].Amount.Value);
        }
Ejemplo n.º 3
0
        public List <SavingInterestsAccrualEvent> CalculateInterest(DateTime pClosureDate)
        {
            List <SavingInterestsAccrualEvent> listInterestsAccrualEvent = new List <SavingInterestsAccrualEvent>();

            DateTime lastClosureDate = _saving.GetLastAccrualDate();

            while (DateCalculationStrategy.DateCalculationMonthly(lastClosureDate, pClosureDate))
            {
                DateTime accrualDate = new DateTime(lastClosureDate.AddMonths(1).Year, lastClosureDate.AddMonths(1).Month, 01,
                                                    DateTime.Now.Hour, DateTime.Now.Minute, DateTime.Now.Second);

                int count = _saving.Events.FindAll(se =>
                                                   (se.Code == OSavingEvents.Withdraw ||
                                                    se.Code == OSavingEvents.DebitTransfer /* ||
                                                                                            * se.Code == OSavingEvents.SpecialOperationDebit*/) &&
                                                   (se.Date > lastClosureDate && se.Date < accrualDate)).Count;

                if (count < 3)
                {
                    if (!_checkUsage)
                    {
                        listInterestsAccrualEvent.Add(GetInterests(lastClosureDate, accrualDate));
                    }
                    else
                    {
                        //slycode
                        SavingInitialDepositEvent firstDeposit = null;

                        foreach (var evnt in _saving.Events)
                        {
                            if (evnt is SavingInitialDepositEvent)
                            {
                                firstDeposit = (SavingInitialDepositEvent)evnt;

                                if (DateCalculationStrategy.DateCalculationMonthly(firstDeposit.Date, DateTime.Now, -3))
                                {
                                    listInterestsAccrualEvent.Add(GetInterests(lastClosureDate, accrualDate));
                                }

                                break;
                            }
                        }
                    }
                }
                lastClosureDate = lastClosureDate.AddMonths(1);
            }

            return(listInterestsAccrualEvent);
        }
Ejemplo n.º 4
0
        public override List <SavingEvent> FirstDeposit(OCurrency pInitialAmount, DateTime pCreationDate,
                                                        OCurrency pEntryFees, User pUser, Teller teller)
        {
            List <SavingEvent> events = new List <SavingEvent>();

            int?tellerId = null;

            if (teller != null && teller.Id != 0)
            {
                tellerId = teller.Id;
            }

            SavingInitialDepositEvent initialEvent = new SavingInitialDepositEvent
            {
                Amount          = pInitialAmount,
                Date            = pCreationDate,
                Description     = "First deposit",
                ReferenceNumber = "",
                User            = pUser,
                Fee             = pEntryFees,
                TellerId        = tellerId,
                ProductType     = typeof(SavingsBookProduct),
                SavingsMethod   = OSavingsMethods.Cash
            };

            Events.Add(initialEvent);
            events.Add(initialEvent);

            List <SavingEvent> instrumentFeeEvents = ChargeInstrumentFee(initialEvent);

            //Events.AddRange(instrumentFeeEvents);
            events.AddRange(instrumentFeeEvents);

            List <SavingEvent> searchFeeEvents = ChargeSearchFee(initialEvent);

            //Events.AddRange(searchFeeEvents);
            events.AddRange(searchFeeEvents);

            CreationDate = pCreationDate;

            return(events);
        }
Ejemplo n.º 5
0
        public void Get_Code()
        {
            SavingInitialDepositEvent savingInitialDeposit = new SavingInitialDepositEvent();

            Assert.AreEqual("SVIE", savingInitialDeposit.Code);
            SavingDepositEvent savingDeposit = new SavingDepositEvent();

            Assert.AreEqual("SVDE", savingDeposit.Code);
            SavingWithdrawEvent savingWithDraw = new SavingWithdrawEvent();

            Assert.AreEqual("SVWE", savingWithDraw.Code);
            SavingInterestsAccrualEvent savingAccrualInterest = new SavingInterestsAccrualEvent();

            Assert.AreEqual("SIAE", savingAccrualInterest.Code);
            SavingInterestsPostingEvent savingPostingInterest = new SavingInterestsPostingEvent();

            Assert.AreEqual("SIPE", savingPostingInterest.Code);
            SavingCreditTransferEvent savingCreditTransfer = new SavingCreditTransferEvent();

            Assert.AreEqual("SCTE", savingCreditTransfer.Code);
            SavingDebitTransferEvent savingDebitTransfer = new SavingDebitTransferEvent();

            Assert.AreEqual("SDTE", savingDebitTransfer.Code);
        }
Ejemplo n.º 6
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);
        }