public ChangeGoods(ЗаказаноТоваров i) { InitializeComponent(); l1.Content = i.КодТовара; bCancel.Click += BCancel_Click; bOK.Click += BOK_Click; }
private void Dg1_SelectionChanged(object sender, SelectionChangedEventArgs e) { //выводим наименование товара в окно var res3 = context3.СкладТоваров; var cur1 = dg1.SelectedItem; if (cur1 != null) { ЗаказаноТоваров cur2 = dg1.SelectedItem as ЗаказаноТоваров; foreach (СкладТоваров item in res3) { if (cur2 == null) { break; } else if (cur2.КодТовара == item.КодТовара) { tb2.Text = item.Наименование; break; } } } }
private void DelOrderedItem_Click(object sender, RoutedEventArgs e) //Удаление товара из заказа { var s = context1.СкладТоваров; int num = 0; int id = 0; var sel = dg2.SelectedItem; Заказы o = sel as Заказы; if (dg1.SelectedItem == null || dg2.SelectedItem == null) { MessageBox.Show("Выберите товар!", "Внимание!", MessageBoxButton.OK, MessageBoxImage.Exclamation); } else { if (o.СостояниеID != 4) { ЗаказаноТоваров product = dg1.SelectedItem as ЗаказаноТоваров; num = product.Количество; id = product.КодТовара; context1.ЗаказаноТоваров.Remove(product); context1.SaveChanges(); dg1.ItemsSource = null; dg1.Items.Clear(); Заказы order = dg2.SelectedItem as Заказы; foreach (СкладТоваров it in s) { if (it.КодТовара == id) { it.Остаток += num; } } context1.SaveChanges(); var ar = context1.ЗаказаноТоваров; List <ЗаказаноТоваров> l = new List <ЗаказаноТоваров>(); foreach (ЗаказаноТоваров item in ar) { if (order.ЗаказID == item.ЗаказID) { l.Add(item); } } dg1.ItemsSource = l; dg1.Items.Refresh(); string str = String.Format("Вернули на склад товар в количестве {0} единиц!", num); MessageBox.Show(str, "Внимание!", MessageBoxButton.OK, MessageBoxImage.Information); MessageBox.Show("Товар удален из заказа!", "Готово!", MessageBoxButton.OK, MessageBoxImage.Information); if (dg2.SelectedItem != null & dg1.HasItems == false) { int client = order.КлиентID; var k = context1.Клиенты; foreach (Клиенты i in k) { if (i.КлиентID == client) { context1.Клиенты.Remove(i); MessageBox.Show("Клиент удален", "Внимание!"); } } context1.Заказы.Remove(order); MessageBox.Show("Заказ удален, так как товаров в заказе нет", "Внимание!"); context1.SaveChanges(); dg2.ItemsSource = null; dg2.Items.Remove(dg2.SelectedItem); var show2 = context1.Заказы.ToList(); foreach (Заказы item in show2) { dg2.Items.Add(item); } dg2.Items.Refresh(); dg1.Items.Refresh(); } } else { MessageBox.Show("Нельзя удалить товар в заказе, который уже доставлен!!!", "Ошибка!", MessageBoxButton.OK, MessageBoxImage.Error); } } }
private void Add_order_Click(object sender, RoutedEventArgs e) //добавление заказа { //ищем свободных клиентов в таблице и заносим int count; List <string> clients = new List <string>(); var r1 = context1.Клиенты; var rez = context2.Заказы; foreach (Клиенты item1 in r1) { count = 0; foreach (Заказы item2 in rez) { if (item2.КлиентID == item1.КлиентID) { count++; break; } } if (count == 0) { clients.Add(item1.ФИО); } } //добавляем список состояний List <string> stat = new List <string>(); var r2 = context3.СостояниеЗаказа; foreach (СостояниеЗаказа item3 in r2) { stat.Add(item3.Состояние); } //добавляем список водил List <string> driv = new List <string>(); var r3 = context1.Водители; foreach (Водители item4 in r3) { driv.Add(item4.ФИО); } //добавляем список транспорта List <string> transp = new List <string>(); var r4 = context1.ТранспортноеСредство; foreach (ТранспортноеСредство item5 in r4) { transp.Add(item5.Марка); } //добавляем список товаров List <string> goods1 = new List <string>(); var r5 = context4.СкладТоваров; foreach (СкладТоваров item6 in r5) { goods1.Add(item6.Наименование); } int clienID = 0; int sostID = 0; int carID = 0; int driverID = 0; DialAddOrder dial = new DialAddOrder(clients, stat, driv, transp, goods1); if (dial.ShowDialog() == true) { foreach (Клиенты i in r1) { if (i.ФИО == dial.klient) { clienID = i.КлиентID; } } foreach (СостояниеЗаказа itm in r2) { if (itm.Состояние == dial.sostoyanie) { sostID = itm.СостояниеID; } } foreach (ТранспортноеСредство item in r4) { if (item.Марка == dial.transport) { carID = item.ТрСредствоID; } } foreach (Водители it in r3) { if (it.ФИО == dial.vodila) { driverID = it.ВодительID; } } int zakazID = 0; if (dial.DataDostavki == "") { Заказы addZakaz = new Заказы { СрокПоставки = DateTime.Parse(dial.SrokPostavki), ДатаЗаказа = DateTime.Parse(dial.DataZakaza), КлиентID = clienID, МестоНазначения = dial.mestoNaznachenia, СостояниеID = sostID, ТрСредствоID = carID, ВодительID = driverID }; context1.Заказы.Add(addZakaz); context1.SaveChanges(); zakazID = addZakaz.ЗаказID; } else { Заказы addZakaz = new Заказы { СрокПоставки = DateTime.Parse(dial.SrokPostavki), ДатаЗаказа = DateTime.Parse(dial.DataZakaza), КлиентID = clienID, МестоНазначения = dial.mestoNaznachenia, СостояниеID = sostID, ДатаДоставки = DateTime.Parse(dial.DataDostavki), ТрСредствоID = carID, ВодительID = driverID }; context1.Заказы.Add(addZakaz); context1.SaveChanges(); zakazID = addZakaz.ЗаказID; } hTable = dial.l; int mass = 1; decimal rascenka = 1; int kodID = 0; int kolichestvoTovara = 0; foreach (DictionaryEntry i in hTable) { foreach (СкладТоваров item in r5) { if (item.Наименование == (string)i.Key) { kodID = item.КодТовара; kolichestvoTovara = int.Parse(i.Value.ToString()); } } СкладТоваров deletFromSklad = context1.СкладТоваров.Find(kodID); deletFromSklad.Остаток = deletFromSklad.Остаток - kolichestvoTovara; if (deletFromSklad == null || deletFromSklad.Остаток < 0) { MessageBox.Show("Ошибка по складу товаров!", "Внимание!", MessageBoxButton.OK, MessageBoxImage.Error); deletFromSklad.Остаток = deletFromSklad.Остаток + kolichestvoTovara; endOperationOK = false; Заказы delZakaz = context1.Заказы.Find(zakazID); context1.Заказы.Remove(delZakaz); context1.SaveChanges(); break; } else { ЗаказаноТоваров addTovari = new ЗаказаноТоваров { ЗаказID = zakazID, КодТовара = kodID, асценкаТоннЗаКм = rascenka, Количество = kolichestvoTovara, Масса = mass }; context1.ЗаказаноТоваров.Add(addTovari); context1.SaveChanges(); endOperationOK = true; } } if (endOperationOK == true) { var success = context1.Заказы; dg2.Items.Clear(); foreach (Заказы item in success) { dg2.Items.Add(item); } MessageBox.Show("Заказ успешно добавлен", "Успех!", MessageBoxButton.OK, MessageBoxImage.Information); } } }
private void Ordered_items_Click(object sender, RoutedEventArgs e) { if (dg1.SelectedItem != null) { var it = dg1.SelectedItem; if (it is ЗаказаноТоваров) { ЗаказаноТоваров tovar = it as ЗаказаноТоваров; ChangeGoods dial = new ChangeGoods(tovar); int currentNumber = tovar.Количество; int ostatok = 0; if (dial.ShowDialog() == true) { int m = dial.Mass; decimal c = dial.Cost; int n = dial.Number; if (m != 0) { tovar.Масса = m; } if (c != 0) { tovar.асценкаТоннЗаКм = c; } if (n != 0) { tovar.Количество = n; var rez1 = context1.СкладТоваров; foreach (СкладТоваров item in rez1) { if (item.КодТовара == tovar.КодТовара) { if (currentNumber > n) { currentNumber = currentNumber - n; item.Остаток = item.Остаток + currentNumber; ostatok = item.Остаток; } else if (currentNumber < n) { currentNumber = n - currentNumber; item.Остаток = item.Остаток - currentNumber; ostatok = item.Остаток; } } } } context1.SaveChanges(); dg1.Items.Refresh(); var showOstatok = context1.СкладТоваров; foreach (СкладТоваров i in showOstatok) { if (i.КодТовара == tovar.КодТовара) { ostatok = i.Остаток; } } MessageBox.Show("Остаток на складе = " + ostatok, "Внимание", MessageBoxButton.OK, MessageBoxImage.Information); MessageBox.Show("Данные о товаре изменены!", "Успех", MessageBoxButton.OK, MessageBoxImage.Information); } } } else { MessageBox.Show("Сначала выделите товар в таблице, данные о котором хотите изменить!", "Внимание", MessageBoxButton.OK, MessageBoxImage.Information); } }
private async void Add_Click(object sender, RoutedEventArgs e) { await context1.ЗаказаноТоваров.LoadAsync(); var r = context1.СкладТоваров; var r2 = context1.ЗаказаноТоваров.ToArray(); if (tb.Text == "" & gb.SelectedItem == null) { MessageBox.Show("Ошибка ввода!", "Внимание!", MessageBoxButton.OK, MessageBoxImage.Error); } else if (tb.Text != "" || gb.SelectedItem != null) { if (tb.Text == "") { MessageBox.Show("Введите число!", "Внимание!", MessageBoxButton.OK, MessageBoxImage.Error); } else if (gb.SelectedItem == null) { MessageBox.Show("Выберите товар!", "Внимание!", MessageBoxButton.OK, MessageBoxImage.Error); } else { foreach (СкладТоваров i3 in r) { if (i3.Наименование == (string)gb.SelectedItem) { if (i3.Остаток - int.Parse(tb.Text) < 0) { MessageBox.Show("Нехватка товара на складе!", "Внимание!", MessageBoxButton.OK, MessageBoxImage.Error); flag = true; } else { flag = false; } } } if (flag == false) { string item = gb.SelectedItem as string; foreach (ЗаказаноТоваров i in lst) { if (i.СкладТоваров.Наименование == item) { i.Количество += int.Parse(tb.Text); //await context1.SaveChangesAsync(); alreadyAdded = true; break; } if (alreadyAdded == false) { foreach (ЗаказаноТоваров i2 in r2) { if (i2.СкладТоваров.Наименование == item) { product = new ЗаказаноТоваров { ЗаказID = order1.ЗаказID, КодТовара = i2.КодТовара, Количество = int.Parse(tb.Text), Масса = 2, асценкаТоннЗаКм = 1 }; } } } } if (product != null & alreadyAdded == false) { context1.ЗаказаноТоваров.Add(product); product = null; } try { await context1.SaveChangesAsync(); alreadyAdded = false; MessageBox.Show("Товар добавлен в заказ!", "Готово!", MessageBoxButton.OK, MessageBoxImage.Information); } catch (System.Data.Entity.Infrastructure.DbUpdateException) { MessageBox.Show("Товар добавить не удалось, попробуйте заново войти в меню, чтобы добавить товар!", "Ошибка добавления товара", MessageBoxButton.OK, MessageBoxImage.Error); } } } } }
private async void BOk_Click(object sender, RoutedEventArgs e) { if (rbSave.IsChecked is true) { XDocument xdoc = new XDocument(); XElement xroot = new XElement("Заказы"); XElement orders = new XElement("Товары"); var rez = context1.Заказы; var rez2 = context2.ЗаказаноТоваров; var rez3 = context3.СостояниеЗаказа; var rez4 = context4.Клиенты; var rez5 = context5.Водители; var rez6 = context6.ТранспортноеСредство; foreach (Заказы i in rez) { //Первый элемент XElement elId = new XElement("Заказ"); //Элементы этого элемента XElement elDataDostavki; XAttribute elAttr = new XAttribute("id", i.ЗаказID.ToString()); XElement elSrokPostavki = new XElement("СрокПоставки", i.СрокПоставки.ToShortDateString()); if (i.ДатаДоставки != null) { elDataDostavki = new XElement("ДатаДоставки", i.ДатаДоставки.Value.ToShortDateString()); } else { elDataDostavki = new XElement("ДатаДоставки", ""); } XElement elDataZakaza = new XElement("ДатаЗаказа", i.ДатаЗаказа.ToShortDateString()); XElement elDestinationPlace = new XElement("МестоНазначения", i.МестоНазначения.ToString()); elId.Add(elAttr); elId.Add(elSrokPostavki); elId.Add(elDataDostavki); elId.Add(elDataZakaza); elId.Add(elDestinationPlace); //данные о заказанных товарах foreach (ЗаказаноТоваров i2 in rez2) { if (i.ЗаказID == i2.ЗаказID) { XElement elOrderedItem = new XElement("Товар"); XAttribute elAttrItem = new XAttribute("id", i2.КодТовара.ToString()); XElement elItemWeightCost = new XElement("РасценкаТоннЗаКм", i2.асценкаТоннЗаКм); XElement elItemAmount = new XElement("Количество", i2.Количество); XElement elItemWeigth = new XElement("Масса", i2.Масса); //Привязка к товару elOrderedItem.Add(elAttrItem); elOrderedItem.Add(elItemWeightCost); elOrderedItem.Add(elItemAmount); elOrderedItem.Add(elItemWeigth); //вставляем данные о заказанных товарах в одному заказу orders = new XElement(elOrderedItem); ///обязательно через NEW!!!!!!!!!!!!!!!! //вставляем данные с товарами о заказе elId.Add(orders); } } //СОстояние товара foreach (СостояниеЗаказа i3 in rez3) { if (i.СостояниеID == i3.СостояниеID) { XElement elStat = new XElement("СостояниеЗаказа"); XAttribute elAtt = new XAttribute("id", i3.СостояниеID.ToString()); XElement elStatName = new XElement("Состояние", i3.Состояние.ToString()); elStat.Add(elAtt); elStat.Add(elStatName); elId.Add(elStat); } } //Клиент заказа foreach (Клиенты i4 in rez4) { if (i.КлиентID == i4.КлиентID) { XElement elClient = new XElement("Клиент"); XAttribute elAttCli = new XAttribute("id", i4.КлиентID.ToString()); XElement elFIO = new XElement("ФИО", i4.ФИО.ToString()); XElement elTel = new XElement("Телефон", i4.Телефон.ToString()); XElement elAdress = new XElement("Адрес", i4.Адрес.ToString()); elClient.Add(elAttCli); elClient.Add(elFIO); elClient.Add(elTel); elClient.Add(elAdress); //Добавляем клиента elId.Add(elClient); } } //Водитель foreach (Водители i5 in rez5) { if (i.ВодительID == i5.ВодительID) { XElement elDriver = new XElement("Водитель"); XAttribute elAttDri = new XAttribute("id", i5.ВодительID.ToString()); XElement elFIOdriver = new XElement("ФИО", i5.ФИО); XElement elTeldriver = new XElement("МобТелефон", i5.МобТелефон); elDriver.Add(elAttDri); elDriver.Add(elFIOdriver); elDriver.Add(elTeldriver); elId.Add(elDriver); } } //Грузовик foreach (ТранспортноеСредство i6 in rez6) { if (i.ТрСредствоID == i6.ТрСредствоID) { XElement elCar = new XElement("Грузовик"); XAttribute elAttCar = new XAttribute("id", i6.ТрСредствоID.ToString()); XElement elCarType = new XElement("Марка", i6.Марка); XElement elCarWeight = new XElement("Грузоподъемность", i6.Грузоподъемность); elCar.Add(elAttCar); elCar.Add(elCarType); elCar.Add(elCarWeight); elId.Add(elCar); } } //Добалвяем в корень данные из таблицы Заказы xroot.Add(elId); } //Запись в документ xdoc.Add(xroot); //Сохраняем документ xdoc.Save("Data1.xml"); //Сообщение об успешном сохранении в файл MessageBox.Show("Данные были успешно сохранены.", "Окей", MessageBoxButton.OK, MessageBoxImage.Information); DialogResult = true; } //чтение из файла if (rbLoad.IsChecked is true) { DriverId = 0; clientId = 0; CarId = 0; flag = false; flagCar = false; var col = context1.Заказы; XDocument xdoc = XDocument.Load("Data1.xml"); var xroot = xdoc.Root; //Заказы Заказы order; int orderId; //Обход коллекции Заказы foreach (XElement el in xdoc.Element("Заказы").Elements("Заказ")) //ищем по порядку { //обнуляем флаги и состояния DriverId = 0; clientId = 0; CarId = 0; flag = false; flagCar = false; int item = int.Parse(el.Attribute("id").Value); order = col.FirstOrDefault(s => s.ЗаказID == item);// ищем id заказа в базе if (order == null) { //Если ID заказа нет в xml файле, добавляем, данные о клиенте, затем, сам заказ, затем товары и все остальное... //Добаляем клента Клиенты addClient = new Клиенты { //КлиентID = int.Parse(el.Element("Клиент").Attribute("id").Value), ФИО = el.Element("Клиент").Element("ФИО").Value, Адрес = el.Element("Клиент").Element("Адрес").Value, Телефон = el.Element("Клиент").Element("Телефон").Value }; context1.Клиенты.Add(addClient); context1.SaveChanges(); clientId = addClient.КлиентID; var dr = context1.Водители; //Проверяем наличие водителей foreach (Водители drivers in dr) { if (drivers.ФИО == el.Element("Водитель").Element("ФИО").Value) { flag = true; break; } } //Проверяем наличие транпортного средства var ts = context1.ТранспортноеСредство; foreach (ТранспортноеСредство t in ts) { if (t.Марка == el.Element("Грузовик").Element("Марка").Value) { flagCar = true; break; } } if (flag == false) //Если водителя нет в базе { if (flagCar) //если машина в базе { CarId = int.Parse(el.Element("Грузовик").Attribute("id").Value); } if (flagCar == false) //иначе... { ТранспортноеСредство car = new ТранспортноеСредство { Марка = el.Element("Грузовик").Element("Марка").Value, Грузоподъемность = double.Parse(el.Element("Грузовик").Element("Грузоподъемность").Value) }; context1.ТранспортноеСредство.Add(car); context1.SaveChanges(); CarId = car.ТрСредствоID; } //Добавляем водителя Водители addDriver = new Водители { ФИО = el.Element("Водитель").Element("ФИО").Value, МобТелефон = el.Element("Водитель").Element("МобТелефон").Value }; context1.Водители.Add(addDriver); context1.SaveChanges(); DriverId = addDriver.ВодительID; //Добавляем сам заказ с новым водителем if (el.Element("ДатаДоставки").Value != "") { Заказы addOrder = new Заказы { //ЗаказID = int.Parse(el.Attribute("id").Value), СрокПоставки = DateTime.Parse(el.Element("СрокПоставки").Value).Date, ДатаДоставки = DateTime.Parse(el.Element("ДатаДоставки").Value).Date, ДатаЗаказа = DateTime.Parse(el.Element("ДатаЗаказа").Value).Date, МестоНазначения = el.Element("МестоНазначения").Value, ВодительID = DriverId, СостояниеID = int.Parse(el.Element("СостояниеЗаказа").Attribute("id").Value), ТрСредствоID = CarId, КлиентID = clientId }; context1.Заказы.Add(addOrder); context1.SaveChanges(); orderId = addOrder.ЗаказID; } else { Заказы addOrder = new Заказы { // ЗаказID = int.Parse(el.Attribute("id").Value), СрокПоставки = DateTime.Parse(el.Element("СрокПоставки").Value).Date, ДатаЗаказа = DateTime.Parse(el.Element("ДатаЗаказа").Value).Date, МестоНазначения = el.Element("МестоНазначения").Value, ВодительID = DriverId, СостояниеID = int.Parse(el.Element("СостояниеЗаказа").Attribute("id").Value), ТрСредствоID = CarId, КлиентID = clientId }; context1.Заказы.Add(addOrder); context1.SaveChanges(); orderId = addOrder.ЗаказID; } } else //если водитель есть в базе { if (flagCar) //если машина в базе { CarId = int.Parse(el.Element("Грузовик").Attribute("id").Value); } if (flagCar == false) //иначе... { ТранспортноеСредство car = new ТранспортноеСредство { Марка = el.Element("Грузовик").Element("Марка").Value, Грузоподъемность = double.Parse(el.Element("Грузовик").Element("Грузоподъемность").Value) }; context1.ТранспортноеСредство.Add(car); context1.SaveChanges(); CarId = car.ТрСредствоID; } //Добавляем сам заказ if (el.Element("ДатаДоставки").Value != "") { Заказы addOrder = new Заказы { СрокПоставки = DateTime.Parse(el.Element("СрокПоставки").Value).Date, ДатаДоставки = DateTime.Parse(el.Element("ДатаДоставки").Value).Date, ДатаЗаказа = DateTime.Parse(el.Element("ДатаЗаказа").Value).Date, МестоНазначения = el.Element("МестоНазначения").Value, ТрСредствоID = CarId, ВодительID = int.Parse(el.Element("Водитель").Attribute("id").Value), СостояниеID = int.Parse(el.Element("СостояниеЗаказа").Attribute("id").Value), КлиентID = clientId }; context1.Заказы.Add(addOrder); context1.SaveChanges(); orderId = addOrder.ЗаказID; } else { Заказы addOrder = new Заказы { СрокПоставки = DateTime.Parse(el.Element("СрокПоставки").Value).Date, ДатаЗаказа = DateTime.Parse(el.Element("ДатаЗаказа").Value).Date, МестоНазначения = el.Element("МестоНазначения").Value, ВодительID = int.Parse(el.Element("Водитель").Attribute("id").Value), СостояниеID = int.Parse(el.Element("СостояниеЗаказа").Attribute("id").Value), ТрСредствоID = CarId, КлиентID = clientId }; context1.Заказы.Add(addOrder); context1.SaveChanges(); orderId = addOrder.ЗаказID; } } //Добавляем товары к заказу //Ищем товары в заказе с текущим id var items = from xe in xdoc.Element("Заказы").Elements("Заказ") where xe.Attribute("id").Value == item.ToString() select xe.Element("Товар"); //Перебираем найденные товары и добавляем в заказ foreach (var i in items) { ЗаказаноТоваров addingGoods = new ЗаказаноТоваров { ЗаказID = orderId, КодТовара = int.Parse(i.Attribute("id").Value), асценкаТоннЗаКм = decimal.Parse(i.Element("РасценкаТоннЗаКм").Value, CultureInfo.CreateSpecificCulture("en-US")), Количество = int.Parse(i.Element("Количество").Value), Масса = int.Parse(i.Element("Масса").Value) }; context1.ЗаказаноТоваров.Add(addingGoods); context1.SaveChanges(); } await context1.SaveChangesAsync(); MessageBox.Show("Так как товара в базе нет, вставляем новый заказ.", "Внимание!"); } } MessageBox.Show("Данные были успешно импортированы.", "Окей", MessageBoxButton.OK, MessageBoxImage.Information); DialogResult = true; } }