Пример #1
0
 /// <summary>
 /// Метод обрабатывает нажатие кнопки Ввод.
 /// Отвечает за проверку корректности и сохранение изменённых данных.
 /// </summary>
 /// <param name="sender">Объект, вызвавщий метод.</param>
 /// <param name="e">Аргументы события.</param>
 private void addProductB_Click(object sender, EventArgs e)
 {
     try
     {
         using (var db = new KassaDBContext())
         {
             if (countNUD.Value != 0 && discountTB.Text != "")
             {
                 //создание продукта с изменёнными данными
                 Product product = new Product()
                 {
                     Id         = OldProduct.Id,
                     Name       = OldProduct.Name,
                     Quantity   = (int)countNUD.Value,
                     Price      = OldProduct.Price,
                     Discount   = double.Parse(discountTB.Text),
                     NDS        = OldProduct.NDS,
                     Department = (int)departmentNUD.Value,
                     Type       = OldProduct.Type
                 };
                 product.RowSummCalculate();
                 product.Quantity -= OldProduct.Quantity;
                 //если изменённое количесвто не превышает остаток
                 if (CountController.Check(product))
                 {
                     product.Quantity += OldProduct.Quantity;
                     //изменение данных на форме Main
                     int index = ((Main)Owner).receipt.Products.IndexOf(
                         ((Main)Owner).receipt.Products.Where(p => p.Name == product.Name).FirstOrDefault());
                     ((Main)Owner).receipt.Products[index] = product;
                     ((Main)Owner).DGV_Refresh();
                     //обновление данных в БД в таблице Purchase
                     var oldP = db.Purchase.Where(pur => pur.ProductId == product.Id && pur.ReceiptId == ((Main)Owner).receipt.Id).FirstOrDefault();
                     oldP.Count = product.Quantity;
                     oldP.Summa = (decimal)product.Row_Summ;
                     db.SaveChanges();
                 }
                 Close();
             }
             else
             {
                 MessageBox.Show("Заполните все данные о товаре!");
             }
         }
     }
     catch (Exception ex)
     {
         MessageBox.Show(TextFormat.GetExceptionMessage(ex));
     }
 }
Пример #2
0
 /// <summary>
 /// Метод обрабатывает нажатие кнопки Ввод.
 /// Отвечает за вывод выбранного продукта в таблицу формы Main.
 /// </summary>
 /// <param name="sender">Объект, вызвавщий метод.</param>
 /// <param name="e">Аргументы события.</param>
 private void enterB_Click(object sender, EventArgs e)
 {
     try
     {
         using (var db = new KassaDBContext())
         {
             Product  product;
             Purchase purchase;
             //если продукт выбран
             if (productsDGV.SelectedRows.Count > 0)
             {
                 foreach (DataGridViewRow r in productsDGV.SelectedRows)
                 {
                     //формирование продукта из строки DataGridView
                     product = Product.ProductFromRow(r, null);
                     if (product.ShelfLife < DateTime.Now)
                     {
                         if (MessageBox.Show($"Срок годности товара \"{product.Name}\" истёк {product.ShelfLife:dd.MM.yyyy}!\n\n" +
                                             $"Действительно добавить товар в чек?", "Предупреждение", MessageBoxButtons.YesNo) == DialogResult.No)
                         {
                             return;
                         }
                     }
                     if (product != null)
                     {
                         product.Quantity = (int)countNUD.Value;
                         product.RowSummCalculate();
                         //если количество не превышает остаток
                         if (CountController.Check(product))
                         {
                             bool added = false;
                             //перебор содержимого состава чека на форме Main
                             foreach (Product p in ((Main)Owner).receipt.Products)
                             {
                                 //если товар уже добавлен в чек новая позиция не создаётся
                                 if (p.Name == product.Name)
                                 {
                                     if (p.Type == 1)//учитываются только товары, без услуг
                                     {
                                         //обновляется запись в БД в таблице Purchase
                                         var oldP = db.Purchase.Where(pur => pur.ProductId == p.Id && pur.ReceiptId == ((Main)Owner).receipt.Id).FirstOrDefault();
                                         oldP.Count += product.Quantity;
                                         oldP.Summa += product.Row_Summ;
                                         //к существующей позиции добавляется количество и сумма
                                         p.Quantity += product.Quantity;
                                         p.Row_Summ += product.Row_Summ;
                                         ((Main)Owner).DGV_Refresh();
                                         db.SaveChanges();
                                     }
                                     added = true;
                                 }
                             }
                             //если товар не добавлен
                             if (!added)
                             {
                                 //создаётся новая позиция в чеке
                                 ((Main)Owner).receipt.Products.Add(product);
                                 ((Main)Owner).DGV_Refresh();
                                 //данные добавляются в БД в таблицу Purchase
                                 purchase = new Purchase()
                                 {
                                     ProductId = product.Id,
                                     Count     = product.Quantity,
                                     Summa     = product.Row_Summ,
                                     Date      = DateTime.Now,
                                     ReceiptId = ((Main)Owner).receipt.Id,
                                     Receipt   = db.Receipt.Where(rec => rec.Id == ((Main)Owner).receipt.Id).FirstOrDefault()
                                 };
                                 ((Main)Owner).receipt.Purchase.Add(purchase);
                                 db.Purchase.Add(purchase);
                                 db.SaveChanges();
                             }
                             //обновление данных формы
                             ViewResult(null);
                             Close();
                         }
                     }
                 }
             }
             else
             {
                 MessageBox.Show("Строка не выбрана!");
             }
         }
     }
     catch (Exception ex)
     {
         MessageBox.Show(TextFormat.GetExceptionMessage(ex));
     }
 }