예제 #1
0
        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();
            }
        }
예제 #2
0
        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);
            }
        }
예제 #5
0
        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);
                }
            }
        }
예제 #7
0
        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, "ФИО_Наименование", "Сумма");
        }
예제 #8
0
        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, "ФИО", "Сумма");
        }
예제 #9
0
        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, "ДатаОп", "Сумма");
        }
예제 #10
0
        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);
 }
예제 #12
0
        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);
 }