// Вызов сохранения и прогон по всей логике public bool Save(MySqlConnection connection, WaysToOpenForm.WaysToOpen way) { string warning = CheckData(); if (warning == "") { //FillEmptyTextBoxes(); MySqlTransaction transaction; connection.Open(); transaction = connection.BeginTransaction(); // Расчет зп if (statusName == "Готов" || statusName == "Отправлен" || statusName == "Сдан") { salaryToExecutor = CalculateSalary(connection); } else { salaryToExecutor = 0; } //Создать/изменить запись в таблице Заказы MySqlCommand command = SaveInDB(connection, transaction, way); // !!! ИЗМЕНЕНИЕ БАЛАНСА КЛИЕНТА !!! MySqlCommand commandSetBalance = EditCustomerBalance(connection, transaction, way); // !!! КОНЕЦ ИЗМЕНЕНИЯ БАЛАНСА КЛИЕНТА !!! // !!! НАЧИСЛЕНИЕ ЗП !!! MySqlCommand commandSetSalary = EditEmployeeSalary(connection, transaction); // !!! КОНЕЦ НАЧИСЛЕНИЯ ЗП !!! try { command.ExecuteNonQuery(); commandSetBalance.ExecuteNonQuery(); if (commandSetSalary != null) { commandSetSalary.ExecuteNonQuery(); } transaction.Commit(); return(true); } catch { transaction.Rollback(); MessageBox.Show("Ошибка сохранения!", "Ошибка внутри транзакции", MessageBoxButton.OK, MessageBoxImage.Error); } connection.Close(); } else { MessageBox.Show(warning, "Не заполнены обязательные поля", MessageBoxButton.OK, MessageBoxImage.Error); } return(false); }
public IncomeRecordWindow(WaysToOpenForm.WaysToOpen waysToOpen) { InitializeComponent(); way = waysToOpen; connection = new MySqlConnection(connectionString); setNewTitle(); FillComboBoxes(); }
public ProductRecordWindow(WaysToOpenForm.WaysToOpen waysToOpen, int id_Product = -1) { InitializeComponent(); way = waysToOpen; connection = new MySqlConnection(connectionString); setNewTitle(); if (id_Product != -1) { old_id_Product = id_Product; FillFields(id_Product); } }
public ConsumptionCategoriesRecordWindow(WaysToOpenForm.WaysToOpen waysToOpen, int id = -1) { InitializeComponent(); way = waysToOpen; connection = new MySqlConnection(connectionString); setNewTitle(); if (id != -1) { old_id = id; FillFields(id); } textBoxName.Focus(); }
public ReceiptOfMaterialsRecordWindow(WaysToOpenForm.WaysToOpen waysToOpen, int id_Document_Of_Receipt = -1) { InitializeComponent(); way = waysToOpen; connection = new MySqlConnection(connectionString); setNewTitle(); FillComboBoxes(); if (id_Document_Of_Receipt != -1) { old_id_Document_Of_Receipt = id_Document_Of_Receipt; FillFields(id_Document_Of_Receipt); } }
public CostsRecordWindow(WaysToOpenForm.WaysToOpen waysToOpen, int login = -1) { InitializeComponent(); way = waysToOpen; connection = new MySqlConnection(connectionString); setNewTitle(); FillComboBoxes(); if (login != -1) { old_login = login; FillFields(login); } }
public EmployeeRecordWindow(WaysToOpenForm.WaysToOpen waysToOpen, string login = "") { InitializeComponent(); way = waysToOpen; connection = new MySqlConnection(connectionString); setNewTitle(); ShowPassword(false); FillComboBoxes(); if (login != "") { old_login = login; FillFields(login); } }
public static string setNewTitle(WaysToOpenForm.WaysToOpen way, string Title) { switch (way) { case WaysToOpenForm.WaysToOpen.create: Title = "Создание " + Title.ToLower() + "а"; break; case WaysToOpenForm.WaysToOpen.edit: Title = "Изменение " + Title.ToLower() + "а"; break; } return(Title); }
public FittingRecordWindow(WaysToOpenForm.WaysToOpen waysToOpen, int idOrder = -1, string nickname = null) { InitializeComponent(); way = waysToOpen; this.idOrder = idOrder; this.nickname = nickname; connection = new MySqlConnection(connectionString); setNewTitle(); FillComboBoxes(); if (idOrder != -1 && nickname != null) { FillFields(idOrder, nickname); } }
public PayrollRecordWindow(WaysToOpenForm.WaysToOpen waysToOpen, string login = "", string period = null) { InitializeComponent(); way = waysToOpen; connection = new MySqlConnection(connectionString); setNewTitle(); FillComboBoxes(); if (login != "") { old_login = login; old_period = period; FillFields(login, old_period); } }
public DictionaryRecordWindow(WaysToOpenForm.WaysToOpen waysToOpen, string ID = "", string name = "", string dir = "", int id = -1) { InitializeComponent(); way = waysToOpen; connection = new MySqlConnection(connectionString); setNewTitle(); Dir = dir; Name = name; Id = ID; if (id != -1) { old_id = id; FillFields(id); } textBoxName.Focus(); }
public MaterialRecordWindow(WaysToOpenForm.WaysToOpen waysToOpen, string vendorCode = "") { material = new Material(); InitializeComponent(); way = waysToOpen; connection = new MySqlConnection(connectionString); vendorCodeRecord = vendorCode; // Заполнение шапки, полей Title = FormLoader.setNewTitle(way, Title); FillComboBoxes(); if (vendorCodeRecord != "") { material = new Material(vendorCodeRecord, connection); Border.Visibility = (material.photo != null) ? Visibility.Hidden : Visibility.Visible; FillFields(); } }
public CustomersRecordWindow(WaysToOpenForm.WaysToOpen waysToOpen, int id = -1) { customer = new Customer(); InitializeComponent(); way = waysToOpen; connection = new MySqlConnection(connectionString); idRecord = id; // Заполнение шапки, полей даты Title = FormLoader.setNewTitle(way, Title); datePickerBirthday.Text = DateTime.Now.ToLongDateString(); FillComboBoxes(); if (idRecord != -1) { customer = new Customer(idRecord, connection); Border.Visibility = (customer.photo != null) ? Visibility.Hidden : Visibility.Visible; FillFields(); } }
public HolidaysRecordWindow(WaysToOpenForm.WaysToOpen waysToOpen, string login = "") { InitializeComponent(); way = waysToOpen; connection = new MySqlConnection(connectionString); setNewTitle(); if (WaysToOpenForm.WaysToOpen.edit != way) { FillComboBoxes(); } else { comboBoxLogin.Items.Add(login); } if (login != "") { old_login = login; FillFields(login); } }
public OrderRecordWindow(WaysToOpenForm.WaysToOpen waysToOpen, int id = -1) { order = new Order(); InitializeComponent(); way = waysToOpen; connection = new MySqlConnection(connectionString); idRecord = id; // При создании они не могут накинуть сразу и список изделий в заказ buttonListProducts.Visibility = (way == WaysToOpenForm.WaysToOpen.create) ? Visibility.Hidden : Visibility.Visible; // Заполнение шапки, полей даты Title = FormLoader.setNewTitle(way, Title); datePickerDateOfDelievery.Text = DateTime.Now.ToLongDateString(); datePickerDateOfOrder.Text = DateTime.Now.ToLongDateString(); FillComboBoxes(); if (idRecord != -1) { order = new Order(idRecord, connection); FillFields(); } }
// Вызов сохранения и прогон по всей логике public bool Save(MySqlConnection connection, WaysToOpenForm.WaysToOpen way, string vendorCodeRecord) { string warning = CheckData(); if (warning == "") { MySqlTransaction transaction; connection.Open(); transaction = connection.BeginTransaction(); //Создать/изменить запись в таблице Материалы MySqlCommand command = SaveInDB(connection, transaction, way, vendorCodeRecord); MySqlCommand commandStrore = SaveInStore(connection, transaction, way, vendorCodeRecord); try { command.ExecuteNonQuery(); commandStrore.ExecuteNonQuery(); transaction.Commit(); return(true); } catch { transaction.Rollback(); MessageBox.Show("Ошибка сохранения!", "Ошибка внутри транзакции", MessageBoxButton.OK, MessageBoxImage.Error); } connection.Close(); } else { MessageBox.Show(warning, "Не заполнены обязательные поля", MessageBoxButton.OK, MessageBoxImage.Error); } return(false); }
// Вызов сохранения и прогон по всей логике public bool Save(MySqlConnection connection, WaysToOpenForm.WaysToOpen way) { string warning = CheckData(); if (warning == "") { connection.Open(); MySqlTransaction transaction = connection.BeginTransaction(); // Создать/изменить запись в таблице Клиенты MySqlCommand command = SaveInDB(connection, transaction, way); try { command.ExecuteNonQuery(); } catch { transaction.Rollback(); System.Windows.MessageBox.Show("Ошибка сохранения клиента в базе!", "Ошибка сохранения", MessageBoxButton.OK, MessageBoxImage.Error); return(false); } if (way == WaysToOpenForm.WaysToOpen.create) { // Если создаем клиента, то добавляем его в таблицу Балансы клиентов string queryMaxId = "SELECT max(customers.id_Customer) FROM main_database.customers"; MySqlCommand commandFindId = new MySqlCommand(queryMaxId, connection, transaction); int findId = -1; using (DbDataReader reader = commandFindId.ExecuteReader()) { while (reader.Read()) { findId = reader.GetInt32(0); } } // Мы сначала создали клиента, берем его id, и с таким же id добавляем в эту таблицу. // Написал настолько непонятно, что аж сам запутался string queryBalance = "Insert into customers_balance (Customers_id_Customer, Accured, Paid, Debt) values (@id, 0, 0, 0)"; MySqlCommand commandFillBalance = new MySqlCommand(queryBalance, connection, transaction); commandFillBalance.Parameters.AddWithValue("@id", findId); // Конец блока, дальше само выполнение sql комманд try { commandFillBalance.ExecuteNonQuery(); transaction.Commit(); return(true); } catch { transaction.Rollback(); System.Windows.MessageBox.Show("Ошибка сохранения баланса клиента в базе", "Ошибка сохранения!", MessageBoxButton.OK, MessageBoxImage.Error); } } else { transaction.Commit(); return(true); } connection.Close(); } else { System.Windows.MessageBox.Show(warning, "Не заполнены обязательные поля", MessageBoxButton.OK, MessageBoxImage.Error); } return(false); }
// Генерация команды сохранения в БД private MySqlCommand SaveInDB(MySqlConnection connection, MySqlTransaction transaction, WaysToOpenForm.WaysToOpen way) { string query = ""; if (way == WaysToOpenForm.WaysToOpen.create) { query = "INSERT INTO customers " + "(Name, Lastname, Patronymic, Address, Phone_Number, Nickname," + " Birthday, Passport_Data, Size, Parameters, Notes, Customer_Statuses_id_Status, Order_Channels_id_Channel, Employees_Login, Photo)" + " VALUES (@name, @lastname, @patronymic, @address, @phone, @nickname, @birthday, @passport, @size, @parameters, @notes," + " @status, @channel, @login, @image);"; } if (way == WaysToOpenForm.WaysToOpen.edit) { query = "Update customers set Name = @name, Lastname = @lastname, Patronymic = @patronymic, Address = @address, Phone_Number = @phone, Nickname = @nickname, " + "Birthday = @birthday, Passport_Data = @passport, Size = @size, Parameters = @parameters, Notes = @notes, Customer_Statuses_id_Status = @status, " + "Order_Channels_id_Channel = @channel, Employees_Login = @login, Photo = @image" + " where id_Customer = @id;"; } MySqlCommand command = new MySqlCommand(query, connection, transaction); command.Parameters.AddWithValue("@name", name); command.Parameters.AddWithValue("@lastname", lastname); command.Parameters.AddWithValue("@patronymic", patronymic); command.Parameters.AddWithValue("@address", address); command.Parameters.AddWithValue("@phone", phoneNumber); command.Parameters.AddWithValue("@nickname", nickname); command.Parameters.AddWithValue("@birthday", birthday); command.Parameters.AddWithValue("@passport", passportData); command.Parameters.AddWithValue("@size", size); command.Parameters.AddWithValue("@parameters", parameters); command.Parameters.AddWithValue("@notes", notes); // ГОВНОКОД НАЧАЛО MySqlCommand commandStatus = new MySqlCommand("select id_Status from customer_statuses where name_of_status = @status", connection); commandStatus.Parameters.AddWithValue("status", statusName); int id_status = -1; using (DbDataReader reader = commandStatus.ExecuteReader()) { while (reader.Read()) { id_status = reader.GetInt32(0); } } MySqlCommand commandChannel = new MySqlCommand("select id_Channel from order_channels where name_of_channel = @channel", connection); commandChannel.Parameters.AddWithValue("channel", channelName); int id_channel = -1; using (DbDataReader reader = commandChannel.ExecuteReader()) { while (reader.Read()) { id_channel = reader.GetInt32(0); } } command.Parameters.AddWithValue("@status", id_status); command.Parameters.AddWithValue("@channel", id_channel); command.Parameters.AddWithValue("@login", employeeLogin); // ГОВНОКОД КОНЕЦ // Обработка фото command.Parameters.AddWithValue("@image", photo); if (way == WaysToOpenForm.WaysToOpen.edit) { command.Parameters.AddWithValue("@id", id); } return(command); }
// Обновление состояние общего баланса клиента после движений над заказом private MySqlCommand EditCustomerBalance(MySqlConnection connection, MySqlTransaction transaction, WaysToOpenForm.WaysToOpen way) { // Получение данных о балансе клиента string queryCheckBalance = "select Accured, Paid, Debt, customers_id_customer " + "from customers_balance " + "join customers on customers_balance.customers_id_customer = customers.id_customer " + "where customers.nickname = @nickname"; MySqlCommand commandCheckBalance = new MySqlCommand(queryCheckBalance, connection); commandCheckBalance.Parameters.AddWithValue("@nickname", customerLogin); // Состояние общего баланса клиента на текущий момент (float accured, float paid, float debt, int id)result = (0, 0, 0, -1); using (DbDataReader reader = commandCheckBalance.ExecuteReader()) { while (reader.Read()) { result = (accured : reader.GetFloat(0), paid : reader.GetFloat(1), debt : reader.GetFloat(2), id : reader.GetInt32(3)); } } // MySqlCommand commandSetBalance; // Если мы создаем заказ, то у нас в балансе он еще не учитывается и надо бы записать это дело // Иначе мы для начала должны вычесть то, что имеем на текущий момент и прибавить новые значения if (way == WaysToOpenForm.WaysToOpen.edit) { string selectQuery = "select Paid, Debt, Total_Price from orders where id_order = @idOrder"; MySqlCommand commandSelectCurrentOrder = new MySqlCommand(selectQuery, connection); commandSelectCurrentOrder.Parameters.AddWithValue("@idOrder", id); // Состояние баланса клиента по текущему заказу на текущий момент (float currentPaid, float currentDebt, float currentTotalPrice)current = (0, 0, 0); using (DbDataReader reader = commandSelectCurrentOrder.ExecuteReader()) { while (reader.Read()) { current = (currentPaid : reader.GetFloat(0), currentDebt : reader.GetFloat(1), currentTotalPrice : reader.GetFloat(2)); } } result.paid -= current.currentPaid; result.debt -= current.currentDebt; result.accured -= current.currentTotalPrice; } // Новые значения баланса клиента result.paid += this.paid; result.debt += this.debt; result.accured += this.totalPrice; string querySetBalance = "update customers_balance set Accured = @accured, Paid = @paid, Debt = @debt " + "where customers_balance.customers_id_customer = @id"; commandSetBalance = new MySqlCommand(querySetBalance, connection, transaction); commandSetBalance.Parameters.AddWithValue("@id", id); commandSetBalance.Parameters.AddWithValue("@accured", result.accured); commandSetBalance.Parameters.AddWithValue("@paid", result.paid); commandSetBalance.Parameters.AddWithValue("@debt", result.debt); return(commandSetBalance); }
// Генерация команды сохранения в БД private MySqlCommand SaveInDB(MySqlConnection connection, MySqlTransaction transaction, WaysToOpenForm.WaysToOpen way) { string query = ""; if (way == WaysToOpenForm.WaysToOpen.create) { query = "INSERT INTO orders " + "(Date_Of_Order, Discount_Per_Cent, Total_Price, Paid, Debt, Date_Of_Delievery, Added_Price_For_Complexity, Notes, " + " Types_Of_Order_id_Type_Of_Order, Statuses_Of_Order_id_Status_Of_Order, Customers_id_Customer, Responsible, Executor, SalaryToExecutor)" + " VALUES (@dateOrder, @discount, @totalPrice, @paid, @debt, @dateDelievery, @addedPrice, @notes, @typeOrder, @statusOrder, @customer, @responsible, @executor, @salary);"; } if (way == WaysToOpenForm.WaysToOpen.edit) { query = "Update orders set Date_of_Order = @dateOrder, Discount_Per_Cent = @discount, Total_Price = @totalPrice, Paid = @paid, Debt = @debt," + " Date_Of_Delievery = @dateDelievery, Added_Price_For_Complexity = @addedPrice, Notes = @notes, Types_Of_Order_id_Type_Of_Order = @typeOrder, " + " Statuses_Of_Order_id_Status_Of_Order = @statusOrder," + " Customers_id_Customer = @customer, Responsible = @responsible, Executor = @executor, SalaryToExecutor = @salary " + " where id_order = @idOrder;"; } MySqlCommand command = new MySqlCommand(query, connection, transaction); command.Parameters.AddWithValue("@dateOrder", dateOfOrder); command.Parameters.AddWithValue("@discount", discountPerCent); command.Parameters.AddWithValue("@totalPrice", totalPrice); command.Parameters.AddWithValue("@paid", paid); command.Parameters.AddWithValue("@debt", debt); command.Parameters.AddWithValue("@dateDelievery", dateOfDelievery); command.Parameters.AddWithValue("@notes", notes); command.Parameters.AddWithValue("@salary", salaryToExecutor); command.Parameters.AddWithValue("@addedPrice", addedPriceForComplexity); // ГОВНОКОД НАЧАЛО MySqlCommand commandType = new MySqlCommand("select id_Type_Of_Order from types_of_order where Name_Of_Type = @type", connection); commandType.Parameters.AddWithValue("@type", typeOfOrderName); int id_type = -1; using (DbDataReader reader = commandType.ExecuteReader()) { while (reader.Read()) { id_type = reader.GetInt32(0); } } MySqlCommand commandStatus = new MySqlCommand("select id_Status_Of_Order from statuses_of_order where Name_Of_Status = @status", connection); commandStatus.Parameters.AddWithValue("@status", statusName); int id_status = -1; using (DbDataReader reader = commandStatus.ExecuteReader()) { while (reader.Read()) { id_status = reader.GetInt32(0); } } MySqlCommand commandCustomer = new MySqlCommand("select id_Customer from customers where nickname = @nickname", connection); commandCustomer.Parameters.AddWithValue("@nickname", customerLogin); int id_customer = -1; using (DbDataReader reader = commandCustomer.ExecuteReader()) { while (reader.Read()) { id_customer = reader.GetInt32(0); } } command.Parameters.AddWithValue("@typeOrder", id_type); command.Parameters.AddWithValue("@statusOrder", id_status); command.Parameters.AddWithValue("@customer", id_customer); command.Parameters.AddWithValue("@responsible", responsible); command.Parameters.AddWithValue("@executor", executor); // ГОВНОКОД КОНЕЦ if (way == WaysToOpenForm.WaysToOpen.edit) { command.Parameters.AddWithValue("@idOrder", id); } return(command); }
// Обновление данных на складе private MySqlCommand SaveInStore(MySqlConnection connection, MySqlTransaction transaction, WaysToOpenForm.WaysToOpen way, string vendorCodeRecord) { string queryStore = ""; if (way == WaysToOpenForm.WaysToOpen.create) { queryStore = "INSERT INTO store (Materials_Vendor_Code, Count)" + " VALUES(@vendor_code,0);"; } if (way == WaysToOpenForm.WaysToOpen.edit) { queryStore = "Update store set Materials_Vendor_Code = @vendor_code" + " where Materials_Vendor_Code = @oldvendor_code;"; } MySqlCommand command = new MySqlCommand(queryStore, connection, transaction); command.Parameters.AddWithValue("@vendor_code", vendorCode); if (way == WaysToOpenForm.WaysToOpen.edit) { command.Parameters.AddWithValue("@oldvendor_code", vendorCodeRecord); } return(command); }
// Генерация команды сохранения в БД private MySqlCommand SaveInDB(MySqlConnection connection, MySqlTransaction transaction, WaysToOpenForm.WaysToOpen way, string vendorCodeRecord) { string query = ""; if (way == WaysToOpenForm.WaysToOpen.create) { query = "INSERT INTO materials " + "(Vendor_Code, Name_Of_Material, Cost_Of_Material, Notes," + " Units_id_Unit, Groups_Of_Material_id_Group_Of_Material,Types_Of_Material_id_Type_Of_Material,Countries_id_Country, Photo)" + " VALUES (@vendor_code, @name_of_material, @cost_of_material, @notes, @unit, @group, @type, @country, @image);"; } if (way == WaysToOpenForm.WaysToOpen.edit) { query = "Update materials set Vendor_Code = @vendor_code, Name_Of_Material = @name_of_material, Cost_Of_Material = @cost_of_material," + "Notes = @notes," + "Units_id_Unit = @unit, Groups_Of_Material_id_Group_Of_Material = @group, Types_Of_Material_id_Type_Of_Material = @type, Countries_id_Country = @country, Photo = @image" + " where Vendor_Code = @oldvendor_code;"; } MySqlCommand command = new MySqlCommand(query, connection, transaction); command.Parameters.AddWithValue("@vendor_code", vendorCode); command.Parameters.AddWithValue("@name_of_material", name); command.Parameters.AddWithValue("@cost_of_material", cost); command.Parameters.AddWithValue("@notes", notes); // ГОВНОКОД НАЧАЛО MySqlCommand commandUnit = new MySqlCommand("select id_Unit from units where Name_Of_Unit = @unit", connection); commandUnit.Parameters.AddWithValue("unit", unitName); int id_unit = -1; using (DbDataReader reader = commandUnit.ExecuteReader()) { while (reader.Read()) { id_unit = reader.GetInt32(0); } } MySqlCommand commandGroup = new MySqlCommand("select id_Group_Of_Material from groups_of_material where Name_Of_Group = @group", connection); commandGroup.Parameters.AddWithValue("group", groupOfMaterialName); int id_group = -1; using (DbDataReader reader = commandGroup.ExecuteReader()) { while (reader.Read()) { id_group = reader.GetInt32(0); } } MySqlCommand commandType = new MySqlCommand("select id_Type_Of_Material from types_of_material where Name_Of_Type = @type", connection); commandType.Parameters.AddWithValue("@type", typeOfMaterialName); int id_type = -1; using (DbDataReader reader = commandType.ExecuteReader()) { while (reader.Read()) { id_type = reader.GetInt32(0); } } MySqlCommand commandCountry = new MySqlCommand("select id_Country from countries where Name_Of_Country = @country", connection); commandCountry.Parameters.AddWithValue("@country", countryName); int id_country = -1; using (DbDataReader reader = commandCountry.ExecuteReader()) { while (reader.Read()) { id_country = reader.GetInt32(0); } } command.Parameters.AddWithValue("@unit", id_unit); command.Parameters.AddWithValue("@group", id_group); command.Parameters.AddWithValue("@type", id_type); command.Parameters.AddWithValue("@country", id_country); // ГОВНОКОД КОНЕЦ // Обработка фото command.Parameters.AddWithValue("@image", photo); if (way == WaysToOpenForm.WaysToOpen.edit) { command.Parameters.AddWithValue("@oldvendor_code", vendorCodeRecord); } return(command); }