コード例 #1
0
        private void btnSearch_Click(object sender, EventArgs e)
        {
            if (tbCode.Text.Length < 4 & btnSearch.Visible)
            {
                searchResult = new FrmSearchResult(tbNames.Text, SearchBy.Name);
            }
            else
            {
                searchResult = new FrmSearchResult(tbCode.Text, SearchBy.Code);
            }

            if (searchResult.ShowDialog() == DialogResult.Yes)
            {
                tbCode.Text       = searchResult.SelectedCode;
                tbNames.Text      = searchResult.SelectedName;
                tbPriceDC.Text    = searchResult.SelectedPriceDC;
                tbPricePC.Text    = searchResult.SelectedPricePC;
                cbDiscont.Checked = searchResult.SelectedDiscont;

                // Устанавливаем в ComboBox с периодами каталога выбранное значение. Если такового нет в БД - добавляем
                if (CatalogPeriod.SearchSuchCatalog(searchResult.SelectedPeriodText))
                {
                    cbCatalog.Text = searchResult.SelectedPeriodText;
                }
                else
                {
                    // добавляем каталожный период в БД (без проверки на его существование)
                    SkladBase.AddCatalogPeriod(searchResult.selectedPeriod, searchResult.selectedYear);

                    cbCatalog.DataSource = CatalogPeriod.catalogPeriod;
                    cbCatalog.Text       = searchResult.SelectedPeriodText;
                }
            }
        }
コード例 #2
0
        private void btAddCategory_Click(object sender, EventArgs e)
        {
            foreach (CategoryOne item in Category.category)
            {
                if (item.Name.ToLower().Trim() == (cbCategory.Text.ToLower().Trim()))
                {
                    MessageBox.Show($"Категория \"{cbCategory.Text}\" уже существует." + Environment.NewLine + Environment.NewLine +
                                    "Введите новую категорию.", "Ошибка");
                    return;
                }
            }

            if (string.IsNullOrEmpty(cbCategory.Text))
            {
                MessageBox.Show("Введите новую категорию.", "Ошибка");
                return;
            }

            if (cbCategory.Text.Length > 25)
            {
                MessageBox.Show("До 25 символов", "Ошибка");
                return;
            }

            SkladBase.AddCategory(cbCategory.Text.Trim());
            MessageBox.Show($"Категория \"{cbCategory.Text.Trim()}\" добавлена", "Добавлено");

            string categoryAdded = cbCategory.Text.Trim();

            Category.MakeList();
            cbCategory.DataSource = Category.category;
            cbCategory.Text       = categoryAdded;
        }
コード例 #3
0
        // обновляем грид после ввода каждого символа
        private void tbCode_TextChanged(object sender, EventArgs e)
        {
            int input;

            if ((tbCode.Text.Length >= 4 && int.TryParse(tbCode.Text, out input) && input >= 1000) | tbNames.Text.Length > 0)
            {
                btnSearch.Enabled = true;                                                                                                              //btnSearch.Visible != true &&
            }
            else
            {
                btnSearch.Enabled = false;
            }

            DataTable res = SkladBase.SearchProdByCode(tbCode.Text);

            dgvMain.DataSource = res; //заполняем грид

            if (res.Rows.Count == 0)  // если после поиска введенного кода выборка пуста, очищаем грид Details
            {
                DataTable dt = dgvDetails.DataSource as DataTable;
                if (dt != null)
                {
                    dt.Clear();
                }
            }
        }
コード例 #4
0
 private void btnAdd_Click(object sender, EventArgs e)
 {
     frmAdd = new FrmAdd(tbCode.Text, tbNames.Text);
     if (frmAdd.ShowDialog() == DialogResult.OK)
     {
         dgvMain.DataSource = SkladBase.SearchProdByCode("");
     }
 }
コード例 #5
0
        // отрабатывает изменения выделения в основном гриде (мышью или клавишами)
        private void dgvMain_SelectionChanged(object sender, EventArgs e)
        {
            if (dgvMain.CurrentRow != null)
            {
                currentCode = dgvMain.CurrentRow.Cells["Code"].Value.ToString();
            }

            dgvDetails.DataSource = SkladBase.FilldgvDetails(currentCode);
        }
コード例 #6
0
        public FrmSearchResult(string fieldSearch, SearchBy searchBy) : this()
        {
            dgvDB.DataSource    = SkladBase.SearchForAdd(fieldSearch, searchBy);
            dgvPrice.DataSource = ExcelSearch.Search(fieldSearch, searchBy);

            this.Text += string.Format($"  ({fieldSearch})");

            gbBD.Text     += "  (" + (dgvDB.DataSource as DataTable).Rows.Count.ToString() + ")";
            gbPrices.Text += "  (" + (dgvPrice.DataSource as DataTable).Rows.Count.ToString() + ")";
        }
コード例 #7
0
        private void btnAddCatalog_Click(object sender, EventArgs e)
        {
            frmAddPeriod = new FrmAddPeriod();
            DialogResult dRes = frmAddPeriod.ShowDialog();

            if (dRes == DialogResult.OK)
            {
                // добавляем каталожный период в БД (без проверки на его существование)
                SkladBase.AddCatalogPeriod(frmAddPeriod.Period, frmAddPeriod.Year);

                cbCatalog.DataSource = CatalogPeriod.catalogPeriod;
                cbCatalog.Text       = frmAddPeriod.InputedPeriodText;
            }
        }
コード例 #8
0
        private void tsmImport_Click(object sender, EventArgs e)
        {
            openfdImport.Filter     = "Excel (*.xlsx)|*.xlsx";
            openfdImport.DefaultExt = "xlsx";
            if (openfdImport.ShowDialog() == DialogResult.OK && File.Exists(openfdImport.FileName))
            {
                ImportExport.Import(openfdImport.FileName);

                CatalogType.MakeList();
                Category.MakeList();
                CatalogPeriod.MakeList();
                Catalog.MakeList();
                dgvMain.DataSource = SkladBase.SearchProdByCode(tbCode.Text);
            }
        }
コード例 #9
0
        // Обрабатываем нажатие кнопки 'X' в гриде
        private void dgvMain_CellContentClick(object sender, DataGridViewCellEventArgs e)
        {
            if (e.ColumnIndex != 0)
            {
                return;
            }

            SkladBase.DeleteProdFromPrice(Int32.Parse(currentCode));
            SkladBase.DeleteProdFromProductTable(Int32.Parse(currentCode));

            dgvMain.Rows.Remove(dgvMain.CurrentRow);
            if (dgvMain.RowCount > 0)
            {
                dgvMain.CurrentRow.Selected = true;
            }
        }
コード例 #10
0
        // обрабатываем нажатие на +/- в грид Detail
        private void dgvDetails_CellContentClick(object sender, DataGridViewCellEventArgs e)
        {
            // если грид Detail пуст, не обрабатывать нажатие на кнопку +/-, т.к. генерируется исключение
            if (((sender as DataGridView).DataSource as DataTable) == null || ((sender as DataGridView).DataSource as DataTable).Rows.Count == 0)
            {
                return;
            }

            if (e.RowIndex == -1)
            {
                return;
            }

            int     quant   = (int)dgvDetails.Rows[e.RowIndex].Cells["Quant"].Value;       //текущ. знач. Quantity
            int     code    = (int)dgvDetails.Rows[e.RowIndex].Cells["CodeDetails"].Value; //текущ. зна. code
            decimal pc      = (decimal)dgvDetails.Rows[e.RowIndex].Cells["PC"].Value;
            decimal dc      = (decimal)dgvDetails.Rows[e.RowIndex].Cells["DC"].Value;
            bool    discont = (bool)dgvDetails.Rows[e.RowIndex].Cells["Disc"].Value;


            switch (e.ColumnIndex)
            {
            case 0:      // если нажали на кнопку "-1"
                if (quant > 1)
                {
                    SkladBase.UpDownQtyPrice(code, quant, dc, pc, discont, UpDownOperation.Down);     // вызываем метод уменьшения кол-ва продукта в DB

                    // Обновляем кол-во в ячейках обоих гридов
                    dgvMain.SelectedRows[0].Cells["Quantity"].Value  = (int)dgvMain.SelectedRows[0].Cells["Quantity"].Value - 1;   // = Total quant - 1;
                    dgvDetails.Rows[e.RowIndex].Cells["Quant"].Value = (int)dgvDetails.Rows[e.RowIndex].Cells["Quant"].Value - 1;  // = Total quant - 1;
                }
                break;

            case 1:                                                                                                           // если нажали на кнопку "+1"
                SkladBase.UpDownQtyPrice(code, quant, dc, pc, discont, UpDownOperation.Up);                                   // вызываем метод уменьшения кол-ва продукта в DB

                dgvMain.SelectedRows[0].Cells["Quantity"].Value  = (int)dgvMain.SelectedRows[0].Cells["Quantity"].Value + 1;  // = Total quant + 1;
                dgvDetails.Rows[e.RowIndex].Cells["Quant"].Value = (int)dgvDetails.Rows[e.RowIndex].Cells["Quant"].Value + 1; // = Total quant + 1;
                break;

            case 2:     // если нажали "Х" во грид Detail
                DeleteProdFromPrice(code, quant, dc, pc, discont, e.RowIndex);
                break;
            }
        }
コード例 #11
0
        private void frmMain_Load(object sender, EventArgs e)
        {
            if (DataBase.CheckConnection())
            {
                if (!DataBase.CheckExistDB())
                {
                    DataBase.CreateDB();
                    DataBase.CreateAllTabels();
                    DataBase.FillTestData();
                }

                // ! используются только во время разработки
#if DEVELOP
                CatalogPeriod.FillDBCatalog();
                Catalog.FillDBCatalog();
#endif

                CatalogType.MakeList();
                Category.MakeList();
                CatalogPeriod.MakeList();
                Catalog.MakeList();
            }
            else
            {
                MessageBox.Show("Невозможно установить соединение с базой данных" + Environment.NewLine +
                                "Проверьте строку подключения (connectionString) к вашему MS SQL Server" + Environment.NewLine +
                                "в файле \"" + System.Reflection.Assembly.GetExecutingAssembly().Location + ".config\"", "Ошибка соединения");
                Environment.Exit(2);
            }


            // заполняем грид при загрузке всеми продуктами
            dgvMain.DataSource = SkladBase.SearchProdByCode(tbCode.Text);

            dgvMain.SelectionChanged += new System.EventHandler(dgvMain_SelectionChanged);

            // если грид заполнен, получаем код первого продукта и заполняем грид Details
            if (dgvMain.CurrentRow != null)
            {
                currentCode           = dgvMain.CurrentRow.Cells["Code"].Value.ToString();
                dgvDetails.DataSource = SkladBase.FilldgvDetails(currentCode);
            }

            tbCode.Select();
        }
コード例 #12
0
        private void btnSearch_Click(object sender, EventArgs e)
        {
            if (tbCode.Text.Length < 4 & btnSearch.Visible)
            {
                searchResult = new FrmSearchResult(tbNames.Text, SearchBy.Name);
            }
            else
            {
                searchResult = new FrmSearchResult(tbCode.Text, SearchBy.Code);
            }

            if (searchResult.ShowDialog() == DialogResult.Yes)
            {
                frmAdd = new FrmAdd(searchResult.SelectedCode, searchResult.SelectedName, searchResult.SelectedPriceDC, searchResult.SelectedPricePC, searchResult.SelectedDiscont, searchResult.SelectedPeriodText, searchResult.selectedPeriod, searchResult.selectedYear);
                frmAdd.ShowDialog();
            }
            dgvMain.DataSource = SkladBase.SearchProdByName("");
        }
コード例 #13
0
        private void btnAdd_Click(object sender, EventArgs e)
        {
            if (CheckInputData()) // Проверяем введенные данные в форме
            {
                // Проверяем есть ли такой период и тип в БД.Если есть, получаем id(табл Catalog), если нет - создаём и получаем id
                int catalogId = SkladBase.AddCatalog((int)cbCatalog.SelectedValue, cbTypeCatalog.SelectedIndex + 1);

                // Проверяем есть ли такой продукт в БД. Если есть, получаем id (табл Product), если нет - создаём и получаем id
                SkladBase.AddProduct(tbCode.Text, tbNames.Text, (int)cbCategory.SelectedValue);

                // проверяем наличие такого продукта в БД.
                int quantityInBD;
                int idProductInPrice = SkladBase.CheckExistProductFull(out quantityInBD, tbCode.Text, Convert.ToDecimal(tbPricePC.Text), Convert.ToDecimal(tbPriceDC.Text), catalogId, cbDiscont.Checked);
                if (0 == idProductInPrice) // если нет, то добавляем
                {
                    SkladBase.AddProductToPrice(tbCode.Text, Convert.ToDecimal(tbPricePC.Text), Convert.ToDecimal(tbPriceDC.Text), catalogId, (int)numQuantity.Value, cbDiscont.Checked, tbDescription.Text);
                }
                else // если есть, добавляем количество
                {
                    SkladBase.UpdateProductQuantInPrice(idProductInPrice, quantityInBD + (int)numQuantity.Value);
                }

                this.DialogResult = DialogResult.OK;
            }

            ///проверяем все поля на валидность
            ///проверяем на существование каталога (период+тип) табл Catalog
            ///если есть, берем id
            ///если нет - создаём, берём id созданного
            ///обновляем коллекцию catalog
            ///проверяем на существование такого продукта в табл Product, берем его id
            ///если нет - то создаём, берем id
            ///
            ///создаём продукт в прайсе
            ///устанавливаем dialogresult = OK;
            ///
            /// в frmMain
            ///обновляем колекцию и датагриды
            ///
            ///
        }
コード例 #14
0
        public FrmAdd(string code, string name, string priceDC, string pricePC, bool discont, string periodText, int period, int year) : this()
        {
            tbCode.Text       = code;
            tbNames.Text      = name;
            tbPriceDC.Text    = priceDC;
            tbPricePC.Text    = pricePC;
            cbDiscont.Checked = discont;

            // Устанавливаем в ComboBox с периодами каталога выбранное значение. Если такового нет в БД - добавляем
            if (CatalogPeriod.SearchSuchCatalog(periodText))
            {
                cbCatalog.Text = periodText;
            }
            else
            {
                // добавляем каталожный период в БД (без проверки на его существование)
                SkladBase.AddCatalogPeriod(period, year);

                cbCatalog.DataSource = CatalogPeriod.catalogPeriod;
                cbCatalog.Text       = periodText;
            }
        }
コード例 #15
0
        private void frmMain_Load(object sender, EventArgs e)
        {
            //  File.Delete(DataBase.dbFile);
            if (!DataBase.CheckExistDB())
            {
                DataBase.CreateDB();
                DataBase.CreateAllTabels();
                //      DataBase.FillTestData(); // Используется для тестового заполнения БД
            }


            CatalogType.MakeList();


#if DEVELOP     // ! используются только во время разработки
            CatalogPeriod.FillDBCatalog();
            Catalog.FillDBCatalog();
#endif

            Category.MakeList();
            CatalogPeriod.MakeList();
            Catalog.MakeList();


            // заполняем грид при загрузке всеми продуктами
            dgvMain.DataSource = SkladBase.SearchProdByCode(tbCode.Text);

            dgvMain.SelectionChanged += new System.EventHandler(dgvMain_SelectionChanged);

            //если грид заполнен, получаем код первого продукта и заполняем грид Details
            if (dgvMain.CurrentRow != null)
            {
                currentCode           = dgvMain.CurrentRow.Cells["Code"].Value.ToString();
                dgvDetails.DataSource = SkladBase.FilldgvDetails(currentCode);
            }

            tbCode.Select();
        }
コード例 #16
0
        private void DeleteProdFromPrice(int code, int quant, decimal dc, decimal pc, bool discont, int rowIndex)
        {
            SkladBase.DeleteProdFromPrice(code, quant, dc, pc, discont);

            dgvDetails.Rows.RemoveAt(rowIndex); //удаляем строку из грид Detail

            // Корректируем кол-во в основном гриде
            if (dgvDetails.Rows.Count > 0)
            {
                dgvMain.SelectedRows[0].Cells["Quantity"].Value = (int)dgvMain.SelectedRows[0].Cells["Quantity"].Value - quant;
            }
            else
            {
                SkladBase.DeleteProdFromProductTable(code); // удаляем продукт из табл Product

                dgvMain.Rows.Remove(dgvMain.CurrentRow);

                if (dgvMain.RowCount > 0)
                {
                    dgvMain.CurrentRow.Selected = true;
                }
            }
        }
コード例 #17
0
        private void tbNames_TextChanged(object sender, EventArgs e)
        {
            if (tbNames.Text.Length > 0 || tbCode.Text.Length >= 4)
            {
                btnSearch.Enabled = true;
            }
            else
            {
                btnSearch.Enabled = false;
            }

            DataTable res = SkladBase.SearchProdByName(tbNames.Text);

            dgvMain.DataSource = res; //заполняем грид

            if (res.Rows.Count == 0)  // если после поиска введенного кода выборка пуста, очищаем грид Details
            {
                DataTable dt = dgvDetails.DataSource as DataTable;
                if (dt != null)
                {
                    dt.Clear();
                }
            }
        }