//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(); }
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; }
//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); } }