コード例 #1
0
 public void Setup()
 {
     _repaymentService.Settings.Loan = _loan.Copy();
     _view.PrincipalMax   = _loan.OLB;
     _view.PaymentMethods = ServicesProvider.GetInstance().GetPaymentMethodServices().GetAllPaymentMethods();
     _view.PaymentTypes   = new Dictionary <int, string>
     {
         { 0, _translationService.Translate("Normal") },
         { 1, _translationService.Translate("Early") }
     };
     _view.Title    = _loan.Project.Client.Name + " " + _loan.Code;
     _balanceString = _translationService.Translate("Available balance: ");
     if (ApplicationSettings.GetInstance(User.CurrentUser.Md5).ShowExtraInterestColumn)
     {
         _view.ShowExtraColumn();
     }
     if (!ApplicationSettings.GetInstance(User.CurrentUser.Md5).UseMandatorySavingAccount)
     {
         return;
     }
     _saving =
         (from item in _loan.Project.Client.Savings where item.Product.Code == "default" select item)
         .FirstOrDefault();
     if (_saving != null)
     {
         _saving = ServicesProvider.GetInstance().GetSavingServices().GetSaving(_saving.Id);
     }
 }
コード例 #2
0
        public void _compareSavings(ISavingsContract originalSaving, ISavingsContract retrievedSaving)
        {
            Assert.AreEqual(originalSaving.Id, retrievedSaving.Id);
            Assert.AreEqual(originalSaving.InterestRate, retrievedSaving.InterestRate);
            Assert.AreEqual(originalSaving.Product.Id, retrievedSaving.Product.Id);
            Assert.AreEqual(originalSaving.GetBalance(), retrievedSaving.GetBalance());
            Assert.AreEqual(originalSaving.Code, retrievedSaving.Code);
            Assert.AreEqual(originalSaving.CreationDate, retrievedSaving.CreationDate);
            Assert.AreEqual(originalSaving.Status, retrievedSaving.Status);

            Assert.AreEqual(((SavingBookContract)originalSaving).FlatWithdrawFees.HasValue, ((SavingBookContract)retrievedSaving).FlatWithdrawFees.HasValue);
            if (((SavingBookContract)originalSaving).FlatWithdrawFees.HasValue)
            {
                Assert.AreEqual(((SavingBookContract)originalSaving).FlatWithdrawFees.Value, ((SavingBookContract)retrievedSaving).FlatWithdrawFees.Value);
            }
            Assert.AreEqual(((SavingBookContract)originalSaving).RateWithdrawFees.HasValue, ((SavingBookContract)retrievedSaving).RateWithdrawFees.HasValue);
            if (((SavingBookContract)originalSaving).RateWithdrawFees.HasValue)
            {
                Assert.AreEqual(((SavingBookContract)originalSaving).RateWithdrawFees.Value, ((SavingBookContract)retrievedSaving).RateWithdrawFees.Value);
            }

            Assert.AreEqual(((SavingBookContract)originalSaving).FlatTransferFees.HasValue, ((SavingBookContract)retrievedSaving).FlatTransferFees.HasValue);
            if (((SavingBookContract)originalSaving).FlatTransferFees.HasValue)
            {
                Assert.AreEqual(((SavingBookContract)originalSaving).FlatTransferFees.Value, ((SavingBookContract)retrievedSaving).FlatTransferFees.Value);
            }
            Assert.AreEqual(((SavingBookContract)originalSaving).RateTransferFees.HasValue, ((SavingBookContract)retrievedSaving).RateTransferFees.HasValue);
            if (((SavingBookContract)originalSaving).RateTransferFees.HasValue)
            {
                Assert.AreEqual(((SavingBookContract)originalSaving).RateTransferFees.Value,
                                ((SavingBookContract)retrievedSaving).RateTransferFees.Value);
            }
        }
コード例 #3
0
ファイル: SavingsContract.cs プロジェクト: logiciells/opencbs
        public virtual SavingEvent CreditTransfer(ISavingsContract from, OCurrency amount, DateTime date, string description)
        {
            SavingTransferEvent e;
            bool ib = Branch.Id != from.Branch.Id; // inter-branch

            if (ib)
            {
                e = new SavingCreditInterBranchTransferEvent();
            }
            else
            {
                e = new SavingCreditTransferEvent();
            }
            e.Description         = ib ? "Inter-branch transfer" : "Transfer";
            e.RelatedContractCode = from.Code;
            e.Amount      = amount;
            e.Fee         = 0;
            e.Date        = date;
            e.User        = User.CurrentUser;
            e.Description = description;
            e.ProductType = Product.GetType();
            e.Target      = this;
            Events.Add(e);
            return(e);
        }
コード例 #4
0
        public override List <SavingEvent> DebitTransfer(OCurrency pAmount, ISavingsContract pCreditAccount, DateTime pDate,
                                                         string pDescription, User pUser, bool pIsDesactivateFees)
        {
            List <SavingEvent>       events        = new List <SavingEvent>();
            SavingDebitTransferEvent transferEvent = new SavingDebitTransferEvent
            {
                Amount              = pAmount,
                Date                = pDate,
                Description         = pDescription,
                User                = pUser,
                Cancelable          = false,
                RelatedContractCode = pCreditAccount.Code,
                ProductType         = typeof(SavingsBookProduct)
            };

            events.Add(transferEvent);
            Events.Add(transferEvent);

            if (Status != OSavingsStatus.Closed && !pIsDesactivateFees)
            {
                transferEvent.Fee = Product.TransferFeesType == OSavingsFeesType.Flat ? FlatTransferFees : pAmount * RateTransferFees.Value;
            }

            return(events);
        }
コード例 #5
0
        public CalculateInterestsStrategy(ISavingsContract pSaving, User pUser, int pWeekEndDay2)
        {
            if (((SavingBookContract)pSaving).Product.InterestBase == OSavingInterestBase.Daily)
            {
                _ici = new Accrual.Daily(pSaving, pUser);
            }
            else if (((SavingBookContract)pSaving).Product.InterestBase == OSavingInterestBase.Monthly)
            {
                if (((SavingBookContract)pSaving).Product.CalculAmountBase == OSavingCalculAmountBase.MinimalAmount)
                {
                    _ici = new Accrual.MinimalAmount.Monthly((SavingBookContract)pSaving, pUser);
                }

                else if (((SavingBookContract)pSaving).Product.CalculAmountBase == OSavingCalculAmountBase.Usage)
                {
                    _ici = new Accrual.MinimalAmount.Monthly((SavingBookContract)pSaving, pUser, true);
                }
            }
            else if (((SavingBookContract)pSaving).Product.InterestBase == OSavingInterestBase.Weekly)
            {
                if (((SavingBookContract)pSaving).Product.CalculAmountBase == OSavingCalculAmountBase.MinimalAmount)
                {
                    _ici = new Accrual.MinimalAmount.Weekly((SavingBookContract)pSaving, pUser, pWeekEndDay2);
                }
            }
        }
コード例 #6
0
 public CalculateInterestsStrategy(ISavingsContract pSaving, User pUser, int pWeekEndDay2)
 {
     if (pSaving is Saving)
     {
         if (((Saving)pSaving).Product.InterestBase == OSavingInterestBase.Daily)
             _ici = new Accrual.Daily(pSaving, pUser);
         else if (((Saving)pSaving).Product.InterestBase == OSavingInterestBase.Monthly)
         {
             if (((Saving)pSaving).Product.CalculAmountBase == OSavingCalculAmountBase.MinimalAmount)
                 _ici = new Accrual.MinimalAmount.Monthly((Saving)pSaving, pUser);
         }
         else if (((Saving)pSaving).Product.InterestBase == OSavingInterestBase.Weekly)
         {
             if (((Saving)pSaving).Product.CalculAmountBase == OSavingCalculAmountBase.MinimalAmount)
                 _ici = new Accrual.MinimalAmount.Weekly((Saving)pSaving, pUser, pWeekEndDay2);
         }
     }
     else if (pSaving is SavingDeposit)
     {
         if (((SavingDeposit)pSaving).Product.InterestFrequency == OTermDepositInterestFrequency.Daily)
             _ici = new Accrual.Daily(pSaving, pUser);
         else if (((SavingDeposit)pSaving).Product.InterestFrequency == OTermDepositInterestFrequency.Maturity)
             _ici = new Accrual.Maturity((SavingDeposit)pSaving, pUser);
     }
 }
コード例 #7
0
        public void SavingServicesAccountAtMaturity(ISavingsContract savingContract, DateTime date, User user)
        {
            if (savingContract.Rollover == OSavingsRollover.None)
            {
                CloseAndTransfer(savingContract, savingContract.TransferAccount, date, user,
                                 savingContract.GetBalance(date), true, Teller.CurrentTeller);
            }

            if (savingContract.Rollover == OSavingsRollover.Principal)
            {
                DateTime lastMaturity = DateCalculationStrategy.GetLastMaturity(date,
                                                                                savingContract.Product.Periodicity,
                                                                                savingContract.NumberOfPeriods);

                OCurrency interests = savingContract.Events.Where(
                    item => item is SavingInterestsPostingEvent &&
                    item.Date.Date > lastMaturity &&
                    item.Date.Date <= date
                    ).
                                      Sum(item => item.Amount.Value);

                // TODO: replace the fee of zero with a meaningful value
                Transfer(TransferAccount, interests, 0, date, "Transfer interests");
            }
        }
コード例 #8
0
 public SavingsOperationForm(ISavingsContract pSaving, OSavingsOperation pDirections)
 {
     InitializeComponent();
     _bookingDirection = pDirections;
     _saving           = pSaving;
     SwitchBookingDirection();
     Initialize();
 }
コード例 #9
0
 public SavingsOperationForm(ISavingsContract pSaving, OSavingsOperation pDirections)
 {
     InitializeComponent();
     _bookingDirection = pDirections;
     _saving = pSaving;
     SwitchBookingDirection();
     Initialize();
 }
コード例 #10
0
        public Account GetAccountByNumber(string pNumber, int pCurrencyId, ISavingsContract pSavingsContract, OBookingDirections pBookingDirection)
        {
            if (_accountingRules != null)
            {
                var specificAccount = _accountingRules.GetSpecificAccount(pNumber, pSavingsContract, pBookingDirection);
                if (specificAccount != null)
                    pNumber = specificAccount.Number;
            }

            return _getAccountByNumber(pNumber, pCurrencyId);
        }
コード例 #11
0
        public SavingsOperationForm(ISavingsContract pSaving, OSavingsOperation pDirections)
        {
            InitializeComponent();
            _bookingDirection = pDirections;
            _saving           = pSaving;
            SwitchBookingDirection();
            Initialize();

            dtpDate.Format       = DateTimePickerFormat.Custom;
            dtpDate.CustomFormat = ApplicationSettings.GetInstance("").SHORT_DATE_FORMAT;
        }
コード例 #12
0
        public Account GetAccountByNumber(string pNumber, int pCurrencyId, ISavingsContract pSavingsContract, OBookingDirections pBookingDirection)
        {
            //if (_accountingRules != null)
            //{
            //    var specificAccount = _accountingRules.GetSpecificAccount(pNumber, pSavingsContract, pBookingDirection);
            //    if (specificAccount != null)
            //        pNumber = specificAccount.Number;
            //}

            return(_getAccountByNumber(pNumber, pCurrencyId));
        }
コード例 #13
0
        public SavingsOperationForm(ISavingsContract pSaving, OSavingsOperation pDirections)
        {
            InitializeComponent();
            _bookingDirection = pDirections;
            _saving = pSaving;
            SwitchBookingDirection();
            Initialize();

            dtpDate.Format = DateTimePickerFormat.Custom;
            dtpDate.CustomFormat = ApplicationSettings.GetInstance("").SHORT_DATE_FORMAT;
        }
コード例 #14
0
 public PostingInterestsStrategy(ISavingsContract pSaving, User pUser, int pWeekEndDay2)
 {
     if (((SavingBookContract)pSaving).Product.InterestFrequency == OSavingInterestFrequency.EndOfYear)
         _ipi = new Posting.EndOfYear(pSaving, pUser);
     else if (((SavingBookContract)pSaving).Product.InterestFrequency == OSavingInterestFrequency.EndOfMonth)
         _ipi = new Posting.EndOfMonth((SavingBookContract)pSaving, pUser);
     else if (((SavingBookContract)pSaving).Product.InterestFrequency == OSavingInterestFrequency.EndOfWeek)
         _ipi = new Posting.EndOfWeek((SavingBookContract)pSaving, pUser, pWeekEndDay2);
     else if (((SavingBookContract)pSaving).Product.InterestFrequency == OSavingInterestFrequency.EndOfDay ||
                ((SavingBookContract)pSaving).UseTermDeposit
                 )
         _ipi = new Posting.PostingMethods((SavingBookContract)pSaving, pUser);
 }
コード例 #15
0
ファイル: SavingsContract.cs プロジェクト: logiciells/opencbs
        public virtual List <SavingEvent> Transfer(ISavingsContract to, OCurrency amount, OCurrency fee, DateTime date, string description)
        {
            List <SavingEvent> events = new List <SavingEvent>(3);

            events.Add(DebitTransfer(to, amount, fee, date, description));
            events.Add(to.CreditTransfer(this, amount, date, description));
            if (GetBalance() < 0)
            {
                SavingOverdraftFeeEvent e = ChargeOverdraftFee(date, User.CurrentUser);
                events.Add(e);
            }
            return(events);
        }
コード例 #16
0
 public CalculateInterestsStrategy(ISavingsContract pSaving, User pUser, int pWeekEndDay2)
 {
     if (((SavingBookContract)pSaving).Product.InterestBase == OSavingInterestBase.Daily)
         _ici = new Accrual.Daily(pSaving, pUser);
     else if (((SavingBookContract)pSaving).Product.InterestBase == OSavingInterestBase.Monthly)
     {
         if (((SavingBookContract)pSaving).Product.CalculAmountBase == OSavingCalculAmountBase.MinimalAmount)
             _ici = new Accrual.MinimalAmount.Monthly((SavingBookContract)pSaving, pUser);
     }
     else if (((SavingBookContract)pSaving).Product.InterestBase == OSavingInterestBase.Weekly)
     {
         if (((SavingBookContract)pSaving).Product.CalculAmountBase == OSavingCalculAmountBase.MinimalAmount)
             _ici = new Accrual.MinimalAmount.Weekly((SavingBookContract)pSaving, pUser, pWeekEndDay2);
     }
 }
コード例 #17
0
        private void btSearchContract_Click(object sender, EventArgs e)
        {
            SearchCreditContractForm searchCreditContractForm = SearchCreditContractForm.GetInstance(null);

            searchCreditContractForm.BringToFront();
            searchCreditContractForm.WindowState = FormWindowState.Normal;
            if (searchCreditContractForm.ShowForSearchSavingsContractForTransfer("") == DialogResult.OK)
            {
                SavingSearchResult saving = searchCreditContractForm.SelectedSavingContract;
                lblClientName.Text   = saving.ClientName;
                tbTargetAccount.Text = saving.ContractCode;

                _savingTarget          = ServicesProvider.GetInstance().GetAccountServices().GetSaving(saving.Id);
                lblInterBranch.Visible = !IsNormalTransfer();
                LoadTransferFee();
            }
        }
コード例 #18
0
 public PostingInterestsStrategy(ISavingsContract pSaving, User pUser, int pWeekEndDay2)
 {
     if (pSaving is Saving)
     {
         if (((Saving)pSaving).Product.InterestFrequency == OSavingInterestFrequency.EndOfYear)
             _ipi = new Posting.EndOfYear(pSaving, pUser);
         else if (((Saving)pSaving).Product.InterestFrequency == OSavingInterestFrequency.EndOfMonth)
             _ipi = new Posting.EndOfMonth((Saving)pSaving, pUser);
         else if (((Saving)pSaving).Product.InterestFrequency == OSavingInterestFrequency.EndOfWeek)
             _ipi = new Posting.EndOfWeek((Saving)pSaving, pUser, pWeekEndDay2);
         else if (((Saving)pSaving).Product.InterestFrequency == OSavingInterestFrequency.EndOfDay)
             _ipi = new Posting.EndOfDay((Saving)pSaving, pUser);
     }
     else if (pSaving is SavingDeposit)
     {
         _ipi = new Posting.Maturity((SavingDeposit)pSaving, pUser);
     }
 }
コード例 #19
0
ファイル: SavingsContract.cs プロジェクト: logiciells/opencbs
        public SavingCreditTransferEvent CreditTransfer(OCurrency pAmount, ISavingsContract pDebitAccount, DateTime pDate, string pDescription, User pUser)
        {
            SavingCreditTransferEvent transferEvent = new SavingCreditTransferEvent
            {
                Amount              = pAmount,
                Date                = pDate,
                Description         = pDescription,
                User                = pUser,
                Fee                 = 0,
                Cancelable          = false,
                RelatedContractCode = pDebitAccount.Code,
                ProductType         = Product.GetType(),
                ContracId           = Id
            };

            Events.Add(transferEvent);

            return(transferEvent);
        }
コード例 #20
0
ファイル: SavingsContract.cs プロジェクト: logiciells/opencbs
        public virtual List <SavingEvent> DebitTransfer(OCurrency pAmount, ISavingsContract pCreditAccount, DateTime pDate, string pDescription, User pUser, bool pIsDesactivateFees)
        {
            List <SavingEvent>       events        = new List <SavingEvent>();
            SavingDebitTransferEvent transferEvent = new SavingDebitTransferEvent
            {
                Amount              = pAmount,
                Date                = pDate,
                Description         = pDescription,
                User                = pUser,
                Cancelable          = false,
                RelatedContractCode = pCreditAccount.Code,
                ProductType         = Product.GetType(),
                ContracId           = Id
            };

            events.Add(transferEvent);
            Events.Add(transferEvent);

            return(events);
        }
コード例 #21
0
 public PostingInterestsStrategy(ISavingsContract pSaving, User pUser, int pWeekEndDay2)
 {
     if (((SavingBookContract)pSaving).Product.InterestFrequency == OSavingInterestFrequency.EndOfYear)
     {
         _ipi = new Posting.EndOfYear(pSaving, pUser);
     }
     else if (((SavingBookContract)pSaving).Product.InterestFrequency == OSavingInterestFrequency.EndOfMonth)
     {
         _ipi = new Posting.EndOfMonth((SavingBookContract)pSaving, pUser);
     }
     else if (((SavingBookContract)pSaving).Product.InterestFrequency == OSavingInterestFrequency.EndOfWeek)
     {
         _ipi = new Posting.EndOfWeek((SavingBookContract)pSaving, pUser, pWeekEndDay2);
     }
     else if (((SavingBookContract)pSaving).Product.InterestFrequency == OSavingInterestFrequency.EndOfDay ||
              ((SavingBookContract)pSaving).UseTermDeposit
              )
     {
         _ipi = new Posting.PostingMethods((SavingBookContract)pSaving, pUser);
     }
 }
コード例 #22
0
 public void Setup()
 {
     _repaymentService.Settings.Loan = _loan.Copy();
     _view.PrincipalMax     = _loan.OLB;
     _view.RepaymentScripts = _repaymentService.GetAllRepaymentScriptsWithTypes();
     _view.PaymentMethods   = ServicesProvider.GetInstance().GetPaymentMethodServices().GetAllPaymentMethods();
     _view.Title            = _loan.Project.Client.Name + " " + _loan.Code;
     _repaymentService.Settings.ScriptName = _view.SelectedScript;
     _balanceString = _translationService.Translate("Available balance: ");
     if (!ApplicationSettings.GetInstance(User.CurrentUser.Md5).UseMandatorySavingAccount)
     {
         return;
     }
     _saving =
         (from item in _loan.Project.Client.Savings where item.Product.Code == "default" select item)
         .FirstOrDefault();
     if (_saving != null)
     {
         _saving = ServicesProvider.GetInstance().GetSavingServices().GetSaving(_saving.Id);
     }
 }
コード例 #23
0
        public int SendNotification(SavingEvent savingEvent, ISavingsContract savingsContract, string savingsOperation)
        {
            if (person == null)
            {
                throw new ArgumentNullException("client");
            }

            var messageTemplate = GetLocalizedActiveMessageTemplate("Client.AccountOperationNotification");

            if (messageTemplate == null)
            {
                return(0);
            }

            //tokens
            var tokens = new List <Token>();

            MessageTokenProvider.AddPersonTokens(tokens, person);
            MessageTokenProvider.AddSavingEventTokens(tokens, savingEvent, savingsContract);



            //Add messaging operation code
            tokens.Add(new Token("Messaging.OperationCode", savingsOperation));

            tokens.Add(new Token("Messaging.CurrentDate", DateTime.Now.ToShortDateString()));
            tokens.Add(new Token("Messaging.CurrentTime", DateTime.Now.ToShortTimeString()));

            //event notification
            EventPublisher.MessageTokensAdded(messageTemplate, tokens);

            var emailAccount = GetEmailAccountOfMessageTemplate(messageTemplate);
            var toEmail      = person.Email;
            var toName       = person.FullName;

            return(SendNotification(messageTemplate, emailAccount, tokens,
                                    toEmail, toName, null, null, savingsContract));
        }
コード例 #24
0
        private void btnOK_Click(object sender, EventArgs e)
        {
            foreach (ListViewItem item in lvContracts.Items)
            {
                if (!item.Checked)
                {
                    continue;
                }
                if (item == _itemTotal)
                {
                    continue;
                }

                ISavingsContract saving = item.Tag as ISavingsContract;
                OCurrency        amount = (OCurrency)item.SubItems[idxAmount].Tag;


//                ServicesProvider.GetInstance().GetSavingServices().Deposit(saving, TimeProvider.Today, amount,
//                    "", User.CurrentUser, false, OPaymentMethods.Cash, null, null);
                ServicesProvider.GetInstance().GetSavingServices().Deposit(saving, TimeProvider.Now, amount,
                                                                           "", User.CurrentUser, false, OSavingsMethods.Cash, null, null);
            }
        }
コード例 #25
0
ファイル: ClientForm.cs プロジェクト: BillTheBest/opencbs
        private void DisplaySavingLoans(ISavingsContract saving)
        {
            if (saving is SavingBookContract)
            {
                if (((SavingBookContract)saving).Loans != null)
                {
                    if (((SavingBookContract)saving).Loans.Count > 0)
                    {
                        olvColumnStatus.AspectToStringConverter = delegate(object value)
                        {
                            if (value.ToString().Length > 0)
                            {
                                string status = GetString(value.ToString() + ".Text");
                                return status;
                            }
                            return null;
                        };

                        olvColumnAmount.AspectToStringConverter = delegate(object value)
                                                                      {
                                                                          if (value.ToString().Length > 0)
                                                                          {
                                                                              OCurrency amount = (OCurrency)value;
                                                                              return amount.GetFormatedValue(true);
                                                                          }
                                                                          return null;
                                                                      };

                        olvColumnStratDate.AspectToStringConverter = delegate(object value)
                                                                         {
                                                                             if (value.ToString().Length > 0)
                                                                             {
                                                                                 return
                                                                                     ((DateTime)value).
                                                                                         ToShortDateString();
                                                                             }
                                                                             return null;
                                                                         };

                        olvColumnCreationDate.AspectToStringConverter = delegate(object value)
                                                                            {
                                                                                if (value.ToString().Length > 0)
                                                                                {
                                                                                    return
                                                                                        ((DateTime)value).
                                                                                            ToShortDateString();
                                                                                }
                                                                                return null;
                                                                            };

                        olvColumnCloseDate.AspectToStringConverter = delegate(object value)
                                                                         {
                                                                             if (value.ToString().Length > 0)
                                                                             {
                                                                                 return
                                                                                     ((DateTime)value).
                                                                                         ToShortDateString();
                                                                             }
                                                                             return null;
                                                                         };
                        olvLoans.SetObjects(((SavingBookContract)saving).Loans);
                        tabControlSavingsDetails.SelectedIndex = 0;
                        return;
                    }
                }
            }

            //tabcSavingsDettails.TabPages.Remove(tabPageLoans);
        }
コード例 #26
0
ファイル: ClientForm.cs プロジェクト: BillTheBest/opencbs
        private void DisplaySaving(ISavingsContract saving)
        {
            saving = SavingServices.GetSaving(saving.Id);

            ((SavingBookContract)saving).Loans = SavingServices.SelectLoansBySavingsId(saving.Id);

            if (!tabControlPerson.TabPages.Contains(tabPageContracts))
            {
                tabControlPerson.TabPages.Add(tabPageContracts);
                panelLoansContracts.Controls.Add(pnlLoans);
            }

            tabControlPerson.TabPages.Remove(tabPageSavingDetails);
            tabControlPerson.TabPages.Add(tabPageSavingDetails);

            _saving = (SavingBookContract)saving;
            DisplaySavingProduct(_saving.Product);
            InitializeTabPageTermDeposit();
            nudDownInterestRate.Enabled = false;
            nudDownInitialAmount.Enabled = false;
            nudWithdrawFees.Enabled = false;
            nudEntryFees.Enabled = false;
            nudTransferFees.Enabled = false;
            nudIbtFee.Enabled = false;
            nudDepositFees.Enabled = false;
            nudChequeDepositFees.Enabled = false;
            nudCloseFees.Enabled = false;
            nudManagementFees.Enabled = false;
            nudOverdraftFees.Enabled = false;
            nudAgioFees.Enabled = false;
            nudReopenFees.Enabled = false;
            btSavingsUpdate.Visible = false;
            nudNumberOfPeriods.Enabled = false;
            btSearchContract2.Enabled = false;
            cmbRollover2.Enabled = false;
            cmbSavingsOfficer.Enabled = false;
            cmbSavingsOfficer.Items.Add(User.CurrentUser);
            foreach (User subordinate in User.CurrentUser.Subordinates)
            {
                cmbSavingsOfficer.Items.Add(subordinate);
            }
            int index = -1;
            for (int i = 0; i < cmbSavingsOfficer.Items.Count; i++)
            {
                User u = (User)cmbSavingsOfficer.Items[i];
                if (u.Id != saving.SavingsOfficer.Id) continue;

                index = i;
                break;
            }
            cmbSavingsOfficer.SelectedIndex = index;
            tabControlPerson.SelectedTab = tabPageSavingDetails;
            Text = string.Format("{0} - {1}", _title, _saving.Code);

            groupBoxSaving.Name += string.Format(" {0}", _saving.Product.Name);
            groupBoxSaving.Text = string.Format("{0} : {1}",
                MultiLanguageStrings.GetString(Ressource.ClientForm,
                _saving is SavingBookContract ? "SavingsBook.Text" : "CompulsorySavings.Text"),
                MultiLanguageStrings.GetString(Ressource.ClientForm, "Savings" + _saving.Status + ".Text"));

            switch (_saving.Status)
            {
                case OSavingsStatus.Pending:
                    {
                        groupBoxSaving.ForeColor = Color.FromArgb(246, 137, 56);
                        pnlSavingsButtons.Enabled = false;
                        buttonFirstDeposit.Visible = true;
                        buttonCloseSaving.Visible = false;
                        buttonReopenSaving.Visible = false;
                        break;
                    }
                case OSavingsStatus.Active:
                    {
                        groupBoxSaving.ForeColor = Color.FromArgb(61, 153, 57);
                        pnlSavingsButtons.Enabled = true;
                        buttonFirstDeposit.Visible = false;
                        buttonCloseSaving.Visible = true;
                        buttonReopenSaving.Visible = false;
                        break;
                    }
                case OSavingsStatus.Closed:
                    {
                        groupBoxSaving.ForeColor = Color.Red;
                        pnlSavingsButtons.Enabled = true;
                        buttonSavingsOperations.Enabled = false;
                        buttonFirstDeposit.Visible = false;
                        buttonCloseSaving.Visible = false;
                        buttonReopenSaving.Visible = true;
                        break;
                    }
            }

            tBSavingCode.Text = _saving.Code;

            DisplaySavingEvent(_saving);
            DisplaySavingLoans(_saving);

            buttonSaveSaving.Visible = false;

            InitSavingsBookPrintButton();

            if (saving != null && saving.Id > 0)
            {
                //InitializeCustomizableFields(OCustomizableFieldEntities.Savings, saving.Id, true);
                //InitialDoclistSaving();
            }
            else
            {
                //InitializeCustomizableFields(OCustomizableFieldEntities.Savings, null, false);
                //dlcSaving.Clear();
            }

            LoadSavingsExtensions();
        }
コード例 #27
0
ファイル: SavingsContract.cs プロジェクト: TalasZh/opencbs
        public virtual List<SavingEvent> DebitTransfer(OCurrency pAmount, ISavingsContract pCreditAccount, DateTime pDate, string pDescription, User pUser, bool pIsDesactivateFees)
        {
            List<SavingEvent> events = new List<SavingEvent>();
            SavingDebitTransferEvent transferEvent = new SavingDebitTransferEvent
            {
                Amount = pAmount,
                Date = pDate,
                Description = pDescription,
                User = pUser,
                Cancelable = false,
                RelatedContractCode = pCreditAccount.Code,
                ProductType = Product.GetType(),
                ContracId = Id
            };
            events.Add(transferEvent);
            Events.Add(transferEvent);

            return events;
        }
コード例 #28
0
ファイル: SavingsContract.cs プロジェクト: TalasZh/opencbs
        public SavingCreditTransferEvent CreditTransfer(OCurrency pAmount, ISavingsContract pDebitAccount, DateTime pDate, string pDescription, User pUser)
        {
            SavingCreditTransferEvent transferEvent = new SavingCreditTransferEvent
            {
                Amount = pAmount,
                Date = pDate,
                Description = pDescription,
                User = pUser,
                Fee = 0,
                Cancelable = false,
                RelatedContractCode = pDebitAccount.Code,
                ProductType = Product.GetType(),
                ContracId = Id
            };
            Events.Add(transferEvent);

            return transferEvent;
        }
コード例 #29
0
ファイル: SavingManager.cs プロジェクト: TalasZh/opencbs
        public int Add(ISavingsContract savings, Client client, SqlTransaction sqlTransac)
        {
            const string sqlText = @"INSERT INTO [SavingContracts]
                (
                    [product_id],
                    [user_id],
                    [code],
                    [status],
                    [tiers_id],
                    [creation_date],
                    [interest_rate],
                    [closed_date],
                    [savings_officer_id],
                    [initial_amount],
                    [entry_fees],
                    [nsg_id]
                )
                VALUES
                (
                    @product_id,
                    @user_id,
                    @code,
                    @status,
                    @tiers_id,
                    @creation_date,
                    @interest_rate,
                    @closedDate,
                    @savings_officer_id,
                    @initial_amount,
                    @entry_fees,
                    @nsg_id
                )
                SELECT CONVERT(int, SCOPE_IDENTITY())";

            using (OpenCbsCommand cmd = new OpenCbsCommand(sqlText, sqlTransac.Connection, sqlTransac))
            {
                cmd.AddParam("@product_id",  savings.Product.Id);
                cmd.AddParam("@user_id", savings.User.Id);
                cmd.AddParam("@code", savings.Code);
                cmd.AddParam("@status",  (int)savings.Status);
                cmd.AddParam("@tiers_id", client.Id);
                cmd.AddParam("@creation_date", savings.CreationDate);
                cmd.AddParam("@interest_rate", savings.InterestRate);
                cmd.AddParam("@closedDate",  savings.ClosedDate);
                cmd.AddParam("@savings_officer_id", savings.SavingsOfficer.Id);
                cmd.AddParam("@initial_amount",  savings.InitialAmount);
                cmd.AddParam("@entry_fees", savings.EntryFees);
                cmd.AddParam("@nsg_id",  savings.NsgID);

                savings.Id = int.Parse(cmd.ExecuteScalar().ToString());
            }

            AddSavingsBookContract((SavingBookContract)savings, sqlTransac);

            return savings.Id;
        }
コード例 #30
0
ファイル: EndOfYear.cs プロジェクト: weatherdata/opencbs
 public EndOfYear(ISavingsContract pSaving, User pUser)
 {
     _saving = pSaving;
     _user   = pUser;
 }
コード例 #31
0
        private void btnSave_Click(object sender, EventArgs e)
        {
            if (!_nsgForm.Save())
            {
                return;
            }

            bool             isError = false;
            ISavingsContract saving  = null;

            try
            {
                foreach (ListViewItem item in lvMembers.Items)
                {
                    if (item == _itemTotal)
                    {
                        continue;
                    }
                    if (!item.Checked)
                    {
                        continue;
                    }
                    var     member = item.Tag as VillageMember;
                    IClient client = member.Tiers;

                    OCurrency initialAmount = (OCurrency)item.SubItems[idxInitialAmount].Tag;
                    double    interestRate  = (double)item.SubItems[idxInterestRate].Tag;
                    OCurrency entryFees     = (OCurrency)item.SubItems[idxEntryFees].Tag;

                    if (_product is SavingsBookProduct)
                    {
                        SavingsBookProduct sbp               = (SavingsBookProduct)_product;
                        decimal            withdrawFees      = (decimal)item.SubItems[idxWithdrawFees].Tag;
                        decimal            transferFees      = (decimal)item.SubItems[idxTransferFees].Tag;
                        decimal            ibtFees           = Convert.ToDecimal(item.SubItems[idxIbtFees].Tag);
                        decimal            depositFees       = (decimal)item.SubItems[idxDepositFees].Tag;
                        decimal            chequeDepositFees = (decimal)item.SubItems[idxChequeDepositFees].Tag;
                        decimal            closeFees         = (decimal)item.SubItems[idxCloseFees].Tag;
                        decimal            managementFees    = (decimal)item.SubItems[idxManagementFees].Tag;
                        decimal            overdraftFees     = (decimal)item.SubItems[idxOverdraftFees].Tag;
                        decimal            agioFees          = (decimal)item.SubItems[idxAgioFees].Tag;
                        decimal            reopenFees        = (decimal)item.SubItems[idxReopenFees].Tag;

                        saving = new SavingBookContract(ServicesProvider.GetInstance().GetGeneralSettings(),
                                                        User.CurrentUser, TimeProvider.Today, sbp, client)
                        {
                            InterestRate = interestRate / 100
                        };
                        SavingBookContract s = (SavingBookContract)saving;

                        if (sbp.WithdrawFeesType == OSavingsFeesType.Flat)
                        {
                            s.FlatWithdrawFees = withdrawFees;
                        }
                        else
                        {
                            s.RateWithdrawFees = (double)withdrawFees / 100;
                        }

                        if (sbp.TransferFeesType == OSavingsFeesType.Flat)
                        {
                            s.FlatTransferFees = transferFees;
                        }
                        else
                        {
                            s.RateTransferFees = (double)transferFees / 100;
                        }

                        if (sbp.InterBranchTransferFee.IsFlat)
                        {
                            s.FlatInterBranchTransferFee = ibtFees;
                        }
                        else
                        {
                            s.RateInterBranchTransferFee = Convert.ToDouble(ibtFees);
                        }

                        s.DepositFees       = depositFees;
                        s.ChequeDepositFees = chequeDepositFees;
                        s.CloseFees         = closeFees;
                        s.ManagementFees    = managementFees;
                        s.OverdraftFees     = overdraftFees;
                        s.AgioFees          = (double)agioFees / 100;
                        s.ReopenFees        = reopenFees;
                    }

                    saving.SavingsOfficer = _village.LoanOfficer;
                    saving.InitialAmount  = initialAmount;
                    saving.EntryFees      = entryFees;
                    saving.NsgID          = _village.Id;
                    saving.Id             = ServicesProvider.GetInstance().GetSavingServices().SaveContract(saving, (Client)member.Tiers);
                    saving = ServicesProvider.GetInstance().GetSavingServices().GetSaving(saving.Id);

                    ServicesProvider.GetInstance().GetSavingServices().FirstDeposit(saving, initialAmount, TimeProvider.Now, entryFees,
                                                                                    User.CurrentUser, Teller.CurrentTeller);
                    ServicesProvider.GetInstance().GetSavingServices().UpdateInitialData(saving.Id, initialAmount, entryFees);

                    saving = ServicesProvider.GetInstance().GetSavingServices().GetSaving(saving.Id);
                    ((Client)member.Tiers).AddSaving(saving);
                }
            }
            catch (Exception ex)
            {
                isError = true;
                new frmShowError(CustomExceptionHandler.ShowExceptionText(ex)).ShowDialog();
            }
            finally
            {
                InitializeControls();
            }

            if (!isError)
            {
                DialogResult = DialogResult.OK;
                Close();
            }
        }
コード例 #32
0
 public void FireEvent(SavingEvent e, ISavingsContract pSaving, SqlTransaction sqlTransac)
 {
     e.IsFired = true;
     SavingEventOrigination(e, pSaving, sqlTransac);
 }
コード例 #33
0
ファイル: SavingBookContract.cs プロジェクト: aelhadi/opencbs
 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);
 }
コード例 #34
0
 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);
 }
コード例 #35
0
ファイル: SavingServices.cs プロジェクト: TalasZh/opencbs
        public void SpecialOperation(ISavingsContract saving, DateTime pDate, OCurrency amount,
              string description, User pUser, OSavingsMethods savingsMethod, bool isCredit, Booking booking)
        {
            if (booking == null)
               throw new OpenCbsBookingException(OpenCbsBookingExceptionsEnum.BookingIsEmpty);

               booking.Amount = amount;
               booking.Description = description;
               booking.ExchangeRate = 1;
               booking.Date = TimeProvider.Now;
               booking.Currency = saving.Product.Currency;
               booking.User = User.CurrentUser;

               SavingEvent e;

               if (isCredit)
               {
               e = SpecialOperationCredit(saving, pDate, amount, description,
                                   User.CurrentUser, savingsMethod);
               }
               else
               {
               e = SpecialOperationDebit(saving, pDate, amount, description,
                                   User.CurrentUser, savingsMethod);
               }

               booking.EventId = e.Id;
               ServicesProvider.GetInstance().GetAccountingServices().BookManualEntry(booking, User.CurrentUser);
        }
コード例 #36
0
ファイル: SavingServices.cs プロジェクト: TalasZh/opencbs
        public ISavingsContract SimulateCloseAccount(ISavingsContract saving, DateTime date, User user, bool isDesactivateFees, Teller teller)
        {
            ISavingsContract savingSimulation = (ISavingsContract) saving.Clone();
            savingSimulation.SimulateClose(date, user, "Close savings contract", isDesactivateFees, teller);

            return savingSimulation;
        }
コード例 #37
0
 public void AddSaving(ISavingsContract pSavings)
 {
     pSavings.Client = this;
     _savings.Add(pSavings);
 }
コード例 #38
0
 private void SavingEventOrigination(SavingEvent savingEvent, ISavingsContract savingsContract, SqlTransaction sqlTransac)
 {
     _savingEventManagement.Add(savingEvent, savingsContract.Id, sqlTransac);
 }
コード例 #39
0
 public void Save(ISavingsContract savings, SqlTransaction tx)
 {
 }
コード例 #40
0
ファイル: EndOfYear.cs プロジェクト: aelhadi/opencbs
 public EndOfYear(ISavingsContract pSaving, User pUser)
 {
     _saving = pSaving;
     _user = pUser;
 }
コード例 #41
0
        public TabPage[] GetTabPages(ISavingsContract savings)
        {
            var tabPage = new TabPage("TEST SAVINGS");

            return(new[] { tabPage });
        }
コード例 #42
0
ファイル: SavingManager.cs プロジェクト: TalasZh/opencbs
 public int Add(ISavingsContract savings, Client client)
 {
     using (SqlConnection connection = GetConnection())
     using (SqlTransaction transaction = connection.BeginTransaction())
         try
         {
             int result = Add(savings, client, transaction);
             transaction.Commit();
             return result;
         }
         catch (Exception)
         {
             transaction.Rollback();
             throw;
         }
 }
コード例 #43
0
        public Account GetSpecificAccount(string pNumber, ISavingsContract pSavings, OBookingDirections pBookingDirection)
        {
            var query = GetContractAccountingRules();

            query = query.Where(item => item.DebitAccount.Number == pNumber && item.Deleted == false).ToList();
            if (query.Count() == 0)
            {
                return(null);
            }

            query = query.Where(item => item.ProductType == OProductTypes.All ||
                                (item.ProductType == OProductTypes.Saving && (item.SavingProduct == null || item.SavingProduct.Id == pSavings.Product.Id))).ToList();

            if (query.Count == 0)
            {
                return(null);
            }

            query = query.Where(item => item.BookingDirection == OBookingDirections.Both ||
                                item.BookingDirection == pBookingDirection).ToList();

            if (query.Count == 0)
            {
                return(null);
            }

            OClientTypes clientType;

            if (pSavings.Client is Person)
            {
                clientType = OClientTypes.Person;
            }
            else if (pSavings.Client is Group)
            {
                clientType = OClientTypes.Group;
            }
            else if (pSavings.Client is Corporate)
            {
                clientType = OClientTypes.Corporate;
            }
            else
            {
                clientType = OClientTypes.Village;
            }

            query = query.Where(item => item.ClientType == OClientTypes.All ||
                                item.ClientType == clientType).ToList();

            if (query.Count == 0)
            {
                return(null);
            }

            if (pSavings.Client is Person)
            {
                query = query.Where(item => item.EconomicActivity == null ||
                                    item.EconomicActivity.Id == ((Person)pSavings.Client).Activity.Id).ToList();
            }
            else if (pSavings.Client is Corporate)
            {
                query = query.Where(item => item.EconomicActivity == null ||
                                    item.EconomicActivity.Id == ((Corporate)pSavings.Client).Activity.Id).ToList();
            }
            else
            {
                query = query.Where(item => item.EconomicActivity == null).ToList();
            }

            if (query.Count == 0)
            {
                return(null);
            }

            return(query[0].CreditAccount);
        }
コード例 #44
0
ファイル: SavingsContract.cs プロジェクト: TalasZh/opencbs
 public virtual SavingEvent DebitTransfer(ISavingsContract to, OCurrency amount, OCurrency fee, DateTime date, string description)
 {
     SavingTransferEvent e;
     bool ib = Branch.Id != to.Branch.Id; // inter-branch
     if (ib)
     {
         e = new SavingDebitInterBranchTransferEvent();
     }
     else
     {
         e = new SavingDebitTransferEvent();
     }
     e.Description = ib ? "Inter-branch transfer" : "Transfer";
     e.RelatedContractCode = to.Code;
     e.Amount = amount;
     e.Fee = fee;
     e.Date = date;
     e.User = User.CurrentUser;
     e.Description = description;
     e.ProductType = Product.GetType();
     e.Target = this;
     Events.Add(e);
     return e;
 }
コード例 #45
0
        protected int SendNotification(MessageTemplate messageTemplate, EmailAccount emailAccount,
                                       IEnumerable <Token> tokens,
                                       string toEmailAddress,
                                       string toName,
                                       string replyTo     = null,
                                       string replyToName = null, ISavingsContract savingsContract = null)
        {
            #region Email routine
            if (person.EmailDelivery.HasValue && person.EmailDelivery.Value &&
                messageTemplate.SendEmail.HasValue && messageTemplate.SendEmail.Value)
            {
                var bcc     = messageTemplate.BccEmailAddresses;
                var subject = messageTemplate.Subject;
                var body    = messageTemplate.EmailBody;

                // Replace subject and body tokens
                var subjectReplaced = Tokenizer.Replace(subject, tokens, false);
                var bodyReplaced    = Tokenizer.Replace(body, tokens, true);

                var email = new QueuedEmail()
                {
                    Priority       = 5,
                    From           = emailAccount.Email,
                    FromName       = emailAccount.DisplayName,
                    To             = toEmailAddress,
                    ToName         = toName,
                    CC             = string.Empty,
                    SentTries      = 0,
                    Bcc            = bcc,
                    ReplyTo        = replyTo,
                    ReplyToName    = replyToName,
                    Subject        = subjectReplaced,
                    Body           = bodyReplaced,
                    CreatedOnUtc   = DateTime.UtcNow,
                    EmailAccountId = emailAccount.Id
                };

                _queuedEmailService.Add(email);
                //return email.Id;
            }
            #endregion

            #region SMS routine
            if (person.SmsDelivery.HasValue && person.SmsDelivery.Value &&
                messageTemplate.SendSMS.HasValue && messageTemplate.SendSMS.Value)
            {
                var message         = messageTemplate.Body;
                var messageReplaced = Tokenizer.Replace(message, tokens, false);

                var sms = new QueuedSMS()
                {
                    From         = Convert.ToString(ServicesProvider.GetInstance().GetGeneralSettings().GetSpecificParameter(OGeneralSettings.SMS_FROM_NUMBER)),
                    Recipient    = person.PersonalPhone,
                    RecipientId  = person.Id,
                    ContractId   = savingsContract != null ? savingsContract.Id : 0,
                    Charged      = false,
                    Message      = messageReplaced,
                    SentTries    = 0,
                    CreatedOnUtc = DateTime.UtcNow,
                };

                _queuedSMSService.Add(sms);
                //return sms.Id;
            }
            #endregion
            return(0);
        }
コード例 #46
0
ファイル: SavingsContract.cs プロジェクト: TalasZh/opencbs
 public virtual List<SavingEvent> Transfer(ISavingsContract to, OCurrency amount, OCurrency fee, DateTime date, string description)
 {
     List<SavingEvent> events = new List<SavingEvent>(3);
     events.Add(DebitTransfer(to, amount, fee, date, description));
     events.Add(to.CreditTransfer(this, amount, date, description));
     if (GetBalance() < 0)
     {
         SavingOverdraftFeeEvent e = ChargeOverdraftFee(date, User.CurrentUser);
         events.Add(e);
     }
     return events;
 }
コード例 #47
0
ファイル: Daily.cs プロジェクト: aelhadi/opencbs
 public Daily(ISavingsContract pSaving, User pUser)
 {
     _saving = pSaving;
     _user = pUser;
 }
コード例 #48
0
ファイル: ClientForm.cs プロジェクト: BillTheBest/opencbs
        private void DisplaySavingEvent(ISavingsContract pSaving)
        {
            btCancelLastSavingEvent.Enabled = false;

            if (pSaving.Id != 0)
            {
                nudDownInterestRate.Value = nudDownInterestRate.Minimum = nudDownInterestRate.Maximum = (decimal)pSaving.InterestRate * 100;
                nudDownInitialAmount.Value = nudDownInitialAmount.Minimum = nudDownInitialAmount.Maximum = pSaving.InitialAmount.Value;

                SavingBookContract s = (SavingBookContract)pSaving;
                nudEntryFees.Value = nudEntryFees.Minimum = nudEntryFees.Maximum = s.EntryFees.Value;

                nudWithdrawFees.Value = nudWithdrawFees.Minimum = nudWithdrawFees.Maximum = s.FlatWithdrawFees.HasValue ?
                    s.FlatWithdrawFees.Value : (decimal)s.RateWithdrawFees.Value * 100;

                nudTransferFees.Value = nudTransferFees.Minimum = nudTransferFees.Maximum = s.FlatTransferFees.HasValue ?
                    s.FlatTransferFees.Value : (decimal)s.RateTransferFees.Value * 100;

                nudIbtFee.Value = s.FlatInterBranchTransferFee.HasValue ? s.FlatInterBranchTransferFee.Value
                    : Convert.ToDecimal(s.RateInterBranchTransferFee.Value);
                nudIbtFee.Minimum = nudIbtFee.Maximum = nudIbtFee.Value;

                nudDepositFees.Value = nudDepositFees.Minimum = nudDepositFees.Maximum = ((SavingBookContract)pSaving).DepositFees.Value;
                nudChequeDepositFees.Value = nudChequeDepositFees.Minimum = nudChequeDepositFees.Maximum = ((SavingBookContract)pSaving).ChequeDepositFees.Value;
                nudCloseFees.Value = nudCloseFees.Minimum = nudCloseFees.Maximum = ((SavingBookContract)pSaving).CloseFees.Value;
                nudManagementFees.Value = nudManagementFees.Minimum = nudManagementFees.Maximum = ((SavingBookContract)pSaving).ManagementFees.Value;
                nudOverdraftFees.Value = nudOverdraftFees.Minimum = nudOverdraftFees.Maximum = ((SavingBookContract)pSaving).OverdraftFees.Value;
                nudAgioFees.Value = nudAgioFees.Minimum = nudAgioFees.Maximum = (decimal)((SavingBookContract)pSaving).AgioFees.Value * 100;
                nudReopenFees.Value = nudReopenFees.Minimum = nudReopenFees.Maximum = ((SavingBookContract)pSaving).ReopenFees.Value;

            }

            lbSavingBalanceValue.Text = pSaving.GetFmtBalance(true);
            lbSavingAvBalanceValue.Text = pSaving.GetFmtAvailBalance(true);
            btCancelLastSavingEvent.Enabled = _saving.HasCancelableEvents();

            lvSavingEvent.Items.Clear();
            IEnumerable<SavingEvent> events = pSaving.Events.OrderBy(item => item.Date.Date);

            bool useCents = pSaving.Product.Currency.UseCents;
            foreach (SavingEvent e in events)
            {
                ListViewItem item = new ListViewItem(e.Date.ToString("dd/MM/yyyy HH:mm:ss"));
                item.SubItems.Add(e.Fee.GetFormatedValue(useCents));
                string amt = e.Amount.GetFormatedValue(useCents);
                item.SubItems.Add(e.IsDebit ? amt : string.Empty);
                item.SubItems.Add(e.IsDebit ? string.Empty : amt);
                item.SubItems.Add(e.ExtraInfo);
                item.SubItems.Add(e.Code);
                item.SubItems.Add(e.SavingsMethod.HasValue ? GetString("SavingsOperationForm", e.SavingsMethod + ".Text") : "-");
                item.SubItems.Add(e.User.Name);
                item.SubItems.Add(e.Description);
                item.SubItems.Add(e.CancelDate.HasValue ? e.CancelDate.Value.ToString("dd/MM/yyyy HH:mm:ss") : string.Empty);

                if (e.IsPending)
                {
                    item.BackColor = Color.Orange;
                    item.ForeColor = Color.White;
                }

                if (e.Deleted)
                {
                    item.BackColor = Color.FromArgb(188, 209, 199);
                    item.ForeColor = Color.White;
                }

                item.Tag = e;
                lvSavingEvent.Items.Add(item);
            }
        }
コード例 #49
0
ファイル: Daily.cs プロジェクト: etiennemottet/opencbs
 public Daily(ISavingsContract pSaving, User pUser)
 {
     _saving = pSaving;
     _user   = pUser;
 }
コード例 #50
0
ファイル: TestSavingsManager.cs プロジェクト: TalasZh/opencbs
        public void _compareSavings(ISavingsContract originalSaving, ISavingsContract retrievedSaving)
        {
            Assert.AreEqual(originalSaving.Id, retrievedSaving.Id);
            Assert.AreEqual(originalSaving.InterestRate, retrievedSaving.InterestRate);
            Assert.AreEqual(originalSaving.Product.Id, retrievedSaving.Product.Id);
            Assert.AreEqual(originalSaving.GetBalance(), retrievedSaving.GetBalance());
            Assert.AreEqual(originalSaving.Code, retrievedSaving.Code);
            Assert.AreEqual(originalSaving.CreationDate, retrievedSaving.CreationDate);
            Assert.AreEqual(originalSaving.Status, retrievedSaving.Status);

            Assert.AreEqual(((SavingBookContract)originalSaving).FlatWithdrawFees.HasValue, ((SavingBookContract)retrievedSaving).FlatWithdrawFees.HasValue);
            if (((SavingBookContract)originalSaving).FlatWithdrawFees.HasValue)
                Assert.AreEqual(((SavingBookContract)originalSaving).FlatWithdrawFees.Value, ((SavingBookContract)retrievedSaving).FlatWithdrawFees.Value);
            Assert.AreEqual(((SavingBookContract)originalSaving).RateWithdrawFees.HasValue, ((SavingBookContract)retrievedSaving).RateWithdrawFees.HasValue);
            if (((SavingBookContract)originalSaving).RateWithdrawFees.HasValue)
                Assert.AreEqual(((SavingBookContract)originalSaving).RateWithdrawFees.Value, ((SavingBookContract)retrievedSaving).RateWithdrawFees.Value);

            Assert.AreEqual(((SavingBookContract)originalSaving).FlatTransferFees.HasValue, ((SavingBookContract)retrievedSaving).FlatTransferFees.HasValue);
            if (((SavingBookContract)originalSaving).FlatTransferFees.HasValue)
                Assert.AreEqual(((SavingBookContract)originalSaving).FlatTransferFees.Value, ((SavingBookContract)retrievedSaving).FlatTransferFees.Value);
            Assert.AreEqual(((SavingBookContract)originalSaving).RateTransferFees.HasValue, ((SavingBookContract)retrievedSaving).RateTransferFees.HasValue);
            if (((SavingBookContract)originalSaving).RateTransferFees.HasValue)
                Assert.AreEqual(((SavingBookContract) originalSaving).RateTransferFees.Value,
                                ((SavingBookContract) retrievedSaving).RateTransferFees.Value);
        }
コード例 #51
0
 public void FireEvent(SavingEvent e, ISavingsContract pSaving, SqlTransaction sqlTransac)
 {
     e.IsFired = true;
     SavingEventOrigination(e, pSaving, sqlTransac);
 }
コード例 #52
0
ファイル: SavingServices.cs プロジェクト: TalasZh/opencbs
        public SavingDebitOperationEvent SpecialOperationDebit(ISavingsContract pSaving, DateTime pDate, OCurrency debitAmount,
                string pDescription, User pUser, OSavingsMethods savingsMethod)
        {
            using (SqlConnection conn = _savingManager.GetConnection())
              using (SqlTransaction sqlTransaction = conn.BeginTransaction())
              {
                  try
                  {
                      if (pSaving is SavingBookContract)
                      {
                          decimal vBalance = CheckVirtualBalance((SavingBookContract) pSaving, debitAmount);

                          if (vBalance > 0)
                          {
                              List<string> messages = new List<string>
                                                          {
                                                              ServicesHelper.ConvertDecimalToString(
                                                                  ((SavingBookContract) pSaving).GetBalance().Value),
                                                              ServicesHelper.ConvertDecimalToString(vBalance),
                                                              ((SavingBookContract) pSaving).Loans.Count.ToString(),
                                                              ServicesHelper.ConvertDecimalToString(
                                                                  ((SavingBookContract) pSaving).GetBalance().Value -
                                                                  vBalance)
                                                          };
                              throw new OpenCbsSavingException(
                                  OpenCbsSavingExceptionEnum.BalanceOnCurrentSavingAccountForTransfer, messages);
                          }
                      }

                      //// Create a fake Saving object
                      ISavingsContract savingSimulation = (ISavingsContract) pSaving.Clone();
                      // Do deposit to the fake Saving object
                      savingSimulation.SpecialOperationDebit(debitAmount, pDate, pDescription, pUser);
                      // Check balance simulation
                      if (!IsSavingBalanceCorrect(savingSimulation))
                          throw new OpenCbsSavingException(OpenCbsSavingExceptionEnum.BalanceIsInvalid);

                      SavingDebitOperationEvent events = pSaving.SpecialOperationDebit(debitAmount, pDate, pDescription,
                                                                                        pUser);

                      _ePS.FireEvent(events, pSaving, sqlTransaction);

                      // Change overdraft state
                      if (pSaving is SavingBookContract)
                      {
                          if (pSaving.GetBalance() > 0)
                          {
                              ((SavingBookContract) pSaving).InOverdraft = false;
                              UpdateOverdraftStatus(pSaving.Id, false);
                          }
                      }
                      sqlTransaction.Commit();
                      return events;
                  }
                  catch (Exception)
                  {
                      sqlTransaction.Rollback();
                      throw;
                  }
              }
        }
コード例 #53
0
        public void AddSavingEventTokens(List <Token> tokens, SavingEvent savingEvent, ISavingsContract savingsContract)
        {
            string description           = savingEvent.Description;
            string formatedAccountNumber = "******" + savingsContract.Code.Substring(savingsContract.Code.Length - 4);

            if (description.Contains(savingsContract.Code))
            {
                description.Replace(savingsContract.Code, formatedAccountNumber);
            }

            tokens.Add(new Token("SavingEvent.Id", savingEvent.Id.ToString()));
            tokens.Add(new Token("SavingEvent.Code", savingEvent.Code));
            tokens.Add(new Token("SavingEvent.Description", description));
            tokens.Add(new Token("SavingEvent.ReferenceNumber", savingEvent.ReferenceNumber));
            tokens.Add(new Token("SavingEvent.PaymentsMethod", savingEvent.PaymentsMethod != null ? savingEvent.PaymentsMethod.Name : ""));
            tokens.Add(new Token("SavingEvent.Date", savingEvent.Date.ToShortDateString()));
            tokens.Add(new Token("SavingEvent.Currency", savingEvent.Currency != null ? savingEvent.Currency.Name : "NAIRA"));
            tokens.Add(new Token("SavingEvent.Amount", savingEvent.Amount.GetFormatedValue(true)));
            tokens.Add(new Token("SavingEvent.Branch", savingEvent.Branch != null ? savingEvent.Branch.Name : ""));
            tokens.Add(new Token("SavingEvent.Comment", savingEvent.Comment));
            tokens.Add(new Token("SavingEvent.IsPending", savingEvent.IsPending.ToString()));
            tokens.Add(new Token("SavingEvent.SavingProduct.Code", savingEvent.SavingProduct != null ? savingEvent.SavingProduct.Code : ""));
            tokens.Add(new Token("SavingEvent.SavingsMethod", savingEvent.SavingsMethod != null ? savingEvent.SavingsMethod.Description() : ""));
            tokens.Add(new Token("SavingEvent.AccountNumber", formatedAccountNumber));

            tokens.Add(new Token("SavingEvent.AccountBalance", savingsContract.GetFmtBalance(true)));
            tokens.Add(new Token("SavingEvent.AccountAvailableBalance", savingsContract.GetFmtAvailBalance(true)));
        }
コード例 #54
0
ファイル: SavingBookContract.cs プロジェクト: aelhadi/opencbs
        public override List<SavingEvent> DebitTransfer(OCurrency pAmount, ISavingsContract pCreditAccount, DateTime pDate, 
            string pDescription, User pUser, bool pIsDesactivateFees)
        {
            List<SavingEvent> events = new List<SavingEvent>();
            SavingDebitTransferEvent transferEvent = new SavingDebitTransferEvent
            {
                Amount = pAmount,
                Date = pDate,
                Description = pDescription,
                User = pUser,
                Cancelable = false,
                RelatedContractCode = pCreditAccount.Code,
                ProductType = typeof(SavingsBookProduct)
            }; 
            events.Add(transferEvent);
            Events.Add(transferEvent);

            if (Status != OSavingsStatus.Closed && !pIsDesactivateFees)
                    transferEvent.Fee = Product.TransferFeesType == OSavingsFeesType.Flat ? FlatTransferFees : pAmount * RateTransferFees.Value;

            return events;
        }
コード例 #55
0
ファイル: SavingServices.cs プロジェクト: TalasZh/opencbs
        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;
        }
コード例 #56
0
ファイル: SavingBookContract.cs プロジェクト: aelhadi/opencbs
        public void SavingServicesAccountAtMaturity(ISavingsContract savingContract, DateTime date, User user)
        {
            if (savingContract.Rollover == OSavingsRollover.Principal)
            {
                DateTime lastMaturity = DateCalculationStrategy.GetLastMaturity(date,
                                                                                savingContract.Product.Periodicity,
                                                                                savingContract.NumberOfPeriods);
                
                OCurrency interests = savingContract.Events.Where(
                                                                     item => item is SavingInterestsPostingEvent && 
                                                                     item.Date.Date > lastMaturity && 
                                                                     item.Date.Date <= date
                                                                     ).
                                                            Sum(item => item.Amount.Value);

                // TODO: replace the fee of zero with a meaningful value
                Transfer(TransferAccount, interests, 0, date, "Transfer interests");
            }
        }
コード例 #57
0
ファイル: SavingServices.cs プロジェクト: TalasZh/opencbs
        public bool ValidateSavingsContract(ISavingsContract saving, Client client)
        {
            if (!IsProductCorrect(saving))
                throw new OpenCbsSavingException(OpenCbsSavingExceptionEnum.ProductIsInvalid);
            if (!IsInterestRateCorrect(saving))
                throw new OpenCbsSavingException(OpenCbsSavingExceptionEnum.InterestRateIsInvalid);
            if (!IsWithdrawFeesCorrect((SavingBookContract)saving))
                throw new OpenCbsSavingException(OpenCbsSavingExceptionEnum.WithdrawFeesIsInvalid);

            if (!IsTransferFeesCorrect((SavingBookContract)saving))
                throw new OpenCbsSavingException(OpenCbsSavingExceptionEnum.TransferFeesIsInvalid);

            if (!IsDepositFeesCorrect((SavingBookContract)saving))
                throw new OpenCbsSavingException(OpenCbsSavingExceptionEnum.DepositFeesIsInvalid);

            if (!IsCloseFeesCorrect((SavingBookContract)saving))
                throw new OpenCbsSavingException(OpenCbsSavingExceptionEnum.CloseFeesIsInvalid);

            if (!IsManagementFeesCorrect((SavingBookContract)saving))
                throw new OpenCbsSavingException(OpenCbsSavingExceptionEnum.ManagementFeesIsInvalid);

            if (!IsAgioFeesCorrect((SavingBookContract)saving))
                throw new OpenCbsSavingException(OpenCbsSavingExceptionEnum.AgioFeesIsInvalid);

            if (((SavingBookContract)saving).Loans != null)
            {
                //IsLoanValid((Saving)saving, pClient);

                //if (!_IsLoanAmountCorrect((Saving)saving, ((Saving)saving).Loan))
                //    throw new OpenCbsSavingException(OpenCbsSavingExceptionEnum.InitialAmountIsInvalid);
            }
            else
            {
                if (!IsInitialAmountCorrect(saving))
                    throw new OpenCbsSavingException(OpenCbsSavingExceptionEnum.InitialAmountIsInvalid);
            }
            if (((SavingBookContract)saving).UseTermDeposit)
            {
                if (((SavingBookContract)saving).Rollover != OSavingsRollover.PrincipalAndInterests)
                {
                    if (((SavingBookContract)saving).TransferAccount == null)
                        throw new OpenCbsSavingException(OpenCbsSavingExceptionEnum.TransferAccountIsInvalid);
                }

            }

            return true;
        }
コード例 #58
0
 private void SavingEventOrigination(SavingEvent savingEvent, ISavingsContract savingsContract, SqlTransaction sqlTransac)
 {
     _savingEventManagement.Add(savingEvent, savingsContract.Id, sqlTransac);
 }
コード例 #59
0
        private void btSearchContract_Click(object sender, EventArgs e)
        {
            SearchCreditContractForm searchCreditContractForm = SearchCreditContractForm.GetInstance(null);
            searchCreditContractForm.BringToFront();
            searchCreditContractForm.WindowState = FormWindowState.Normal;
            if (searchCreditContractForm.ShowForSearchSavingsContractForTransfer("") == DialogResult.OK)
            {
                SavingSearchResult saving = searchCreditContractForm.SelectedSavingContract;
                lblClientName.Text = saving.ClientName;
                tbTargetAccount.Text = saving.ContractCode;

                _savingTarget = ServicesProvider.GetInstance().GetSavingServices().GetSaving(saving.Id);
                lblInterBranch.Visible = !IsNormalTransfer();
                LoadTransferFee();
            }
        }