public Order ReadOrder(XElement xElement, FrmOrders frmOrders) { var element = xElement.Element("Заказ"); if (element == null) return null; var orders = new Order { OrderNumber = element.Attribute("Номер").Value, OrderNumberId = element.Attribute("IdOrder").Value, NameGarcon = element.Attribute("Официант").Value, NameHall = element.Attribute("Зал").Value, NameTable = element.Attribute("Стол").Value, NamberOfQuests = element.Attribute("КоличествоГостей").Value, Name = element.Attribute("Номер").Value, }; //OrderItem item = null; var countTagGuid = 1; foreach (var p in element.Elements("СтрокаЗаказа")) { //Смотрим Стиль var kolichestvo = p.Attribute("Количество").Value; var bilaPechat = p.Attribute("БылаПечать").Value; var productId = p.Attribute("ТоварИД").Value; string templateName; //Выводим через RecordSet только с количеством "1", поэтому добавим только один такой if (kolichestvo == "1" && bilaPechat == "0") { var flag = p.Attribute("Модификатор").Value != ""; templateName = flag ? RecSets.MarkerOrder.POPUPORDERChecked + productId : RecSets.MarkerOrder.POPUPORDER + productId; } else { templateName = countTagGuid.ToString(CultureInfo.InvariantCulture); countTagGuid++; } string tagGuid; try { //todo оставить два id tagGuid = orders.FindIdTagGuid(templateName).Id; tagGuid = countTagGuid.ToString(CultureInfo.InvariantCulture); countTagGuid++; } catch (Exception) { tagGuid = templateName; } var modifiers = frmOrders.BuilModifiers(productId); if(modifiers == null) { Logger.Info("Ошибка получения модификаторов для Ид: {0}. Строка: {1}. Заказ: {2}", productId, p.ToString(), xElement.ToString()); } var itemOrders = new OrderItem { Id = productId, NumberLine = p.Attribute("НомерСтроки").Value, Name = p.Attribute("Товар").Value, Kolichestvo = kolichestvo, Predchek = p.Attribute("БылПредчек").Value, BilaPechat = bilaPechat, Price = p.Attribute("Цена").Value, TagGuid = tagGuid, //Modifiers = frmOrders.BuilModifiers(p.Attribute("ТоварИД").Value), Modifiers = modifiers, SumDiscaunt = p.Attribute("СуммаСкидки").Value, PercentDiscaunt = p.Attribute("ПроцентСкидки").Value }; //orders.AddComponent(item); //todo добавлено для многочековых столов, теперь стол расчитан небывает if (itemOrders.Predchek == "1") frmOrders._dg.Calc = true; var stringModifiers = p.Attribute("Модификатор").Value; if (stringModifiers != "") { char[] delimiterChars = {','}; var modifier = stringModifiers.Split(delimiterChars); foreach (var s in modifier) { for (var md = 0; md < itemOrders.Modifiers.Count; md++) { var string1 = s.Replace(" ", ""); var string2 = itemOrders.Modifiers.ElementAt(md).Value.Name.Replace(" ", ""); if (string1 == string2) { var key = itemOrders.Modifiers.ElementAt(md).Key; var mod = itemOrders.Modifiers[key]; mod.Select = true; itemOrders.Modifiers.Remove(key); itemOrders.Modifiers.Add(key, mod); } } } } orders.AddComponent(itemOrders); } return orders; }
public Order ReadOrderOldModificators(XElement xElement, FrmOrders frmOrders) { var element = xElement.Element("Заказ"); if (element == null) return null; var orders = new Order { OrderNumber = element.Attribute("Номер").Value, OrderNumberId = element.Attribute("IdOrder").Value, NameGarcon = element.Attribute("Официант").Value, NameHall = element.Attribute("Зал").Value, NameTable = element.Attribute("Стол").Value, NamberOfQuests = element.Attribute("КоличествоГостей").Value, Name = element.Attribute("Номер").Value, }; OrderItem item = null; var countTagGuid = 1; foreach (var p in element.Elements("СтрокаЗаказа")) { //Надо добавить блюдо, к нему модификаторы из меню, //а затем изменить их согласно ордера if (p.Attribute("Модификатор").Value == "Нет") { //Смотрим Стиль var kolichestvo = p.Attribute("Количество").Value; var bilaPechat = p.Attribute("БылаПечать").Value; var productId = p.Attribute("ТоварИД").Value; string templateName; //Выводим через RecordSet только с количеством "1", поэтому добавим только один такой if (kolichestvo == "1" && bilaPechat == "0") { bool flag; //Проверим наличие выделенных модификаторов и добавим Стиль try { flag = p.ElementsAfterSelf().First().Attribute("Модификатор").Value == "Да"; } catch (Exception) { flag = false; } templateName = flag ? RecSets.MarkerOrder.POPUPORDERChecked + productId : RecSets.MarkerOrder.POPUPORDER + productId; } else { templateName = countTagGuid.ToString(CultureInfo.InvariantCulture); countTagGuid++; } string tagGuid; try { //todo оставить два id tagGuid = orders.FindIdTagGuid(templateName).Id; tagGuid = countTagGuid.ToString(CultureInfo.InvariantCulture); countTagGuid++; } catch (Exception) { tagGuid = templateName; } var modifiers = frmOrders.BuilModifiers(productId); if (modifiers == null) { Logger.Info("Ошибка получения модификаторов для Ид: {0}. Строка: {1}. Заказ: {2}", productId, p.ToString(), xElement.ToString()); } item = new OrderItem { Id = productId, NumberLine = p.Attribute("НомерСтроки").Value, Name = p.Attribute("Товар").Value, Kolichestvo = kolichestvo, Predchek = p.Attribute("БылПредчек").Value, BilaPechat = bilaPechat, Price = p.Attribute("Цена").Value, TagGuid = tagGuid, //Modifiers = frmOrders.BuilModifiers(p.Attribute("ТоварИД").Value), Modifiers = modifiers, SumDiscaunt = p.Attribute("СуммаСкидки").Value, PercentDiscaunt = p.Attribute("ПроцентСкидки").Value }; orders.AddComponent(item); //todo добавлено для многочековых столов, теперь стол расчитан небывает if (item.Predchek == "1") frmOrders._dg.Calc = true; } //Это модификатор. Изменяем модификаторы в CurrentOrder else { if (item == null) continue; try { var str = item.Modifiers[p.Attribute("ТоварИД").Value]; item.Modifiers.Remove(p.Attribute("ТоварИД").Value); str.Select = true; item.Modifiers.Add(p.Attribute("ТоварИД").Value, str); } catch (Exception) { Logger.Info("ERROR!! МОДИФИКАТОР ОТСУТСТВУЕТ блюдо {0}, модификатор {1}, Ид модификатора {2}", item.Name, p.Attribute("Товар").Value, p.Attribute("ТоварИД").Value); } } } return orders; }