Esempio n. 1
0
 /// <summary>
 /// Метод обрабатывает нажатие кнопки Удалить.
 /// Отвечает за удаление записи таблицы.
 /// </summary>
 /// <param name="sender">Объект, вызвавщий метод.</param>
 /// <param name="e">Аргументы события.</param>
 private void deleteB_Click(object sender, EventArgs e)
 {
     //если строка выбрана
     if (receiptDGV.SelectedRows.Count > 0)
     {
         //формирование удаляемого продукт из строки
         Product product = Product.ProductFromRow(receiptDGV.SelectedRows[0], receipt);
         //вывод диалогового окна
         if (product != null && MessageBox.Show("Вы действительно хотите удалить строку:\n" +
                                                $"| {product.Name} | {product.Quantity} | {product.Price} | " +
                                                $"{product.Row_Summ} |", "", MessageBoxButtons.YesNo) == DialogResult.Yes)
         {
             using (var db = new KassaDBContext())
             {
                 //удаление из БД из таблицы Purchase
                 var purchase = db.Purchase.Where(p => p.ProductId == product.Id && p.ReceiptId == receipt.Id).FirstOrDefault();
                 db.Purchase.Remove(purchase);
                 db.SaveChanges();
                 //удаление из состава чека
                 receipt.Purchase.Remove(purchase);
                 receipt.Products.Remove(product);
                 receipt.CalculateSumm();
                 //удаление из DataGridView
                 receiptDGV.Rows.Remove(receiptDGV.SelectedRows[0]);
                 //восстановление остатка
                 CountController.Recover(product.Id, product.Quantity);
             }
         }
     }
 }
Esempio n. 2
0
 /// <summary>
 /// Метод формирует объект класса Product из строки DataGridView.
 /// </summary>
 /// <param name="row">Строка с данными.</param>
 /// <param name="receipt">Текущий чек.</param>
 /// <returns>Сформированный продукт.</returns>
 public static Product ProductFromRow(DataGridViewRow row, Receipt receipt)
 {
     try
     {
         Product product;
         //если продукт уже есть в составе чека
         if (receipt != null)
         {
             product = receipt.Products.Where(p => p.Name == row.Cells["nameCol"].Value.ToString()).FirstOrDefault();
         }
         else
         {
             using (var db = new KassaDBContext())
             {
                 string name  = row.Cells["nameCol"].Value.ToString();
                 int    count = int.Parse(row.Cells["countCol"].Value.ToString());
                 product          = db.Product.Where(p => p.Name == name).FirstOrDefault();
                 product.Quantity = count;
                 product.RowSummCalculate();
             }
         }
         return(product);
     }
     catch (Exception ex)
     {
         MessageBox.Show(TextFormat.GetExceptionMessage(ex));
         return(null);
     }
 }
Esempio n. 3
0
 /// <summary>
 /// Метод обрабатывает событие загрузки формы.
 /// Отвечает вызов сравнения остатков и создание объекта чека.
 /// </summary>
 /// <param name="sender">Объект, вызвавщий метод.</param>
 /// <param name="e">Аргументы события.</param>
 private void Main_Load(object sender, EventArgs e)
 {
     //сверка остатков по всем товарам
     CountController.ReconciliationAll();
     //добавление нового чека в БД в таблицу Receipt
     using (var db = new KassaDBContext())
     {
         receipt = new Receipt();
         receipt = db.Receipt.Add(receipt);
         db.SaveChanges();
         timer.Start();
     }
 }
Esempio n. 4
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));
     }
 }
Esempio n. 5
0
 /// <summary>
 /// Метод остаток товара.
 /// </summary>
 /// <returns>Остаток товара.</returns>
 public int GetBalance()
 {
     try
     {
         using (var db = new KassaDBContext())
         {
             return(db.Product.Where(p => p.Id == Id).FirstOrDefault().Quantity);
         }
     }
     catch (Exception ex)
     {
         MessageBox.Show(TextFormat.GetExceptionMessage(ex));
     }
     return(-1);
 }
Esempio n. 6
0
 /// <summary>
 /// Метод отвечает за отметку чека, как оплаченного, в базе данных.
 /// </summary>
 private void MarkAsPaid()
 {
     try
     {
         using (var db = new KassaDBContext())
         {
             var rec = db.Receipt.Where(r => r.Id == CurrentReceipt.Id).FirstOrDefault();
             rec.Paid = true; //признак оплаты чека
             db.SaveChanges();
         }
     }
     catch (Exception ex)
     {
         MessageBox.Show(TextFormat.GetExceptionMessage(ex));
     }
 }
Esempio n. 7
0
 /// <summary>
 /// Метод обрабатывает событие закрытия формы.
 /// Отвечает за удаление старого и создание нового чека
 /// при отказе работать с текущими позициями.
 /// </summary>
 /// <param name="sender">Объект, вызвавщий метод.</param>
 /// <param name="e">Аргументы события.</param>
 private void Payment_FormClosing(object sender, FormClosingEventArgs e)
 {
     using (var db = new KassaDBContext())
     {
         //если в диалоговом окне выбрано Нет
         if (MessageBox.Show("Продолжить работу с этими позициями?", "", MessageBoxButtons.YesNo) == DialogResult.No)
         {
             ((Main)Owner).receipt = new Receipt();
             ((Main)Owner).receiptDGV.Rows.Clear(); //очистка таблицы на главной форме
             var r = db.Receipt.Where(p => p.Id == CurrentReceipt.Id && p.Paid == false).FirstOrDefault();
             if (r != null)
             {
                 CountController.Reconciliation(CurrentReceipt); //сверка остатков
             }
             db.Receipt.Add(((Main)Owner).receipt);              //добавление нового чека
             db.SaveChanges();
         }
     }
 }
Esempio n. 8
0
 /// <summary>
 /// Метод отвечает сохранение данных по чеку в базе данных.
 /// </summary>
 private void InsertData()
 {
     try
     {
         using (var db = new KassaDBContext())
         {
             var rec = db.Receipt.Where(r => r.Id == CurrentReceipt.Id).FirstOrDefault();
             rec.Discount     = CurrentReceipt.Discount;     //скидка на чек
             rec.Summa        = CurrentReceipt.Summa;        //сумма по чеку
             rec.Payment      = CurrentReceipt.Payment;      //способ оплаты
             rec.DiscountCard = CurrentReceipt.DiscountCard; //дк
             db.SaveChanges();
         }
     }
     catch (Exception ex)
     {
         MessageBox.Show(TextFormat.GetExceptionMessage(ex));
     }
 }