private void SubmitPaymentAmount(PaymentType paymentType, ChangePaymentType changeTemplate, decimal paymentDueAmount, decimal tenderedAmount) { _applicationStateSetter.SetLastPaidItems(OrderSelector.GetSelectedItems()); var returningAmount = DisplayReturningAmount(tenderedAmount, paymentDueAmount, changeTemplate); if (changeTemplate == null) { tenderedAmount -= returningAmount; } var paymentAccount = paymentType.Account ?? GetAccountForTransaction(paymentType, SelectedTicket.TicketResources); _ticketService.AddPayment(SelectedTicket, paymentType, paymentAccount, tenderedAmount); if (tenderedAmount > paymentDueAmount && changeTemplate != null) { _ticketService.AddChangePayment(SelectedTicket, changeTemplate, changeTemplate.Account, tenderedAmount - paymentDueAmount); } NumberPadViewModel.LastTenderedAmount = (tenderedAmount / ExchangeRate).ToString("#,#0.00"); UpdatePaymentAmount(GetRemainingAmount()); if (returningAmount == 0 && GetRemainingAmount() == 0) { ClosePaymentScreen(); } else { OrderSelector.PersistSelectedItems(); RefreshValues(); } }
private void SubmitPaymentAmount(PaymentType paymentType, ChangePaymentType changeTemplate, decimal paymentDueAmount, decimal tenderedAmount) { var returningAmount = _returningAmountViewModel.GetReturningAmount(tenderedAmount, paymentDueAmount, changeTemplate); var paidAmount = (changeTemplate == null) ? tenderedAmount - returningAmount : tenderedAmount; var paymentAmount = paymentDueAmount > paidAmount ? paymentDueAmount - paidAmount : _paymentEditor.GetRemainingAmount(); _orderSelectorViewModel.UpdateSelectedTicketPaidItems(); _paymentEditor.UpdateTicketPayment(paymentType, changeTemplate, paymentDueAmount, paidAmount, tenderedAmount); _numberPadViewModel.LastTenderedAmount = (paidAmount / _paymentEditor.ExchangeRate).ToString(LocalSettings.ReportCurrencyFormat); _tenderedValueViewModel.UpdatePaymentAmount(paymentAmount); if (returningAmount == 0 && _paymentEditor.GetRemainingAmount() == 0) { OnClosePaymentScreen(""); } else { if (returningAmount > 0) { _returningAmountViewModel.PublishEvent(EventTopicNames.Activate); } if (paymentDueAmount <= paidAmount) { _orderSelectorViewModel.PersistSelectedItems(); } _numberPadViewModel.ResetValues(); RaisePropertyChanged(() => SelectedTicketTitle); } }
public void AddChangePayment(Ticket ticket, ChangePaymentType paymentType, Account account, decimal amount) { if (account == null) { return; } ticket.AddChangePayment(paymentType, account, amount, GetExchangeRate(account), _applicationState.CurrentLoggedInUser.Id); }
public ChangePaymentType GetChangePaymentTypeData(string officeNumber) { var result = new ChangePaymentType(); var companyId = OfficeHelper.GetCompanyId(officeNumber); var list = this.GetPaymentTypes(companyId); var office = new OfficeHelper().GetOfficeById(officeNumber); var paymentTypes = (from item in list orderby item.Description select item).ToList(); result.PaymentTypes = paymentTypes; result.PaymentDetails = new List <PaymentTransactionLite>(); result.PaymentDetails = this.GetDetails(officeNumber) as List <PaymentTransactionLite>; result.IsTodayClosed = new DailyClosingIt2Manager().IsTodayClosed(officeNumber, office.TimeZone, office.UseDST); return(result); }
private decimal DisplayReturningAmount(decimal tenderedAmount, decimal paymentDueAmount, ChangePaymentType changeTemplate) { var returningAmount = 0m; if (tenderedAmount > paymentDueAmount) { ReturningAmount = ""; returningAmount = (tenderedAmount - paymentDueAmount); if (changeTemplate != null) { var currency = _cacheService.GetForeignCurrencies().SingleOrDefault( x => x.Id == changeTemplate.Account.ForeignCurrencyId); ReturningAmount = string.Format(Resources.ChangeAmount_f, currency != null ? string.Format(currency.CurrencySymbol, returningAmount / currency.ExchangeRate) : returningAmount.ToString(LocalSettings.DefaultCurrencyFormat)); } } if (string.IsNullOrEmpty(ReturningAmount)) { ReturningAmount = string.Format(Resources.ChangeAmount_f, (returningAmount / ExchangeRate).ToString(LocalSettings.DefaultCurrencyFormat)); } ReturningAmountVisibility = returningAmount > 0 ? Visibility.Visible : Visibility.Collapsed; if (returningAmount != 0) { _automationService.NotifyEvent(RuleEventNames.ChangeAmountChanged, new { Ticket = SelectedTicket, TicketAmount = SelectedTicket.TotalAmount, ChangeAmount = returningAmount, TenderedAmount = tenderedAmount }); } return(returningAmount); }
public void UpdateTicketPayment(PaymentType paymentType, ChangePaymentType changeTemplate, decimal paymentDueAmount, decimal paidAmount, decimal tenderedAmount) { var paymentAccount = paymentType.Account ?? _ticketService.GetAccountForPayment(SelectedTicket, paymentType); if (paymentDueAmount > SelectedTicket.GetRemainingAmount() && paidAmount > SelectedTicket.GetRemainingAmount()) { var account = _accountBalances.GetActiveAccount(); if (account != null) { var ticketAmount = SelectedTicket.GetRemainingAmount(); var accountAmount = paidAmount - ticketAmount; var accountBalance = _accountBalances.GetAccountBalance(account.Id); if (accountAmount > accountBalance) { accountAmount = accountBalance; } if (ticketAmount > 0) { _ticketService.AddPayment(SelectedTicket, paymentType, paymentAccount, ticketAmount, tenderedAmount); } if (accountAmount > 0) { _ticketService.AddAccountTransaction(SelectedTicket, account, paymentAccount, accountAmount, ExchangeRate); } } _accountBalances.Refresh(); } else { _ticketService.AddPayment(SelectedTicket, paymentType, paymentAccount, paidAmount, tenderedAmount); if (paidAmount > paymentDueAmount && changeTemplate != null) { _ticketService.AddChangePayment(SelectedTicket, changeTemplate, changeTemplate.Account, paidAmount - paymentDueAmount); } } }
public string GetChangeAmountCaption(decimal paymentDueAmount, decimal tenderedAmount, ChangePaymentType changeTemplate) { var returningAmount = (tenderedAmount - paymentDueAmount); if (changeTemplate != null) { var currency = _cacheService.GetCurrencyById(changeTemplate.Account.ForeignCurrencyId); if (currency != null) { returningAmount = returningAmount / currency.ExchangeRate; return(string.Format(currency.CurrencySymbol, returningAmount)); } } return(returningAmount.ToString(LocalSettings.ReportCurrencyFormat)); }
public decimal GetReturningAmount(decimal tenderedAmount, decimal paymentDueAmount, ChangePaymentType changeTemplate) { var returningAmount = 0m; if (tenderedAmount > paymentDueAmount) { ReturningAmount = ""; returningAmount = (tenderedAmount - paymentDueAmount); if (changeTemplate != null) { var currency = _cacheService.GetCurrencyById(changeTemplate.Account.ForeignCurrencyId); ReturningAmount = string.Format(Resources.ChangeAmount_f, currency != null ? string.Format(currency.CurrencySymbol, returningAmount / currency.ExchangeRate) : returningAmount.ToString(LocalSettings.CurrencyFormat)); } } if (string.IsNullOrEmpty(ReturningAmount)) { ReturningAmount = string.Format(Resources.ChangeAmount_f, (returningAmount / _paymentEditor.ExchangeRate).ToString(LocalSettings.CurrencyFormat)); } if (returningAmount != 0) { _applicationState.NotifyEvent(RuleEventNames.ChangeAmountChanged, new { Ticket = _paymentEditor.SelectedTicket, TicketAmount = _paymentEditor.SelectedTicket.TotalAmount, ChangeAmount = returningAmount, TenderedAmount = tenderedAmount }); } return(returningAmount); }
private string GetChangeAmountCaption(decimal paymentDueAmount, decimal tenderedAmount, ChangePaymentType changeTemplate) { var returningAmount = (tenderedAmount - paymentDueAmount); if (changeTemplate != null) { var currency = _cacheService.GetForeignCurrencies().SingleOrDefault( x => x.Id == changeTemplate.Account.ForeignCurrencyId); if (currency != null) { returningAmount = returningAmount / currency.ExchangeRate; return(string.Format(currency.CurrencySymbol, returningAmount)); } } return(returningAmount.ToString(LocalSettings.DefaultCurrencyFormat)); }