private void btnSpend_Click(object sender, EventArgs e) // Провести операцию { if (cbxPointOfSale.Text == string.Empty || cbxPartner.Text == string.Empty || cbxManager.Text == string.Empty || cbxCashier.Text == string.Empty) { MessageBox.Show("Заполните все поля перед проведением операции", "Ошибка", MessageBoxButtons.OK, MessageBoxIcon.Error); } else { // Проверка на пустой DataGridView if (dgvNewPurchase.RowCount == 1) { MessageBox.Show("Введите наименование товара и его количество!", "Ошибка", MessageBoxButtons.OK, MessageBoxIcon.Error); return; } else { DateTimePicker dtp = new DateTimePicker(); DateTime dt = Convert.ToDateTime(txtDate.Text); dtp.Value = dt; workWithDB.actionDB($"INSERT INTO Операция (ID, Дата, Закупка, КонтрагентID, ТочкаID, МенеджерID, КассирID) " + $"VALUES({txtCode.Text}, {ManyIF.convDate(dtp)}, True, " + $"{cbxPartner.SelectedValue.ToString()}, " + $"{cbxPointOfSale.SelectedValue.ToString()}, " + $"{cbxManager.SelectedValue.ToString()}, " + $"{cbxCashier.SelectedValue.ToString()})"); string idName; string priceSale; // Заполнение таблицы СоставОперации for (int i = 0; i < dgvNewPurchase.RowCount - 1; i++) { idName = workWithDB.getLastID($"SELECT ID FROM Товар WHERE Наименование = '{dgvNewPurchase.Rows[i].Cells[0].Value.ToString()}'"); priceSale = workWithDB.getLastID($"SELECT ПрайсЛист.ЦенаЗакупки FROM ПрайсЛист " + $"WHERE ПрайсЛист.Дата = (SELECT MAX(Дата) FROM ПрайсЛист П WHERE П.ТоварID = ПрайсЛист.ТоварID AND ПрайсЛист.ТоварID = {idName})"); workWithDB.actionDB($"INSERT INTO СоставОперации (ОперацияID, ТоварID, Количество, Цена) " + $"VALUES({txtCode.Text}, {idName}, {dgvNewPurchase.Rows[i].Cells[1].Value}, {dgvNewPurchase.Rows[i].Cells[2].Value})"); if (workWithDB.getLastID($"SELECT ТоварID FROM Склад " + $"WHERE ТоварID = {idName} AND ТочкаID = {cbxPointOfSale.SelectedValue}") != idName) { // Вставляем новую строку если похожего нет в таблице workWithDB.actionDB($"INSERT INTO Склад (ТоварID, ТочкаID, Количество) " + $"VALUES({idName}, {cbxPointOfSale.SelectedValue.ToString()}, {dgvNewPurchase.Rows[i].Cells[1].Value.ToString()})"); } else { workWithDB.actionDB($"UPDATE Склад SET Количество = Количество + {dgvNewPurchase.Rows[i].Cells[1].Value.ToString()} " + $"WHERE ТоварID = {idName} AND ТочкаID = {cbxPointOfSale.SelectedValue}"); } } } MessageBox.Show("Операция успешно выполнена", "Выполнено", MessageBoxButtons.OK, MessageBoxIcon.Information); this.Close(); } }
private void stat6() { string cmd = $"SELECT TOP 10 Товар.Наименование, SUM([Цена]*[Количество]) AS Сумма " + $"FROM Товар INNER JOIN (Операция INNER JOIN СоставОперации ON Операция.ID = СоставОперации.ОперацияID) ON Товар.ID = СоставОперации.ТоварID " + $"WHERE Операция.Дата >= {ManyIF.convDate(dtpStart)} AND Операция.Дата <= {ManyIF.convDate(dtpEnd)} " + $"GROUP BY Товар.Наименование " + $"ORDER BY SUM([Цена]*[Количество]) DESC"; string title = $"ТОП-10 товаров по выручке за период с {dtpStart.Value.ToShortDateString()} по {dtpEnd.Value.ToShortDateString()}"; workWithDB.fillChart(chartTOP, cmd, title, "Наименование", "Сумма"); }
private void dtpEnd_ValueChanged(object sender, EventArgs e) // Изменение конечной даты { days = (int)(dtpEnd.Value - dtpStart.Value).TotalDays; if (dtpStart.Value > dtpEnd.Value && days >= 1) { MessageBox.Show("dtpStart = " + dtpStart.Value + "\ndtpEnd = " + dtpEnd.Value + "\nРед.дата старт = " + ManyIF.convDate(dtpStart) + "\nРед.дата = " + ManyIF.convDate(dtpEnd), "Информация", MessageBoxButtons.OK, MessageBoxIcon.Information); } else { workWithDB.fillDGV(cmdText(ManyIF.whereForMTOPOS(cbStart.Checked, cbEnd.Checked, cbFromPointOfSale.Checked, cbToPointOfSale.Checked, dtpStart, dtpEnd, cbxFromPOS, cbxToPOS)), dgvTo); } }
private void dtpEnd_ValueChanged(object sender, EventArgs e) // По какую дату { days = (int)(dtpEnd.Value - dtpStart.Value).TotalDays; if (dtpStart.Value > dtpEnd.Value && days >= 1) { MessageBox.Show("dtpStart = " + dtpStart.Value + "\ndtpEnd = " + dtpEnd.Value + "\nРед.дата старт = " + ManyIF.convDate(dtpStart) + "\nРед.дата = " + ManyIF.convDate(dtpEnd), "Информация", MessageBoxButtons.OK, MessageBoxIcon.Information); } else { workWithDB.fillDGV(cmdText(ManyIF.where (cbStart.Checked, cbEnd.Checked, cbCashier.Checked, cbManager.Checked, cbPartner.Checked, cbPointOfSale.Checked, rbBookSales.Checked, rbBookPurchase.Checked, dtpStart, dtpEnd, cbxCashier, cbxManager, cbxPartner, cbxPointOfSale, rbBookSales, rbBookPurchase)), dgvBookPurchaseAndSales); } }
private string cmdText(bool salePOS, string where) { if (salePOS == true) // Если выбрано "Продажи по точкам продаж" { cmd = $"SELECT Операция.Дата, ТорговаяТочка.Точка, Операция.ТочкаID, SUM([Количество]*[Цена]) AS Выручка, SUM([Количество]*([Цена]-[ЦенаЗакупки])) AS ВалПрибыль " + $"FROM ТорговаяТочка INNER JOIN (Операция INNER JOIN СоставОперации ON Операция.ID = СоставОперации.ОперацияID) ON ТорговаяТочка.ID = Операция.ТочкаID " + $"WHERE (((Операция.Закупка) = False) AND ((Операция.Дата) >= {ManyIF.convDate(dtpStart)} AND (Операция.Дата) <= {ManyIF.convDate(dtpEnd)})) {where} " + $"GROUP BY Операция.Дата, ТорговаяТочка.Точка, Операция.ТочкаID"; } else if (salePOS == false) // Если выбрано "Продажи по менеджерам" { cmd = $"SELECT Операция.Дата, Работник.ФИО, Операция.МенеджерID, Работник.Процент, SUM([Количество]*[Цена]) AS Выручка, SUM([Процент]*[Количество]*[Цена]/100) AS Зарплата " + $"FROM Работник INNER JOIN (Операция INNER JOIN СоставОперации ON Операция.ID = СоставОперации.ОперацияID) ON Работник.ТабN = Операция.МенеджерID " + $"WHERE (((Операция.Закупка) = False) AND ((Операция.Дата) >= {ManyIF.convDate(dtpStart)} AND (Операция.Дата) <= {ManyIF.convDate(dtpEnd)})) {where} " + $"GROUP BY Операция.Дата, Работник.ФИО, Операция.МенеджерID, Работник.Процент"; } return(cmd); }
private void btnTransfer_Click(object sender, EventArgs e) // Переместить товар (СДЕЛАТЬ) { DateTimePicker dtp = new DateTimePicker(); dtp.Value = DateTime.Now; if (cbxFromPointOfSale.Text == cbxToPointOfSale.Text) { MessageBox.Show("Начальная и конечная точки совпадают!", "Ошибка", MessageBoxButtons.OK, MessageBoxIcon.Error); } else { if (MessageBox.Show("Перенести выбранный товар на другую точку?", "Перенос товара", MessageBoxButtons.YesNo, MessageBoxIcon.Question) == DialogResult.Yes) { workWithDB.actionDB($"INSERT INTO Перемещение (ТоварID, ТочкаID1, ТочкаID2, Дата, Количество) " + $"VALUES({dgvFrom.CurrentRow.Cells[0].Value}, {cbxFromPointOfSale.SelectedValue}, {cbxToPointOfSale.SelectedValue}, " + $"{ManyIF.convDate(dtp)}, {nudCount.Value})"); if (workWithDB.getLastID($"SELECT ТоварID FROM Склад " + $"WHERE ТоварID = {dgvFrom.CurrentRow.Cells[0].Value} AND ТочкаID = {cbxToPointOfSale.SelectedValue}") == null) { // Вставляем новую строку если похожего нет в таблице workWithDB.actionDB($"INSERT INTO Склад (ТоварID, ТочкаID, Количество) " + $"VALUES({dgvFrom.CurrentRow.Cells[0].Value}, {cbxToPointOfSale.SelectedValue}, {nudCount.Value})"); // Отнимаем из прошлой точки workWithDB.actionDB($"UPDATE Склад SET Количество = Количество - {nudCount.Value} " + $"WHERE ТоварID = {dgvFrom.CurrentRow.Cells[0].Value} AND ТочкаID = {cbxFromPointOfSale.SelectedValue}"); } else { // Отнимаем из прошлой точки и прибавляем в новую точку workWithDB.actionDB($"UPDATE Склад SET Количество = Количество - {nudCount.Value} " + $"WHERE ТоварID = {dgvFrom.CurrentRow.Cells[0].Value} AND ТочкаID = {cbxFromPointOfSale.SelectedValue}"); workWithDB.actionDB($"UPDATE Склад SET Количество = Количество + {nudCount.Value} " + $"WHERE ТоварID = {dgvFrom.CurrentRow.Cells[0].Value} AND ТочкаID = {cbxToPointOfSale.SelectedValue}"); } workWithDB.fillDGV(cmdText(""), dgvTo); workWithDB.fillDGV(cmdTextFrom($"WHERE ТорговаяТочка.ID = {cbxFromPointOfSale.SelectedValue}"), dgvFrom); } } }
private void stat4() { string cmd = $"SELECT Контрагент.ФИО_Наименование, SUM([Количество]*[Цена]) AS Сумма " + $"FROM (Контрагент INNER JOIN Операция ON Контрагент.ID = Операция.КонтрагентID) INNER JOIN СоставОперации ON Операция.ID = СоставОперации.ОперацияID " + $"WHERE (((Операция.Закупка) = False) AND ((Операция.Дата) >= {ManyIF.convDate(dtpStart)} AND (Операция.Дата) <= {ManyIF.convDate(dtpEnd)})) " + $"GROUP BY Контрагент.ФИО_Наименование"; string title = $"Объемы продаж по покупателям за период с {dtpStart.Value.ToShortDateString()} по {dtpEnd.Value.ToShortDateString()}"; workWithDB.fillChart(chartCostumersSales, cmd, title, "ФИО_Наименование", "Сумма"); }
private void stat3() { string cmd = $"SELECT Работник.ФИО, SUM([Количество]*[Цена]) AS Сумма " + $"FROM Работник INNER JOIN (Операция INNER JOIN СоставОперации ON Операция.ID = СоставОперации.ОперацияID) ON Работник.ТабN = Операция.МенеджерID " + $"WHERE (((Операция.Закупка) = False) AND ((Операция.Дата) >= {ManyIF.convDate(dtpStart)} AND (Операция.Дата) <= {ManyIF.convDate(dtpEnd)})) " + $"GROUP BY Работник.ФИО"; string title = $"Объемы продаж по менеджерам помесячно за период с {dtpStart.Value.ToShortDateString()} по {dtpEnd.Value.ToShortDateString()}"; workWithDB.fillChart(chartManagerSales, cmd, title, "ФИО", "Сумма"); }
private void stat2() { string cmd = $"SELECT (FORMAT([Дата], 'mmm yy')) AS ДатаОп, SUM([Количество]*[Цена]) AS Сумма " + $"FROM ТорговаяТочка INNER JOIN(Операция INNER JOIN СоставОперации ON Операция.ID = СоставОперации.ОперацияID) ON ТорговаяТочка.ID = Операция.ТочкаID " + $"WHERE (((Операция.Закупка) = False) AND ((Операция.Дата) >= {ManyIF.convDate(dtpStart)} AND (Операция.Дата) <= {ManyIF.convDate(dtpEnd)}) AND ((Операция.ТочкаID) = {cbxPOS.SelectedValue})) " + $"GROUP BY FORMAT([Дата], 'mmm yy'), (YEAR([Дата])*12+MONTH([Дата])-1) " + $"ORDER BY (YEAR([Дата])*12+MONTH([Дата])-1)"; string title = $"Объем продаж в {cbxPOS.Text} помесячно за период с {dtpStart.Value.ToShortDateString()} по {dtpEnd.Value.ToShortDateString()}"; workWithDB.fillChart(chartPOSMonthSales, cmd, title, "ДатаОп", "Сумма"); }
private void stat1() { string cmd = $"SELECT (FORMAT([Дата], 'mmm yy')) AS ДатаОп, SUM([Количество]*[Цена]) AS Сумма " + $"FROM Операция INNER JOIN СоставОперации ON Операция.ID = СоставОперации.ОперацияID " + $"WHERE (((Операция.Закупка) = False) AND ((Операция.Дата) >= {ManyIF.convDate(dtpStart)} AND (Операция.Дата) <= {ManyIF.convDate(dtpEnd)})) " + $"GROUP BY FORMAT([Дата], 'mmm yy'), (YEAR([Дата])*12+MONTH([Дата])-1) " + $"ORDER BY (YEAR([Дата])*12+MONTH([Дата])-1)"; string title = $"Объем продаж за период с {dtpStart.Value.ToShortDateString()} по {dtpEnd.Value.ToShortDateString()}"; workWithDB.fillChart(chart1, cmd, title, "ДатаОп", "Сумма"); }
private void rbBookPurchase_CheckedChanged(object sender, EventArgs e) // Закупки { workWithDB.fillDGV(cmdText(ManyIF.where (cbStart.Checked, cbEnd.Checked, cbCashier.Checked, cbManager.Checked, cbPartner.Checked, cbPointOfSale.Checked, rbBookSales.Checked, rbBookPurchase.Checked, dtpStart, dtpEnd, cbxCashier, cbxManager, cbxPartner, cbxPointOfSale, rbBookSales, rbBookPurchase)), dgvBookPurchaseAndSales); }
private void btnSpend_Click(object sender, EventArgs e) // Провести { if (cbxPointOfSale.Text == string.Empty || cbxPartner.Text == string.Empty || cbxManager.Text == string.Empty || cbxCashier.Text == string.Empty) { MessageBox.Show("Заполните все поля перед проведением операции", "Ошибка", MessageBoxButtons.OK, MessageBoxIcon.Error); } else { // Проверка на пустой DataGridView if (dgvNewSale.RowCount == 1) { MessageBox.Show("Введите наименование товара и его количество!", "Ошибка", MessageBoxButtons.OK, MessageBoxIcon.Error); return; } else { DateTimePicker dtp = new DateTimePicker(); DateTime dt = Convert.ToDateTime(txtDate.Text); dtp.Value = dt; string idName; string priceSale; // Заполнение таблицы СоставОперации for (int i = 0; i < dgvNewSale.RowCount - 1; i++) { idName = workWithDB.getLastID($"SELECT ID FROM Товар WHERE Наименование = '{dgvNewSale.Rows[i].Cells[0].Value.ToString()}'"); priceSale = workWithDB.getLastID($"SELECT ПрайсЛист.ЦенаПродажи FROM ПрайсЛист " + $"WHERE ПрайсЛист.Дата = (SELECT MAX(Дата) FROM ПрайсЛист П WHERE П.ТоварID = ПрайсЛист.ТоварID AND ПрайсЛист.ТоварID = {idName})"); if (Convert.ToInt32(workWithDB.getLastID($"SELECT Количество FROM Склад " + $"WHERE ТоварID = {idName} AND ТочкаID = {cbxPointOfSale.SelectedValue}")) < Convert.ToInt32(dgvNewSale.Rows[i].Cells[1].Value.ToString()) && Convert.ToInt32(workWithDB.getLastID($"SELECT Количество FROM Склад " + $"WHERE ТоварID = {idName} AND ТочкаID = {cbxPointOfSale.SelectedValue}")) != 0) { if (MessageBox.Show("На складе нет столько автомобилей, вы хотите продать оставшиеся?", "Информация", MessageBoxButtons.YesNo) == DialogResult.Yes) { dgvNewSale.Rows[i].Cells[1].Value = workWithDB.getLastID($"SELECT Количество FROM Склад WHERE ТоварID = {idName} AND " + $"ТочкаID = {cbxPointOfSale.SelectedValue}"); workWithDB.actionDB($"UPDATE Склад SET Количество = Количество - {dgvNewSale.Rows[i].Cells[1].Value.ToString()} " + $"WHERE ТоварID = {idName} AND ТочкаID = {cbxPointOfSale.SelectedValue}"); // Добавление операции workWithDB.actionDB($"INSERT INTO Операция (ID, Дата, Закупка, КонтрагентID, ТочкаID, МенеджерID, КассирID) " + $"VALUES({txtCode.Text}, {ManyIF.convDate(dtp)}, False, " + $"{cbxPartner.SelectedValue.ToString()}, " + $"{cbxPointOfSale.SelectedValue.ToString()}, " + $"{cbxManager.SelectedValue.ToString()}, " + $"{cbxCashier.SelectedValue.ToString()})"); workWithDB.actionDB($"INSERT INTO СоставОперации (ОперацияID, ТоварID, Количество, Цена, ЦенаЗакупки) " + $"VALUES({txtCode.Text}, {idName}, {dgvNewSale.Rows[i].Cells[1].Value}, {priceSale}, {dgvNewSale.Rows[i].Cells[2].Value})"); } else { return; } } else if (Convert.ToInt32(workWithDB.getLastID($"SELECT Количество FROM Склад WHERE ТоварID = {idName} AND " + $"ТочкаID = {cbxPointOfSale.SelectedValue}")) == 0) { MessageBox.Show("Данного автомобиля нет на складе, выберите другой", "Ошибка", MessageBoxButtons.OK, MessageBoxIcon.Error); return; } else { workWithDB.actionDB($"UPDATE Склад SET Количество = Количество - {dgvNewSale.Rows[i].Cells[1].Value.ToString()} " + $"WHERE ТоварID = {idName} AND ТочкаID = {cbxPointOfSale.SelectedValue}"); // Добавление операции workWithDB.actionDB($"INSERT INTO Операция (ID, Дата, Закупка, КонтрагентID, ТочкаID, МенеджерID, КассирID) " + $"VALUES({txtCode.Text}, {ManyIF.convDate(dtp)}, False, " + $"{cbxPartner.SelectedValue.ToString()}, " + $"{cbxPointOfSale.SelectedValue.ToString()}, " + $"{cbxManager.SelectedValue.ToString()}, " + $"{cbxCashier.SelectedValue.ToString()})"); workWithDB.actionDB($"INSERT INTO СоставОперации (ОперацияID, ТоварID, Количество, Цена, ЦенаЗакупки) " + $"VALUES({txtCode.Text}, {idName}, {dgvNewSale.Rows[i].Cells[1].Value}, {priceSale}, {dgvNewSale.Rows[i].Cells[2].Value})"); } } } MessageBox.Show("Операция успешно выполнена", "Выполнено", MessageBoxButtons.OK, MessageBoxIcon.Information); this.Close(); } }
private void cbxToPOS_SelectedValueChanged(object sender, EventArgs e) // На точку продаж(combobox) { workWithDB.fillDGV(cmdText(ManyIF.whereForMTOPOS(cbStart.Checked, cbEnd.Checked, cbFromPointOfSale.Checked, cbToPointOfSale.Checked, dtpStart, dtpEnd, cbxFromPOS, cbxToPOS)), dgvTo); }