private void SaveBtn_Click(object sender, EventArgs e) { List <string> NewProductList = new List <string>(new string[] { DescrTxt.Text, LongDescrTxt.Text, ManufacTxt.Text, QuantTxt.Text, UnitTxt.Text, MinStockTxt.Text, ProfitPercTxt.Text, SupplierDescrTxt.Text }); int cnt = 0; for (int i = 0; i < NewProductList.Count; i++) { if (NewProductList[i] != ProductList[i]) { cnt++; } } if (cnt == 0) { MessageBox.Show("Δεν έχετε πραγματοποιήσει κάποια αλλαγή στα στοιχεία του προϊόντος."); } else { string errorMessages = ""; if (DescrTxt.Text == "" || LongDescrTxt.Text == "" || SupplierDescrTxt.Text == "" || ManufacTxt.Text == "" || QuantTxt.Text == "" || UnitTxt.Text == "" || ProfitPercTxt.Text == "") { errorMessages = "- Θα πρέπει να συμπληρώσετε όλα τα απαραίτητα πεδία.\n";; } else { errorMessages += chk.CheckQuant(QuantTxt.Text); errorMessages += chk.CheckPrice(ProfitPercTxt.Text); if (MinStockTxt.Text != "") { errorMessages += chk.CheckMinStock(MinStockTxt.Text); } } if (errorMessages != "") { MessageBox.Show(errorMessages); } else { using (SqlConnection sqlcon = new SqlConnection(con.ConnectionString)) { try { sqlcon.Open(); SqlTransaction InsTrans = sqlcon.BeginTransaction("UpdateTransaction"); SqlCommand UpdCmd1 = sqlcon.CreateCommand(); UpdCmd1.Connection = sqlcon; SqlCommand UpdCmd2 = sqlcon.CreateCommand(); UpdCmd2.Connection = sqlcon; UpdCmd1.Transaction = InsTrans; UpdCmd2.Transaction = InsTrans; try { UpdCmd1.CommandText = "update Products set Description=@descr, LongDescr=@longd, Manufacture = @manufac , Unit = @unit , ProfitPerc = @prof , SupplierDescr=@supdescr where Id=@id"; UpdCmd1.Parameters.AddWithValue("@descr", DescrTxt.Text); UpdCmd1.Parameters.AddWithValue("@longd", LongDescrTxt.Text); UpdCmd1.Parameters.AddWithValue("@supdescr", SupplierDescrTxt.Text); UpdCmd1.Parameters.AddWithValue("@manufac", ManufacTxt.Text); UpdCmd1.Parameters.AddWithValue("@unit", UnitTxt.Text); UpdCmd1.Parameters.AddWithValue("@prof", ProfitPercTxt.Text); UpdCmd1.Parameters.AddWithValue("@id", IdTxt.Text); UpdCmd1.ExecuteNonQuery(); if (NewProductList[5] != "" && ProductList[5] == "") //Min Stock { UpdCmd2.CommandText = "insert into ProductsMinStock (Id, ProductId, MinStock) values((select dbo.nvl(Max(Id) + 1, 0) from ProductsMinStock), @id, @minstock)"; UpdCmd2.Parameters.AddWithValue("@id", IdTxt.Text); UpdCmd2.Parameters.AddWithValue("@minstock", MinStockTxt.Text); UpdCmd2.ExecuteNonQuery(); } else if (NewProductList[5] == "" && ProductList[5] != "") { UpdCmd2.CommandText = "delete ProductsMinStock where ProductId=@id"; UpdCmd2.Parameters.AddWithValue("@id", IdTxt.Text); UpdCmd2.ExecuteNonQuery(); } else if (NewProductList[5] != "" && ProductList[5] != "" && ProductList[5] != NewProductList[5]) { UpdCmd2.CommandText = "update ProductsMinStock set MinStock=@minstock where ProductId=@id"; UpdCmd2.Parameters.AddWithValue("@id", IdTxt.Text); UpdCmd2.Parameters.AddWithValue("@minstock", MinStockTxt.Text); UpdCmd2.ExecuteNonQuery(); } InsTrans.Commit(); MessageBox.Show("Οι αλλαγές πραγματοποιήθηκαν με επιτυχία."); ClearValues(); DescrTxt.Enabled = false; LongDescrTxt.Enabled = false; SupplierDescrTxt.Enabled = false; ManufacTxt.Enabled = false; ProfitPercTxt.Enabled = false; QuantTxt.Enabled = false; UnitTxt.Enabled = false; MinStockTxt.Enabled = false; SearchNameTxt.Enabled = true; SearchIdTxt.Enabled = true; SelectNameCmb.Enabled = true; RetrieveBtn.Enabled = true; SaveBtn.Visible = false; CancelBtn.Visible = false; ProductList.Clear(); } catch (Exception ex) { MessageBox.Show(ex.GetType() + ": " + ex.Message + "\n Commit Exception \n Παρουσιάστηκε κάποιο μη αναμενόμενο σφάλμα στην καταχώρηση του προϊόντος. Παρακαλώ επικοινωνήστε με το διαχειριστή του συστήματος."); try { InsTrans.Rollback(); } catch (Exception ex2) { MessageBox.Show(ex2.GetType() + ": " + ex2.Message + "\n Rollback Exception \n Παρουσιάστηκε κάποιο μη αναμενόμενο σφάλμα στην καταχώρηση του προϊόντος. Παρακαλώ επικοινωνήστε με το διαχειριστή του συστήματος."); } } sqlcon.Close(); } catch (Exception) { MessageBox.Show("Σφάλμα σύνδεσης. Παρακαλώ επικοινωνήστε με το διαχειριστή του συστήματος."); } } } } }
private void AddBtn_Click(object sender, EventArgs e) { string errorMessages = ""; if (DescrTxt.Text == "" || LongDescrTxt.Text == "" || SupplierDescrTxt.Text == "" || QuantTxt.Text == "" || PriceTxt.Text == "" || DiscTxt.Text == "" || UnitTxt.Text == "" || ProfitPercTxt.Text == "") { errorMessages = "- Θα πρέπει να συμπληρώσετε όλα τα πεδία με αστερίσκο (*).\n";; } else { errorMessages += chk.CheckQuant(QuantTxt.Text); errorMessages += chk.CheckPrice(PriceTxt.Text); errorMessages += chk.CheckPrice(DiscTxt.Text); errorMessages += chk.CheckPrice(ProfitPercTxt.Text); if (MinStockTxt.Text != "") { errorMessages += chk.CheckMinStock(MinStockTxt.Text); } } if (errorMessages != "") { MessageBox.Show(errorMessages); } else { using (SqlConnection sqlcon = new SqlConnection(con.ConnectionString)) { try { sqlcon.Open(); SqlDataAdapter SearchAdapt = new SqlDataAdapter("select * from Products where Description=@descr", sqlcon); SearchAdapt.SelectCommand.Parameters.AddWithValue(@"descr", DescrTxt.Text); SearchAdapt.SelectCommand.Parameters.AddWithValue(@"manufac", ManufacTxt.Text); DataTable dt = new DataTable(); SearchAdapt.Fill(dt); if (dt.Rows.Count > 0) { MessageBox.Show("Υπάρχει ήδη καταχωρημένο προϊόν με τα στοιχεία που έχετε εισάγει."); } else { SqlTransaction InsTrans = sqlcon.BeginTransaction("InsertTransaction"); SqlCommand InsCmd1 = sqlcon.CreateCommand(); InsCmd1.Connection = sqlcon; SqlCommand InsCmd2 = sqlcon.CreateCommand(); InsCmd2.Connection = sqlcon; SqlCommand InsCmd3 = sqlcon.CreateCommand(); InsCmd3.Connection = sqlcon; InsCmd1.Transaction = InsTrans; InsCmd2.Transaction = InsTrans; InsCmd3.Transaction = InsTrans; try { InsCmd1.CommandText = "insert into Products(Id, Description, LongDescr, SupplierDescr, Manufacture, Unit, ProfitPerc) values((select dbo.nvl(Max(Id)+1,10000) from dbo.Products), @descr, @longd, @supdescr, @manuf, @unit, @prof)"; InsCmd1.Parameters.AddWithValue("@descr", DescrTxt.Text); InsCmd1.Parameters.AddWithValue("@longd", LongDescrTxt.Text); InsCmd1.Parameters.AddWithValue("@supdescr", SupplierDescrTxt.Text); InsCmd1.Parameters.AddWithValue("@manuf", ManufacTxt.Text); InsCmd1.Parameters.AddWithValue("@unit", UnitTxt.Text); InsCmd1.Parameters.AddWithValue("@prof", ProfitPercTxt.Text); InsCmd1.ExecuteNonQuery(); if (MinStockTxt.Text != "") { InsCmd2.CommandText = "insert into ProductsMinStock (Id, ProductId, MinStock) values((select dbo.nvl(Max(Id) + 1, 0) from ProductsMinStock), (select dbo.nvl(Max(Id),1000) from dbo.Products), @minstock)"; InsCmd2.Parameters.AddWithValue("@minstock", MinStockTxt.Text); InsCmd2.ExecuteNonQuery(); } InsCmd3.CommandText = "insert into ProductsReserve (Id, ProductId, Quant, Price, Disc, Date, SalesPrice, SalesDisc) values((select dbo.nvl(Max(Id)+1,0) from dbo.ProductsReserve), (select dbo.nvl(Max(Id),1000) from dbo.Products), @quant, @price, @disc, @date, (select dbo.ProfitNewPrice(@price,@disc,0,0,@prof)),(select dbo.ProfitNewDisc(@price,@disc,0,0,@prof)))"; InsCmd3.Parameters.AddWithValue("@quant", QuantTxt.Text); InsCmd3.Parameters.AddWithValue("@price", PriceTxt.Text); InsCmd3.Parameters.AddWithValue("@disc", DiscTxt.Text); InsCmd3.Parameters.AddWithValue("@prof", ProfitPercTxt.Text); InsCmd3.Parameters.AddWithValue("@date", System.DateTime.Today.ToShortDateString()); InsCmd3.ExecuteNonQuery(); InsTrans.Commit(); MessageBox.Show("Το προϊόν προστέθηκε με επιτυχία."); GetDataProd(); has_added = true; ClearValues(); } catch (Exception ex) { MessageBox.Show(ex.GetType() + ": " + ex.Message + "\n Commit Exception \n Παρουσιάστηκε κάποιο μη αναμενόμενο σφάλμα στην καταχώρηση του προϊόντος. Παρακαλώ επικοινωνήστε με το διαχειριστή του συστήματος."); try { InsTrans.Rollback(); } catch (Exception ex2) { MessageBox.Show(ex2.GetType() + ": " + ex2.Message + "\n Rollback Exception \n Παρουσιάστηκε κάποιο μη αναμενόμενο σφάλμα στην καταχώρηση του προϊόντος. Παρακαλώ επικοινωνήστε με το διαχειριστή του συστήματος."); } } } sqlcon.Close(); } catch (Exception) { MessageBox.Show("Σφάλμα σύνδεσης. Παρακαλώ επικοινωνήστε με το διαχειριστή του συστήματος."); } } } }