Пример #1
0
        //Change Price
        void _buttonKeyChangePrice_Clicked(object sender, EventArgs e)
        {
            decimal oldValueQuantity = CurrentOrderDetails.Lines[_listStoreModelSelectedIndex].Properties.Quantity;
            decimal oldValuePrice    = CurrentOrderDetails.Lines[_listStoreModelSelectedIndex].Properties.PriceFinal;

            MoneyPadResult result        = PosMoneyPadDialog.RequestDecimalValue(_sourceWindow, Resx.window_title_dialog_moneypad_product_price, oldValuePrice);
            decimal        newValuePrice = result.Value;

            if (result.Response == ResponseType.Ok && newValuePrice > 0)
            {
                //Create a Fresh Object to Get Input Price and Calc from TotalFinal with Quantity 1, Without Touch Quantity in current Line
                PriceProperties priceProperties = PriceProperties.GetPriceProperties(
                    PricePropertiesSourceMode.FromTotalFinal,
                    CurrentOrderDetails.Lines[_listStoreModelSelectedIndex].Properties.PriceWithVat,
                    newValuePrice,
                    1.0m,
                    CurrentOrderDetails.Lines[_listStoreModelSelectedIndex].Properties.DiscountArticle,
                    CurrentOrderDetails.Lines[_listStoreModelSelectedIndex].Properties.DiscountGlobal,
                    CurrentOrderDetails.Lines[_listStoreModelSelectedIndex].Properties.Vat
                    );

                //Update orderDetails
                CurrentOrderDetails.Update(_listStoreModelSelectedIndex, oldValueQuantity, priceProperties.PriceUser);
                //Update TreeView Model Price
                _listStoreModel.SetValue(_treeIter, (int)TicketListColumns.Price, FrameworkUtils.DecimalToString(newValuePrice));
                //Update Total
                decimal totalLine = CurrentOrderDetails.Lines[_listStoreModelSelectedIndex].Properties.TotalFinal;
                _listStoreModel.SetValue(_treeIter, (int)TicketListColumns.Total, FrameworkUtils.DecimalToString(totalLine));
            }
            UpdateTicketListTotal();
        }
Пример #2
0
        public void CallKeyboard(object pBoxObject)
        {
            KeyboardMode keyboardMode = KeyboardMode.None;
            string       text         = string.Empty;
            string       rule         = string.Empty;
            int          position;

            if (pBoxObject.GetType() == typeof(EntryValidation))
            {
                keyboardMode = (pBoxObject as EntryValidation).KeyboardMode;
                text         = (pBoxObject as EntryValidation).Text;
                rule         = (pBoxObject as EntryValidation).Rule;
                position     = (pBoxObject as EntryValidation).Position;
            }
            else if (pBoxObject.GetType() == typeof(EntryMultiline))
            {
                keyboardMode = (pBoxObject as EntryMultiline).KeyboardMode;
                text         = (pBoxObject as EntryMultiline).TextView.Buffer.Text;
                position     = (pBoxObject as EntryMultiline).TextView.Buffer.CursorPosition;
            }

            if (keyboardMode == KeyboardMode.AlfaNumeric || keyboardMode == KeyboardMode.Alfa || keyboardMode == KeyboardMode.Numeric)
            {
                string input = Utils.GetVirtualKeyBoardInput(_sourceWindow, keyboardMode, text, rule);

                if (input != null)
                {
                    if (pBoxObject.GetType() == typeof(EntryValidation))
                    {
                        (pBoxObject as EntryValidation).Text = input;
                        (pBoxObject as EntryValidation).GrabFocus();
                        int end = (pBoxObject as EntryValidation).Text.Length;
                        (pBoxObject as EntryValidation).SelectRegion(end, end);
                    }
                    else if (pBoxObject.GetType() == typeof(EntryMultiline))
                    {
                        (pBoxObject as EntryMultiline).TextView.Buffer.Text = input;
                        (pBoxObject as EntryMultiline).TextView.GrabFocus();
                    }
                }
            }
            else if (keyboardMode == KeyboardMode.Money)
            {
                PosMoneyPadDialog dialog = new PosMoneyPadDialog(_sourceWindow, DialogFlags.DestroyWithParent, FrameworkUtils.StringToDecimal(text));
                int response             = dialog.Run();
                if (response == (int)ResponseType.Ok)
                {
                    string input = FrameworkUtils.DecimalToString(dialog.Amount);
                    if (input != null)
                    {
                        if (pBoxObject.GetType() == typeof(EntryValidation))
                        {
                            (pBoxObject as EntryValidation).Text = input;
                            (pBoxObject as EntryValidation).GrabFocus();
                        }
                        else if (pBoxObject.GetType() == typeof(EntryMultiline))
                        {
                            (pBoxObject as EntryMultiline).TextView.Buffer.Text = input;
                            (pBoxObject as EntryMultiline).TextView.GrabFocus();
                        }
                    }
                }
                dialog.Destroy();
            }
            //Always position cursor in End
            position = text.Length;
        }
Пример #3
0
        //Change Price
        void _buttonKeyChangePrice_Clicked(object sender, EventArgs e)
        {
            try
            {
                //Get Index of article with correct final price
                _listStoreModelSelectedIndex = _currentOrderDetails.Lines.FindIndex(item => item.ArticleOid == (Guid)_listStoreModel.GetValue(_treeIter,
                                                                                                                                              (int)TicketListColumns.ArticleId) && Math.Round(Convert.ToDecimal(item.Properties.PriceFinal), SettingsApp.DecimalRoundTo) == Convert.ToDecimal(_listStoreModel.GetValue(_treeIter, (int)TicketListColumns.Price)));

                decimal oldValueQuantity = CurrentOrderDetails.Lines[_listStoreModelSelectedIndex].Properties.Quantity;
                decimal oldValuePrice    = CurrentOrderDetails.Lines[_listStoreModelSelectedIndex].Properties.PriceFinal;

                MoneyPadResult result        = PosMoneyPadDialog.RequestDecimalValue(_sourceWindow, resources.CustomResources.GetCustomResources(GlobalFramework.Settings["customCultureResourceDefinition"], "window_title_dialog_moneypad_product_price"), oldValuePrice);
                decimal        newValuePrice = result.Value;

                if (result.Response == ResponseType.Ok && newValuePrice > 0)
                {
                    //Create a Fresh Object to Get Input Price and Calc from TotalFinal with Quantity 1, Without Touch Quantity in current Line
                    PriceProperties priceProperties = PriceProperties.GetPriceProperties(
                        PricePropertiesSourceMode.FromTotalFinal,
                        CurrentOrderDetails.Lines[_listStoreModelSelectedIndex].Properties.PriceWithVat,
                        newValuePrice,
                        1.0m,
                        CurrentOrderDetails.Lines[_listStoreModelSelectedIndex].Properties.DiscountArticle,
                        CurrentOrderDetails.Lines[_listStoreModelSelectedIndex].Properties.DiscountGlobal,
                        CurrentOrderDetails.Lines[_listStoreModelSelectedIndex].Properties.Vat
                        );
                    int countDuplicatedArticles = 0;
                    int i = 0;
                    foreach (var line in _currentOrderDetails.Lines)
                    {
                        if (_listStoreModelSelectedIndex == i)
                        {
                            countDuplicatedArticles++;
                        }
                        if (line.ArticleOid == CurrentOrderDetails.Lines[_listStoreModelSelectedIndex].ArticleOid && line.Properties.PriceUser == priceProperties.PriceUser)
                        {
                            countDuplicatedArticles++;
                        }
                        i++;
                    }

                    if (countDuplicatedArticles > 1)
                    {
                        int oldIndex = _listStoreModelSelectedIndex;
                        _listStoreModelSelectedIndex = _currentOrderDetails.Lines.FindIndex(item => item.ArticleOid == (Guid)_listStoreModel.GetValue(_treeIter, (int)TicketListColumns.ArticleId) &&
                                                                                            item.Properties.PriceFinal == priceProperties.PriceFinal);
                        oldValueQuantity += CurrentOrderDetails.Lines[_listStoreModelSelectedIndex].Properties.Quantity;
                        CurrentOrderDetails.Delete(oldIndex);
                        _listStoreModel.Remove(ref _treeIter);
                    }

                    //Update orderDetails
                    CurrentOrderDetails.Update(_listStoreModelSelectedIndex, oldValueQuantity, priceProperties.PriceUser);
                    //Update TreeView Model Price
                    _listStoreModel.SetValue(_treeIter, (int)TicketListColumns.Price, FrameworkUtils.DecimalToString(newValuePrice));
                    //Update Total
                    decimal totalLine = CurrentOrderDetails.Lines[_listStoreModelSelectedIndex].Properties.TotalFinal;
                    _listStoreModel.SetValue(_treeIter, (int)TicketListColumns.Total, FrameworkUtils.DecimalToString(totalLine));
                }
                UpdateTicketListTotal();
                UpdateModel();
                UpdateTicketListButtons();
            }
            catch (Exception ex)
            {
                _log.Error(ex.Message, ex);
            }
        }