//Счетчик к-ва одного блюда +/- protected void AddCountDish(string dish, string id, float count, string marker) { var value = new Specification { Count = count, NameDish = dish, Marker = marker, IdDish = id}; //Уберем вставку из старого чека по "НомерСтроки" if (id.Length < 3) { AddCountToXmlOrder(count, id); return; } var temp = _order.Dish[id]; value.Modifikators = temp.Modifikators; _order.Dish.Remove(id); _order.Dish.Add(id, value); }
//По нажатию на меню public Item AddItem(ListCellButtonClickEventArgs e) { var c = new Item(); //Cells из меню, у них другой порядок !!!!! c.ItemLine.Add("1"); //Count c.ItemLine.Add(e.Item.Cells[0].Value.ToString()); //Name c.ItemLine.Add(e.Item.Cells[1].Value.ToString()); //Id c.ItemLine.Add(MenuXml.GetMarker(e.Item.Cells[1].Value.ToString()));//Marker //Блюдо может быть нажато повторно //тогда оно не полезет в Dictionary //будет исключение var value = new Specification { Count = 1, NameDish = e.Item.Cells[0].Value.ToString(), Marker = e.Item.TemplateName }; try { _order.Dish.Add(e.Item.Cells[1].Value.ToString(), value); } catch (Exception) { return null; } return c; }
private void OrderFromCach(IEnumerable<CardItem> list) { //Грузим последний в окно //_lblHeader.Text = string.Format("Order - {0}", DG.OrderTable.Element("Заказ").Attribute("НомерЗаказа").Value); foreach (var p in list) { var item = new ListItem(_lstOrders.Group.Definition); item.Cells[0].Value = p.Count; item.Cells[1].Value = p.Name; item.Cells[2].Value = p.Id; item.TemplateName = p.Template; item.Tag = p.Tag; _lstOrders.Group.Add(item); } //Восстанавливаем Dish var dish = DG.CachingDich[DG.TableN]; foreach (var p in dish) { var temp = new Specification { Count = p.Count, NameDish = p.Name, Marker = p.Marker, IdDish = p.IdDish, Modifikators = p.Modifikators }; _order.Dish.Add(p.Key, temp); } }
//При нажатии в меню добавляем блюдо в чек private void AddLineToOrderScreen(string dish, string id, string count, bool print, bool addDish, bool children) { //Вычисляем маркер //PRINTON - серый //PRINTOFF- красный/нередактируемый //Defaul - обычный //POPUPORDER - c Модификатор var marker = print ? "PRINTOFF" : "Default"; if ((id.Length < 3) && (!print)) marker = "PRINTON"; //можно править if (children && (id.Length < 3)) marker = "PRINTOFFPOPUP"; //блюдо в чеке с детьми и можно править if (children && (id.Length > 3)) marker = "POPUPORDER"; //блюдо в меню с детьми if(print) marker = "PRINTOFF"; //Выходим, если стол красный "CALCULATE" if (DG.Calc && addDish) { MessageBox.Show(this.Device, "Этот стол рассчитан!", MessageBoxButtons.OKAY, null, null); return; } //Блюдо может быть нажато повторно //тогда оно не полезет в Dictionary //будет исключение var guidKey = id; if (addDish) //Старые не заносим в Dish { //записываем id, будем использовать в GetPrice(id) var value = new Specification {Count = 1, NameDish = dish, Marker = marker, IdDish = id}; try { _order.Dish.Add(id, value); } catch (Exception) { //Надо засунуть в словарь повторно, если есть Модификатор if(!children) return; //Добавляем в List строя ключь Random guidKey = Guid.NewGuid().ToString(); _order.Dish.Add(guidKey, value); //todo Теряем Id } } var item = new ListItem(_lstOrders.Group.Definition); item.Cells[0].Value = count; item.Cells[1].Value = dish; //Если блюдо из старого чека, нас интересует не id, а НомерСтроки из Orders.xml //это будем отслеживать при нажатии и править DataGarcon.OrderTable //Cells[2] - используем для идентификации в заказе - это строка item.Cells[2].Value = id; item.Tag = guidKey; //Засовываем в Tag старый Ид или новое значение item.TemplateName = marker; _lstOrders.Group.Add(item); //PushList(addDish); //todo раскоментировать, если добавлять вверх списка }
private void ChangeCount(ListCellGestureEventArgs e, int count) { e.Item.Cells[0].Value = count.ToString(); var id = e.Item.Cells[2].Value.ToString(); var value = new Specification { Count = count, NameDish = e.Item.Cells[1].Value.ToString() }; //XML нет в Dish if (e.Item.Cells[2].Value.ToString().Length < 3) return; _order.Dish.Remove(id); _order.Dish.Add(id, value); }