Exemple #1
0
        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);
            }
        }
Exemple #3
0
 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);
        }
Exemple #5
0
        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);
        }
Exemple #6
0
        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);
        }
Exemple #9
0
        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));
        }