//internal static void MoveFocusToNextControlOnEnter(object sender, KeyEventArgs e) { // if (e.Key != Key.Enter) return; // var tRequest = new TraversalRequest(FocusNavigationDirection.Next); // var keyboardFocus = Keyboard.FocusedElement as UIElement; // if (keyboardFocus != null) { // keyboardFocus.MoveFocus(tRequest); // } // e.Handled = true; //} internal static Nfmb SearchMember() { var members = Nfmb.GetList(); var searchItems = members.Select( member => new SearchItem(member.ID, member.MemberName) { ItemCode = member.MemberCode }). ToList(); var searchByCodeWindow = new SearchByCodeWindow(searchItems); searchByCodeWindow.ShowDialog(); if (searchByCodeWindow.DialogResult == false) { return(null); } var searchItem = new Nfmb(); searchItem.Find(searchByCodeWindow.SelectedItem.ItemId); return(searchItem); }
private Result PostServiceFee() { // post service fee credit side var member = Nfmb.FindByCode(_accountDetail.MemberCode); var accountCode = GlobalSettings.CodeOfServiceFee; if (string.IsNullOrWhiteSpace(accountCode)) { return(new Result(false, GenerateCodeOfAccountNotSetMessage("Service Fee"))); } var account = Account.FindByCode(accountCode); var cv = new CashVoucher { MemberCode = member.MemberCode, MemberName = member.MemberName, AccountCode = account.AccountCode, AccountTitle = account.AccountTitle, Credit = _accountDetail.TimeDepositDetails.CalculateServiceFee(_voucherDocument.VoucherDate), VoucherDate = _voucherDocument.VoucherDate, VoucherNo = _voucherDocument.VoucherNo, }; var postResult = cv.Create(); if (!postResult.Success) { Rollback(); } return(postResult); }
private Result PostTimeDepositEndBalance() { // post time desposit end balance debit side var member = Nfmb.FindByCode(_accountDetail.MemberCode); var account = Account.FindByCode(_accountDetail.AccountCode); var tdDetails = new TimeDepositDetails { CertificateNo = _accountDetail.TimeDepositDetails.CertificateNo }; var cv = new CashVoucher { MemberCode = member.MemberCode, MemberName = member.MemberName, AccountCode = account.AccountCode, AccountTitle = account.AccountTitle, Debit = _accountDetail.EndingBalance, VoucherDate = _voucherDocument.VoucherDate, VoucherNo = _voucherDocument.VoucherNo, TimeDepositDetails = tdDetails, }; var postResult = cv.Create(); if (!postResult.Success) { Rollback(); } return(postResult); }
public GoNegosyoView(Nfmb member) { InitializeComponent(); _member = member; if (MainController.LoggedUser.TransactionDate != GlobalSettings.DateOfOpenTransaction) { MessageWindow.ShowAlertMessage("Cannot create transactions using current date settings."); btnDetails.IsEnabled = btnPost.IsEnabled = false; return; } var code = GlobalSettings.CodeOfGoNegosyo; if (string.IsNullOrEmpty(code)) { MessageWindow.ShowAlertMessage("Go Negosyo code not set!"); btnDetails.IsEnabled = btnPost.IsEnabled = false; return; } btnPost.Click += (sender, args) => Post(); btnDetails.Click += (sender, args) => ShowDetails(); _loanProduct = LoanProduct.GetList().First(a => a.ProductCode == code); // initialize cash voucher entry for go negosyo _cashVoucher = new CashVoucher { VoucherNo = Voucher.LastDocumentNo(VoucherTypes.CV) + 1, }; DataContext = _cashVoucher; }
private Result PostCashOnHand() { // post cash on hand credit side var member = Nfmb.FindByCode(_accountDetail.MemberCode); var accountCode = GlobalSettings.CodeOfCashOnHand; if (string.IsNullOrWhiteSpace(accountCode)) { return(new Result(false, GenerateCodeOfAccountNotSetMessage("Cash on Hand"))); } var account = Account.FindByCode(accountCode); var amount = _accountDetail.EndingBalance + _accountDetail.TimeDepositDetails.CalculateInterestEarned(_voucherDocument.VoucherDate) - _accountDetail.TimeDepositDetails.CalculateServiceFee(_voucherDocument.VoucherDate); var cv = new CashVoucher { MemberCode = member.MemberCode, MemberName = member.MemberName, AccountCode = account.AccountCode, AccountTitle = account.AccountTitle, Credit = amount, VoucherDate = _voucherDocument.VoucherDate, VoucherNo = _voucherDocument.VoucherNo, Explanation = "Withdrawal of Time Deposit", AmountInWords = Converter.AmountToWords(amount), }; var postResult = cv.Create(); if (!postResult.Success) { Rollback(); } return(postResult); }
public PostTimeDepositView(Nfmb member, TimeDepositViewModel viewModel) : this() { _officialReceipt = new OfficialReceipt(); _member = member; _viewModel = viewModel; _officialReceipt.VoucherNo = Voucher.LastDocumentNo(VoucherTypes.OR) + 1; DataContext = _officialReceipt; }
private void Create(object sender, RoutedEventArgs e) { _member = new Nfmb { ContactInformation = new Contact() }; RefreshDisplay(); ShowValidateMemberWindow(this, null); }
public SpecialLoanApplicationView(Nfmb member) { InitializeComponent(); _member = member; btnSalaryAdvances.Click += (sender, args) => ShowSalaryAdvancesView(); btnGoNegosyo.Click += (sender, args) => ShowGoNegosyoView(); }
private void SearchMember() { Nfmb result = MainController.SearchMember(); if (result != null && result.MemberCode != null) { if (result.MemberCode.Length >= 4) { _viewModel.Member = result; RefreshMemberInformation(); RefreshAccountInformation(); } } }
public PostSavingsDepositView(Nfmb member, Account savingsAccount) : this() { _officialReceipt = new OfficialReceipt(); _officialReceipt.VoucherNo = Voucher.LastDocumentNo(VoucherTypes.OR) + 1; _officialReceipt.MemberCode = member.MemberCode; _officialReceipt.MemberName = member.MemberName; _officialReceipt.AccountCode = savingsAccount.AccountCode; _officialReceipt.AccountTitle = savingsAccount.AccountTitle; _officialReceipt.VoucherDate = MainController.LoggedUser.TransactionDate; DataContext = _officialReceipt; }
public static Result ReBalanceWithdrawals(Voucher voucher, decimal totalWithdrawals) { var sqlBuilder = new StringBuilder(); sqlBuilder.AppendLine("SELECT *"); sqlBuilder.AppendLine("FROM cv"); sqlBuilder.AppendLine("WHERE DOC_NUM = ?DOC_NUM"); sqlBuilder.AppendLine("AND CREDIT > 0"); sqlBuilder.AppendLine("LIMIT 1"); var sqlParam = new SqlParameter("?DOC_NUM", voucher.VoucherNo); DataTable dataTable = DatabaseController.ExecuteSelectQuery(sqlBuilder, sqlParam); var cv = new CashVoucher(); foreach (DataRow dataRow in dataTable.Rows) { cv.SetPropertiesFromDataRow(dataRow); } cv.Credit = totalWithdrawals; cv.Amount = totalWithdrawals; cv.AmountInWords = Utilities.Converter.AmountToWords(totalWithdrawals); if (cv.ID == 0) { var company = Nfmb.FindByCode(GlobalSettings.CodeOfCompany); if (company == null || company.ID == 0) { return(new Result(false, "Company Code is not set. Please consult System Administrator")); } cv.MemberCode = company.MemberCode; cv.MemberName = company.MemberName; var coh = Account.FindByCode(GlobalSettings.CodeOfCashOnHand); cv.AccountCode = coh.AccountCode; cv.AccountTitle = coh.AccountTitle; cv.VoucherNo = voucher.VoucherNo; cv.VoucherDate = voucher.VoucherDate; cv.VoucherType = cv.VoucherType; cv.Explanation = "Daily partial withdrawal from Savings Deposit"; return(cv.Create()); } return(cv.Update()); }
private void FindComaker3ButtonClick(object sender, RoutedEventArgs e) { Nfmb member = MainController.SearchMember(); if (member == null) { _loanDetails.CoMakers[2] = new CoMaker(); CoMakerSearchBox3.Text = ""; } else { _loanDetails.CoMakers[2] = new CoMaker { MemberCode = member.MemberCode, MemberName = member.MemberName }; CoMakerSearchBox3.Text = _loanDetails.CoMakers[2].ToString(); } }
public MemberInformationWindow(string memberCode) { InitializeComponent(); _member = Nfmb.FindByCode(memberCode); InitializeLookupControls(); DataContext = _member; TabItemContactInformation.DataContext = _member.ContactInformation; _member.ContactInformation = Contact.WhereMemberCodeIs(memberCode); imgPhoto.Source = ImageTool.CreateImageSourceFromBytes(_member.ContactInformation.Picture); imgSignature.Source = ImageTool.CreateImageSourceFromBytes(_member.ContactInformation.Signature); CrudButtons.Visibility = Visibility.Hidden; stbMemberNameCode.IsEnabled = false; }
private static Result ValidateMemberName(string memberCode, string memberName) { if (string.IsNullOrEmpty(memberCode) || string.IsNullOrEmpty(memberName)) { return(new Result(false, "Member Code or Member Name must not be empty.")); } if (_dataManipulationType == ModelController.DataManipulationType.Create) { Nfmb foundMember = Nfmb.FindByCode(memberCode); if (foundMember != null && foundMember.ID > 0) { return(new Result(false, "Member Code already exists.")); } foundMember = Nfmb.FindByName(memberName); if (foundMember != null && foundMember.ID > 0) { if (foundMember.ID != 0) { return(new Result(false, "Member Name already exists.")); } } } else { Nfmb foundMember = Nfmb.FindByName(memberName); if (foundMember != null && foundMember.ID > 0) { if (foundMember.MemberCode != memberCode) { return(new Result(false, "Member Name already exists.")); } } } return(new Result(true, "ValidateMemberName successful.")); }
private void Read(object sender, RoutedEventArgs e) { List <Nfmb> members = Nfmb.GetList(); List <SearchItem> searchItems = members.Select( member => new SearchItem(member.ID, member.MemberName) { ItemCode = member.MemberCode }).ToList(); var searchByCodeWindow = new SearchByCodeWindow(searchItems); searchByCodeWindow.ShowDialog(); if (searchByCodeWindow.DialogResult != true) { return; } _member.Find(searchByCodeWindow.SelectedItem.ItemId); RefreshDisplay(); }
private void Delete(object sender, RoutedEventArgs e) { if (_member == null) { return; } if (_member.ID <= 0) { return; } const string confirmMessage = "You are about to delete current Member information. Do you want to proceed?"; if (MessageWindow.ShowConfirmMessage(confirmMessage) != MessageBoxResult.Yes) { return; } _member.Destroy(); MessageWindow.ShowNotifyMessage("Member information deleted!"); DataContext = _member = new Nfmb(); }
private void CurrentItemOnPropertyChanged(object sender, PropertyChangedEventArgs e) { _hasModified = true; var currentItem = (CashVoucher)sender; switch (e.PropertyName) { case "MemberCode": var nfmb = Nfmb.FindByCode(currentItem.MemberCode); currentItem.MemberName = nfmb.MemberName; break; case "AccountCode": var account = Account.FindByCode(currentItem.AccountCode); currentItem.AccountTitle = account.AccountTitle; break; case "Debit": case "Credit": UpdateTotalDebitAndTotalCredit(); break; } }
private Result PostInterestExpense() { // post time desposit end balance debit side var interestEarned = _accountDetail.TimeDepositDetails.CalculateInterestEarned(_voucherDocument.VoucherDate); if (interestEarned == 0) { return(new Result(true, "No interest earned.")); } var member = Nfmb.FindByCode(_accountDetail.MemberCode); var accountCode = GlobalSettings.CodeOfInterestExpenseOnTimeDeposit; if (string.IsNullOrWhiteSpace(accountCode)) { return(new Result(false, GenerateCodeOfAccountNotSetMessage("Interest Expense On Time Deposit"))); } var account = Account.FindByCode(accountCode); var cv = new CashVoucher { MemberCode = member.MemberCode, MemberName = member.MemberName, AccountCode = account.AccountCode, AccountTitle = account.AccountTitle, Debit = interestEarned, VoucherDate = _voucherDocument.VoucherDate, VoucherNo = _voucherDocument.VoucherNo, }; var postResult = cv.Create(); if (!postResult.Success) { Rollback(); } return(postResult); }
private Result PostTimeDepositInterestEarned() { // post time desposit interest earned credit side var member = Nfmb.FindByCode(_accountDetail.MemberCode); var account = Account.FindByCode(_accountDetail.AccountCode); var previousDetail = _accountDetail.TimeDepositDetails; var asOf = GlobalSettings.DateOfOpenTransaction; var interestEarned = previousDetail.CalculateInterestEarned(asOf) - previousDetail.CalculateServiceFee(asOf); var tdDetails = SetNewTimeDepositDetails(); if (tdDetails == null) { return(new Result(false, "Time deposit details not set.")); } var jv = new JournalVoucher { MemberCode = member.MemberCode, MemberName = member.MemberName, AccountCode = account.AccountCode, AccountTitle = account.AccountTitle, Credit = interestEarned, VoucherDate = _voucherDocument.VoucherDate, VoucherNo = _voucherDocument.VoucherNo, TimeDepositDetails = tdDetails, }; var postResult = jv.Create(); if (!postResult.Success) { Rollback(); } return(postResult); }
public static LoanAmortizationHeader GenerateLoanAmortization( string codeMember, string codeAccount, decimal amountLoan, int termLoan, decimal rateAnnualInterest, System.DateTime grantedDate, decimal monthlyCapitalBuildUp) { var schedule = new LoanAmortizationHeader(); // Member Information var member = Nfmb.FindByCode(codeMember); schedule.MemberCode = member.MemberCode; schedule.MemberName = member.MemberName; schedule.MemberAddress = member.CompleteAddress(); // Account Information var account = Account.FindByCode(codeAccount); schedule.AccountCode = account.AccountCode; schedule.AccountTitle = account.AccountTitle; schedule.LoanAmount = amountLoan; schedule.MonthlyCapitalBuildUp = monthlyCapitalBuildUp; schedule.AnnualInterestRate = rateAnnualInterest; schedule.LoanTerm = termLoan; schedule.ModeOfPayment = "Monthly"; schedule.DateGranted = grantedDate; schedule.DateMaturity = grantedDate.AddMonths(termLoan); schedule.FirstPaymentDate = grantedDate.AddMonths(1); var monthlyInterest = System.Math.Round((amountLoan * (schedule.AnnualInterestRate / 12)), 2); var monthlyPayment = System.Math.Round((amountLoan / termLoan), 2); schedule.MonthlyAmortization = monthlyPayment + monthlyInterest + monthlyCapitalBuildUp; var runningBalance = amountLoan; for (int i = 1; i < termLoan; i++) { var item = new LoanAmortizationDetail(); item.PaymentDate = grantedDate.AddMonths(i); item.PaymentNo = i; item.BeginningBalance = runningBalance; item.Payment = monthlyPayment; item.Interest = monthlyInterest; item.CapitalBuildUp = schedule.MonthlyCapitalBuildUp; item.Amortization = item.Payment + monthlyInterest + item.CapitalBuildUp; item.EndingBalance = item.BeginningBalance - item.Payment; schedule.PaymentSchedules.Add(item); runningBalance = item.EndingBalance; } // Add final payment that, balancing discrepancies in monthly payment and amortization var lastpayment = new LoanAmortizationDetail(); lastpayment.PaymentDate = grantedDate.AddMonths(termLoan); lastpayment.PaymentNo = termLoan; lastpayment.BeginningBalance = runningBalance; lastpayment.Payment = amountLoan - schedule.PaymentSchedules.Sum(payment => payment.Payment); lastpayment.Interest = monthlyInterest; lastpayment.CapitalBuildUp = monthlyCapitalBuildUp; lastpayment.Amortization = lastpayment.Payment + monthlyInterest + lastpayment.CapitalBuildUp; lastpayment.EndingBalance = lastpayment.BeginningBalance - lastpayment.Payment; schedule.PaymentSchedules.Add(lastpayment); return(schedule); }
private void MemberCodeTextBoxOnLostFocus(object sender, RoutedEventArgs e) { var member = Nfmb.WhereMemberCodeIs(MemberCodeTextBox.Text); MemberNameTextBox.Text = member.MemberName; }
public Result Validate() { if (AmountAllocated <= 0m) { return(new Result(false, "Amount allocated is not valid.")); } if (MaintainingBalance <= 0m) { return(new Result(false, "Maintaining Balance is not valid.")); } if (JournalVoucherNumber <= 0) { return(new Result(false, "Journal Voucher Number is not valid.")); } if (string.IsNullOrEmpty(ShareCapitalCode)) { return(new Result(false, "Share Capital Code is required.")); } if (string.IsNullOrEmpty(InterestOnShareCapitalPayableCode)) { return(new Result(false, "Interest on Share Capital Payable Code is required.")); } if (string.IsNullOrEmpty(CooperativeCode)) { return(new Result(false, "Cooperative Code is required.")); } // with database related validation var collection = JournalVoucher.WhereDocumentNumberIs(JournalVoucherNumber); if (collection.Any()) { return(new Result(false, "Journal Voucher Number already in use.")); } _shareCapitalAccount = Account.FindByCode(ShareCapitalCode); if (string.IsNullOrEmpty(_shareCapitalAccount.AccountTitle)) { return(new Result(false, "Share Capital Code is not valid or does not exist.")); } _interestOnShareCapitalAccount = Account.FindByCode(InterestOnShareCapitalPayableCode); if (string.IsNullOrEmpty(_interestOnShareCapitalAccount.AccountTitle)) { return(new Result(false, "Interest on Share Capital Code is not valid or does not exist.")); } _cooperative = Nfmb.FindByCode(CooperativeCode); if (string.IsNullOrEmpty(_cooperative.MemberName)) { return(new Result(false, "Cooperatice Code is not valid or does not exist.")); } // after all the above validation succeeds then... return(new Result(true, "Valid.")); }
private void PostButtonOnClick(object sender, RoutedEventArgs e) { var result = _withdrawal.Validate(); if (!result.Success) { MessageWindow.ShowAlertMessage(result.Message); return; } #region --- Withdrawal Credit Side --- var voucher = new Voucher { VoucherDate = _withdrawal.WithdrawalSettings.TransactionDate, VoucherNo = _withdrawal.WithdrawalSettings.WithdrawalVoucherNo, VoucherType = VoucherTypes.CV }; var totalWithdrawals = Withdrawal.TotalWithdrawals(voucher.VoucherNo) + _withdrawal.WithdrawalAmount; result = Withdrawal.ReBalanceWithdrawals(voucher, totalWithdrawals); if (!result.Success) { MessageWindow.ShowAlertMessage(result.Message); return; } #endregion #region --- Withdrawal Debit Side --- var cv = new CashVoucher(); var member = Nfmb.FindByCode(_withdrawal.AccountInfo.MemberCode); cv.MemberCode = member.MemberCode; cv.MemberName = member.MemberName; var account = Account.FindByCode(_withdrawal.AccountInfo.AccountCode); cv.AccountCode = account.AccountCode; cv.AccountTitle = account.AccountTitle; cv.Debit = _withdrawal.WithdrawalAmount; cv.VoucherDate = voucher.VoucherDate; cv.VoucherNo = voucher.VoucherNo; cv.VoucherType = voucher.VoucherType; cv.WithdrawalSlipNo = _withdrawal.WithdrawalSlipNo; cv.Create(); #endregion #region --- Voucher Log --- var voucherLog = new VoucherLog(); voucherLog.Find("CV", cv.VoucherNo); voucherLog.Date = cv.VoucherDate; voucherLog.Initials = MainController.LoggedUser.Initials; voucherLog.Save(); #endregion var validationBuilder = new StringBuilder(); validationBuilder.AppendFormat("{0} {1} {2} {3} {4} {5:yyyy-MM-dd hh:mm:ss} {6}", cv.MemberCode, cv.AccountCode, cv.VoucherNo, cv.WithdrawalSlipNo, cv.Debit, DateTime.Now, MainController.LoggedUser.Initials); if (MessageWindow.ShowConfirmMessage("Print withdrawal validation?") == MessageBoxResult.Yes) { ReportController.PrintWitdrawalValidation(cv); } DialogResult = true; Close(); }
private void btnPost_Click(object sender, EventArgs e) { var collection = JournalVoucher.WhereDocumentNumberIs(_journalVoucher.VoucherNo); if (collection.Count > 0) { MessageWindow.ShowAlertMessage("JV No. already in use."); return; } try { btnPost.Content = "Posting, please wait..."; JournalVoucher jv; foreach (var item in _viewModel.Collection) { jv = new JournalVoucher(); jv.MemberCode = item.MemberCode; jv.MemberName = item.MemberName; jv.AccountCode = item.AccountCode; jv.AccountTitle = item.AccountTitle; jv.Credit = item.Credit; jv.VoucherDate = _journalVoucher.VoucherDate; jv.VoucherNo = _journalVoucher.VoucherNo; jv.VoucherType = VoucherTypes.JV; jv.IsPosted = true; jv.Create(); } // closing jv = new JournalVoucher(); var coop = Nfmb.FindByCode(GlobalSettings.CodeOfCompany); jv.MemberCode = coop.MemberCode; jv.MemberName = coop.MemberName; var intExpense = _viewModel.InterestExpenseOnSavingsDepositAccount; jv.AccountCode = intExpense.AccountCode; jv.AccountTitle = intExpense.AccountTitle; jv.Debit = _viewModel.Collection.Sum(voucher => voucher.Credit); jv.VoucherDate = _journalVoucher.VoucherDate; jv.VoucherNo = _journalVoucher.VoucherNo; jv.VoucherType = VoucherTypes.JV; jv.Explanation = "Savings Deposit interest posting"; jv.IsPosted = true; jv.Create(); #region --- Voucher Log --- var voucherLog = new VoucherLog(); voucherLog.Find("JV", _journalVoucher.VoucherNo); voucherLog.Date = _journalVoucher.VoucherDate; voucherLog.Initials = MainController.LoggedUser.Initials; voucherLog.Save(); #endregion btnPost.Content = string.Format("Posting Complete"); MessageWindow.ShowNotifyMessage("Interest on Savings Deposit succesfully posted!"); DialogResult = true; Close(); } catch (Exception exception) { MessageWindow.ShowAlertMessage(exception.Message); } }
private void FindBorrowerButtonClick(object sender, RoutedEventArgs e) { _borrower = MainController.SearchMember(); RefreshBorrowerInformation(); }
public LoanAmortizationWindow(Nfmb member) : this() { _member = member; }
public LoanApplicationWindow(Nfmb member) : this() { _borrower = member; RefreshBorrowerInformation(); }
public virtual void SetMember(Nfmb member) { MemberCode = member.MemberCode; MemberName = member.MemberName; }
public SalaryAdvanceView(Nfmb member) : this() { _member = member; }
private void InitializeData() { _loanAmortization = new LoanAmortization(); _loanProducts = LoanProduct.GetList(); _member = new Nfmb(); }