private List <SavingEvent> ChargeAgioFee(DateTime closureDate)
        {
            List <SavingEvent> retval = new List <SavingEvent>();

            DateTime prevDate = GetLastAgioEventDate();
            DateTime nextDate = prevDate;

            nextDate = nextDate.AddMonths(Product.AgioFeesFreq.NbOfMonths);
            nextDate = nextDate.AddDays(Product.AgioFeesFreq.NbOfDays);

            while (nextDate.Date <= closureDate.Date)
            {
                SavingAgioEvent savingAgioEvent = GenerateAgioEvent(prevDate, nextDate);
                if (savingAgioEvent != null)
                {
                    if (savingAgioEvent.Fee > 0)
                    {
                        retval.Add(savingAgioEvent);
                    }
                }

                prevDate = nextDate;
                nextDate = nextDate.AddMonths(Product.AgioFeesFreq.NbOfMonths);
                nextDate = nextDate.AddDays(Product.AgioFeesFreq.NbOfDays);
            }

            return(retval);
        }
        private SavingAgioEvent GenerateAgioEvent(DateTime prevDate, DateTime nextDate)
        {
            OCurrency balance = GetBalance(nextDate);

            if (balance < 0)
            {
                const string desc  = "Agio of {0} for {1:dd.MM.yyyy} - {2:dd.MM.yyyy} : {3}";
                object[]     items = new object[] { Math.Abs((balance * AgioFees.Value).Value), prevDate, nextDate, Code };

                SavingAgioEvent savingAgioEvent = new SavingAgioEvent
                {
                    Amount      = 0m,
                    Cancelable  = true,
                    Date        = nextDate,
                    Description = string.Format(desc, items),
                    Fee         = Math.Abs((balance * AgioFees.Value).Value),
                    User        = User,
                    ProductType = Product.GetType(),
                    Branch      = Branch,
                    Currency    = Product.Currency,
                    ContracId   = Id
                };

                AddSavingEvent(savingAgioEvent);
                return(savingAgioEvent);
            }

            return(null);
        }
Beispiel #3
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);
        }
Beispiel #4
0
        private SavingAgioEvent GenerateAgioEvent(DateTime prevDate, DateTime nextDate)
        {
            OCurrency balance = GetBalance(nextDate);
            if (balance < 0)
            {
                const string desc = "Agio of {0} for {1:dd.MM.yyyy} - {2:dd.MM.yyyy}";
                object[] items = new object[] { Math.Abs((balance * AgioFees.Value).Value), prevDate, nextDate };

                SavingAgioEvent savingAgioEvent = new SavingAgioEvent
                {
                    Amount = 0m,
                    Cancelable = true,
                    Date = nextDate,
                    Description = string.Format(desc, items),
                    Fee = Math.Abs((balance * AgioFees.Value).Value),
                    User = _user,
                    ProductType = Product.GetType()
                };

                _AddSavingEvent(savingAgioEvent);
                return savingAgioEvent;
            }

            return null;
        }