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; } }
public string GenerateSavingCode(Client pClient, int pSavingsCount, string pCodeTemplate, string pImfCode, string pBranchCode) { switch (pCodeTemplate) { case "BC/YY/PC-PS/CN-ID": { string clientName = (pClient is Person) ? ((Person)pClient).LastName : pClient.Name; clientName = clientName.Replace(" ", ""); string productCode = Product.Code.Replace(" ", ""); Code = "S/{0}/{1}/{2}-{3}/{4}-{5}"; Code = string.Format(Code, pBranchCode, CreationDate.Year, productCode.Substring(0, Math.Min(productCode.Length, 5)).ToUpper(), pSavingsCount + 1, clientName.Substring(0, Math.Min(clientName.Length, 4)).ToUpper(), pClient.Id); break; } case "IC/BC/CS/ID": { string clientCode = pClient.Id.ToString().PadLeft(5, '0'); string savingsCount = (pSavingsCount + 1).ToString().PadLeft(2, '0'); Code = string.Format("{0}/{1}/{2}/{3}", pImfCode, pBranchCode, savingsCount, clientCode); break; } } return Code; }
private void personUserControl_ButtonSaveClick(object sender, EventArgs e) { if (_personUserControl.PersonSaved) { _person = _personUserControl.Person; _client = _person; if (_mdiParent != null) ((LotrasmicMainWindowForm)_mdiParent).SetInfoMessage(string.Format("Person {0} {1} saved", _person.FirstName, _person.LastName)); InitializeTitle(string.Format("{1} {0}", _person.FirstName, _person.LastName)); if (_closeFormAfterSave) { DialogResult = DialogResult.OK; Close(); } if (!tabControlPerson.TabPages.Contains(tabPageContracts)) { tabControlPerson.TabPages.Add(tabPageContracts); panelLoansContracts.Controls.Add(pnlLoans); } } else { _person = null; //DialogResult = DialogResult.Cancel; } }
public ClientForm( IClient pClient, int pContractId, Form pMdiParent, string selectedTab, IApplicationController applicationController = null) : this(applicationController) { _mdiParent = pMdiParent; _listGuarantors = new List<Guarantor>(); _collaterals = new List<ContractCollateral>(); _loanShares = new List<LoanShare>(); _client = (Client)pClient; InitLoanOfficers(_client); InitControls(); InitializeClient(pClient, pContractId); if (_credit != null) foreach (LoanShare ls in _credit.LoanShares) _loanShares.Add(ls); tabControlPerson.SelectTab(selectedTab); InitializeTabPageAdvancedSettings(); LoadLoanDetailsExtensions(); }
public ClientForm(IClient pClient, int pContractId, Form pMdiParent, string selectedTab) : this() { _mdiParent = pMdiParent; _listGuarantors = new List<Guarantor>(); _collaterals = new List<ContractCollateral>(); _loanShares = new List<LoanShare>(); _client = (Client)pClient; InitLoanOfficers(_client); InitializeComponent(); InitControls(); InitializeClient(pClient, pContractId); if (_credit != null) foreach (LoanShare ls in _credit.LoanShares) _loanShares.Add(ls); tabControlPerson.SelectTab(selectedTab); InitializeTabPageAdvancedSettings(); bool active = _credit != null && _credit.ContractStatus == OContractStatus.Active; //InitializeCustomizableFields(OCustomizableFieldEntities.Loan, pContractId, active); LoadLoanDetailsExtensions(); LoadLoanDetailsButtons(); }
private void InitializeClient(IClient pClient, int pContractId) { if (pClient is Person) { _person = (Person)pClient; _client = _person; _oClientType = OClientTypes.Person; InitializeUserControl(_oClientType, _mdiParent); InitializeTitle(string.Format("{0} {1}", _person.FirstName, _person.LastName)); } if (pClient is Group) { _group = (Group)pClient; _client = _group; _oClientType = OClientTypes.Group; InitializeUserControl(_oClientType, _mdiParent); InitializeTitle(_group.Name); } if (pClient is Corporate) { _corporate = (Corporate)pClient; _client = _corporate; _oClientType = OClientTypes.Corporate; InitializeUserControl(_oClientType, _mdiParent); InitializeTitle(_corporate.Name); } _project = pClient.SelectProject(pContractId); _credit = _project.SelectCredit(pContractId); _credit.LoanEntryFeesList = ServicesProvider.GetInstance().GetContractServices().GetInstalledLoanEntryFees(_credit); _product = _credit.Product; if (_product.CycleId != null && _credit.Disbursed == false) { ServicesProvider.GetInstance().GetProductServices().SetCyclesParamsForContract(_product, _credit, _client, false); } else { if (_credit.Product.Amount.HasValue == false) { _amountValueRange = new DecimalValueRange(_credit.Product.AmountMin.Value, _credit.Product.AmountMax.Value); nudLoanAmount.Minimum = _credit.Product.AmountMin.Value; nudLoanAmount.Maximum = _credit.Product.AmountMax.Value; } else { nudLoanAmount.Minimum = nudLoanAmount.Maximum = _credit.Product.Amount.Value; } if (_credit.Product.NbOfInstallments.HasValue == false) { nudLoanNbOfInstallments.Minimum = _credit.Product.NbOfInstallmentsMin.Value; nudLoanNbOfInstallments.Maximum = _credit.Product.NbOfInstallmentsMax.Value; } else { nudLoanNbOfInstallments.Minimum = nudLoanNbOfInstallments.Maximum = _credit.Product.NbOfInstallments.Value; } } if (ServicesProvider.GetInstance().GetGeneralSettings().UseProjects) { tabControlPerson.TabPages.Add(tabPageProject); DisplaySelectedProject(_project); } else { AddProject(_project); } tabControlPerson.TabPages.Add(tabPageLoansDetails); tabControlPerson.TabPages.Add(tabPageAdvancedSettings); tabControlPerson.TabPages.Add(tabPageLoanGuarantees); _credit.LoanInitialOfficer = _credit.LoanOfficer; InitializeTabPageLoansDetails(_credit); tabControlPerson.TabPages.Add(tabPageCreditCommitee); if (_credit.Disbursed) { tabControlPerson.TabPages.Add(tabPageLoanRepayment); //tabControlPerson.TabPages.Add(tabPageLAC); tabControlPerson.SelectedTab = tabPageLoanRepayment; InitializeTabPageLoanRepayment(_credit); } else if (_credit.ContractStatus == OContractStatus.Validated && !_credit.Disbursed) { tabControlPerson.SelectedTab = tabPageLoansDetails; } }
public List<SavingEvent> Reopen(OCurrency pReopenAmount, ISavingsContract pSaving, DateTime pDate, User pUser, Client pClient) { using (SqlConnection conn = _savingManager.GetConnection()) using (SqlTransaction sqlTransaction = conn.BeginTransaction()) { try { List<SavingEvent> events = pSaving.Reopen(pReopenAmount, pDate, pUser, "Reopen savings account", false); foreach (SavingEvent savingEvent in events) _ePS.FireEvent(savingEvent, pSaving, sqlTransaction); _savingManager.UpdateStatus(pSaving.Id, pSaving.Status, pSaving.ClosedDate); sqlTransaction.Commit(); return events; } catch (Exception) { sqlTransaction.Rollback(); throw; } } }
private void CorporateUserControl_ButtonSaveClick(object sender, EventArgs e) { if (_corporateUserControl.CorporateSaved) { _corporate = _corporateUserControl.Corporate; _client = _corporate; ((LotrasmicMainWindowForm)_mdiParent).SetInfoMessage(string.Format("Corporate {0} saved", _corporate.Name)); InitializeTitle(_corporate.Name); if (!tabControlPerson.TabPages.Contains(tabPageContracts)) { tabControlPerson.TabPages.Add(tabPageContracts); panelLoansContracts.Controls.Add(pnlLoans); } } }
public int GetSavingCount(Client pClient) { if (pClient == null) throw new OpenCbsTiersSaveException(OpenCbsTiersSaveExceptionEnum.TiersIsNull); return _savingManager.GetNumberOfSavings(pClient.Id); }
public bool IsCompuslorySavingsValid(Loan pLoan, SavingBookContract pSaving, Client pClient) { if (pLoan.Product.Currency.Id != pSaving.Product.Currency.Id) throw new OpenCbsSavingException(OpenCbsSavingExceptionEnum.LoanHasNotSameCurrency); //if (saving.Id == 0) if (new ClientServices(_user).FindTiersByContractId(pLoan.Id).Id != pClient.Id) throw new OpenCbsSavingException(OpenCbsSavingExceptionEnum.LoanHasNotSameClient); //if (loan.Id == 0) if (new ClientServices(_user).FindTiersBySavingsId(pSaving.Id).Id != pClient.Id) throw new OpenCbsSavingException(OpenCbsSavingExceptionEnum.LoanHasNotSameClient); return true; }
protected override void SetUp() { base.SetUp(); ChartOfAccounts.SuppressAll(); _savingManager = (SavingManager)container["SavingManager"]; _savingEventManager = (SavingEventManager)container["SavingEventManager"]; _client = new Person { Id = 6 }; _user = new User { Id = 1 }; User.CurrentUser = _user; _product = new SavingsBookProduct { Id = 1, Name = "SavingProduct1", InitialAmountMin = 100, InitialAmountMax = 500, BalanceMin = 0, BalanceMax = 1000, WithdrawingMin = 100, WithdrawingMax = 150, DepositMin = 200, DepositMax = 250, TransferMin = 100, TransferMax = 200, InterestRateMin = 0.2, InterestRateMax = 0.3, InterestBase = OSavingInterestBase.Daily, InterestFrequency = OSavingInterestFrequency.EndOfMonth, Currency = new Currency { Id = 1 }, WithdrawFeesType = OSavingsFeesType.Flat, FlatWithdrawFees = 10, TransferFeesType = OSavingsFeesType.Rate, RateTransferFees = 0.1 }; _saving = new SavingBookContract(ApplicationSettings.GetInstance(""), _user, new DateTime(2009, 01, 01), _product, null) { Code = "S/CR/2009/SAVIN-1/BAR-1", InterestRate = 0.2, FlatWithdrawFees = 10, RateTransferFees = 0.1 }; _saving.FirstDeposit(1000, new DateTime(2009, 01, 01), null, new User(), Teller.CurrentTeller); _savingTarget = _saving = new SavingBookContract(ApplicationSettings.GetInstance(""), _user, new DateTime(2009, 01, 01), _product, null) { Code = "S/CR/2009/SAVIN-1/BAR-2", InterestRate = 0.2, }; _saving.InitialAmount = 1000; _saving.EntryFees = 10; _saving.SavingsOfficer = _user; _saving.NumberOfPeriods = 0; _saving.Id = _savingManager.Add(_saving, _client); _savingTarget.Id = _savingManager.Add(_savingTarget, _client); Branch branch = new Branch {Id = 1, Name = "Default", Code = "Default"}; _saving.Branch = branch; _savingTarget.Branch = branch; }
public List<SavingEvent> Reopen(OCurrency pReopenAmount, ISavingsContract pSaving, DateTime pDate, User pUser, Client pClient) { using (SqlConnection conn = _savingManager.GetConnection()) using (SqlTransaction sqlTransaction = conn.BeginTransaction()) { try { List<SavingEvent> events = pSaving.Reopen(pReopenAmount, pDate, pUser, "Reopen savings account", false); foreach (SavingEvent savingEvent in events) { _ePS.FireEvent(savingEvent, pSaving, sqlTransaction); ServicesProvider.GetInstance() .GetContractServices() .CallInterceptor(new Dictionary<string, object> { {"Event", savingEvent}, {"RecoveryAccount", true}, {"SqlTransaction", sqlTransaction} }); } _savingManager.UpdateStatus(pSaving.Id, pSaving.Status, pSaving.ClosedDate); sqlTransaction.Commit(); return events; } catch (Exception) { sqlTransaction.Rollback(); throw; } } }
private void OnClosing(object sender, FormClosingEventArgs e) { if (DialogResult.OK == DialogResult) return; _person = null; _corporate = null; _client = null; if (_group != null) _group.Dispose(); }
public ClientForm(Person pPerson, Form pMdiParent) : this() { _mdiParent = pMdiParent; _person = pPerson; _client = pPerson; InitLoanOfficers(_client); _listGuarantors = new List<Guarantor>(); _collaterals = new List<ContractCollateral>(); _loanShares = new List<LoanShare>(); InitializeComponent(); InitControls(); _oClientType = OClientTypes.Person; InitializeUserControl(OClientTypes.Person, pMdiParent); InitializeTitle(string.Format("{0} {1}", pPerson.FirstName, pPerson.LastName)); }
public int SaveContract(ISavingsContract saving, Client client) { return SaveContract(saving, client, null); }
public ClientForm(Corporate pCorporate, Form pMdiParent) : this() { _mdiParent = pMdiParent; _corporate = pCorporate; _client = pCorporate; InitLoanOfficers(_client); _listGuarantors = new List<Guarantor>(); _collaterals = new List<ContractCollateral>(); _loanShares = new List<LoanShare>(); InitializeComponent(); InitControls(); _oClientType = OClientTypes.Corporate; InitializeUserControl(OClientTypes.Corporate, pMdiParent); InitializeTitle(_corporate.Name); }
public int SaveContract(ISavingsContract saving, Client client, Action<SqlTransaction, int> action) { if (client == null) throw new OpenCbsTiersSaveException(OpenCbsTiersSaveExceptionEnum.TiersIsNull); ValidateSavingsContract(saving, client); int savingsCount = _savingManager.GetNumberOfSavings(client.Id); saving.GenerateSavingCode( client, savingsCount, ApplicationSettings.GetInstance(_user.Md5).SavingsCodeTemplate, ApplicationSettings.GetInstance(_user.Md5).ImfCode, client.Branch.Code ); saving.Status = OSavingsStatus.Pending; if (((SavingBookContract) saving).UseTermDeposit) { ((SavingBookContract) saving).NextMaturity = DateCalculationStrategy.GetNextMaturity( saving.CreationDate, ((SavingBookContract) saving).Product.Periodicity, ((SavingBookContract) saving).NumberOfPeriods); } using (SqlConnection connection = _savingManager.GetConnection()) using (SqlTransaction sqlTransaction = connection.BeginTransaction()) { try { saving.Id = _savingManager.Add(saving, client, sqlTransaction); string code = saving.Code + '/' + saving.Id.ToString(CultureInfo.InvariantCulture); _savingManager.UpdateSavingContractCode(saving.Id, code, sqlTransaction); if (action != null) action(sqlTransaction, saving.Id); sqlTransaction.Commit(); return saving.Id; } catch (Exception) { sqlTransaction.Rollback(); throw; } } }
public ClientForm(Group pGroup, Form pMdiParent) : this() { _mdiParent = pMdiParent; _group = pGroup; _client = pGroup; InitLoanOfficers(_client); _listGuarantors = new List<Guarantor>(); _collaterals = new List<ContractCollateral>(); _loanShares = new List<LoanShare>(); InitializeComponent(); InitControls(); _oClientType = OClientTypes.Group; InitializeUserControl(OClientTypes.Group, pMdiParent); InitializeTitle(_group.Name); }
public void UpdateContract(SavingBookContract pSaving, Client pClient) { SavingBookContract oldSavings = (SavingBookContract)_savingManager.Select(pSaving.Id); foreach (Loan loan in oldSavings.Loans) { if (loan != null && (loan.ContractStatus == OContractStatus.Active || loan.ContractStatus == OContractStatus.Validated)) throw new OpenCbsSavingException(OpenCbsSavingExceptionEnum.CompulsorySavingsLinkedToLoan); if (loan != null) if (new ClientServices(_user).FindTiersByContractId(loan.Id).Id != new ClientServices(_user).FindTiersBySavingsId(pSaving.Id).Id) throw new OpenCbsSavingException(OpenCbsSavingExceptionEnum.LoanHasNotSameClient); } }
private void GroupUserControl_ButtonSaveClick(object sender, EventArgs e) { if (_groupUserControl.GroupSaved) { _group = _groupUserControl.Group; _client = _group; ((LotrasmicMainWindowForm)_mdiParent).SetInfoMessage(string.Format("Group {0} saved", _group.Name)); InitializeTitle(_group.Name); if (!tabControlPerson.TabPages.Contains(tabPageContracts)) { tabControlPerson.TabPages.Add(tabPageContracts); panelLoansContracts.Controls.Add(pnlLoans); } } else _group = null; }
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; }
private void OnClosing(object sender, FormClosingEventArgs e) { if (DialogResult.OK == DialogResult) return; _person = null; _corporate = null; _client = null; if (_group != null) _group.Dispose(); //if (_project != null) // _project.Dispose(); //_credit.Dispose(); //DialogResult = DialogResult.Cancel; }
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; }
public void SetCyclesParamsForContract(LoanProduct product, Loan credit, Client client, bool isContractForCreation) { if (isContractForCreation) { if (product.LoanAmountCycleParams == null || product.RateCycleParams == null || product.MaturityCycleParams == null) { product.LoanAmountCycleParams = ServicesProvider.GetInstance().GetProductServices().GetLoanAmountCycleParameters((int)product.CycleId); product.RateCycleParams = ServicesProvider.GetInstance().GetProductServices().GetInterestRateCycleParams((int)product.CycleId); product.MaturityCycleParams = ServicesProvider.GetInstance().GetProductServices().GetMaturityCycleParams(product.Id, (int)product.CycleId); } if (product.LoanAmountCycleParams.Count != 0 && product.RateCycleParams.Count != 0 && product.MaturityCycleParams.Count != 0) { SetLoanAmountCycle(product, client.LoanCycle); SetRateCycle(product, client.LoanCycle); SetMaturityCycle(product, client.LoanCycle); } } else if (credit != null) { product.AmountMin = credit.AmountMin; product.AmountMax = credit.AmountMax; product.InterestRateMin = credit.InterestRateMin; product.InterestRateMax = credit.InterestRateMax; product.NbOfInstallmentsMin = credit.NmbOfInstallmentsMin; product.NbOfInstallmentsMax = credit.NmbOfInstallmentsMax; } }
private static void checkStandardFormats(Client client) { //For all the regexes: If a particular regex is set, only then the following validation takes place //ZipCode checking according to a regex setting (which is set in the db used) if (string.IsNullOrEmpty(ApplicationSettings.GetInstance("").StandardZipCode)) { } else { Regex regex = new Regex(ApplicationSettings.GetInstance("").StandardZipCode); if (string.IsNullOrEmpty(client.ZipCode)) { } else { if (!regex.IsMatch(client.ZipCode)) throw new OpenCbsTiersSaveException(OpenCbsTiersSaveExceptionEnum.IncorrectZipCodeFormat); } } //CityPhoneNumberChecking (static, that has a cable line connection) //according to a regex setting (which is set in the db used) if (string.IsNullOrEmpty(ApplicationSettings.GetInstance("").StandardZipCode)) { } else { Regex cityPhoneRegex = new Regex(ApplicationSettings.GetInstance("").StandardCityPhoneFormat); if (string.IsNullOrEmpty(client.HomePhone)) { } else { if (!cityPhoneRegex.IsMatch(client.HomePhone)) throw new OpenCbsTiersSaveException(OpenCbsTiersSaveExceptionEnum.IncorrectCityPhoneFormat); } } //MobilePhoneNumberChecking (as opposed to cityPhone) //according to a regex setting (which is set in the db used) if (string.IsNullOrEmpty(ApplicationSettings.GetInstance("").StandardZipCode)) { } else { Regex mobilePhoneRegex = new Regex(ApplicationSettings.GetInstance("").StandardMobilePhoneFormat); if (string.IsNullOrEmpty(client.PersonalPhone)) { } else { if (!mobilePhoneRegex.IsMatch(client.PersonalPhone)) throw new OpenCbsTiersSaveException(OpenCbsTiersSaveExceptionEnum.IncorrectMobilePhoneFormat); } } }