Esempio n. 1
0
        public ReturnForm(Sale sale)
        {
            InitializeComponent();

            ReturnDGV.AutoGenerateColumns = false;

            List <OperationDetails> returnList = PartsDAL.FindReturnDetails(sale.OperationId); //Находим список товара кот. уже был возвращен по данной расходу.

            //Отнимаем из всего списка продажи, товар кот. уже был возвращен.
            foreach (OperationDetails operDet in returnList)
            {
                OperationDetails opDet = sale.OperationDetailsList.First(od => od.SparePart.SparePartId == operDet.SparePart.SparePartId);
                opDet.Count -= operDet.Count;
                if (opDet.Count == 0)
                {
                    sale.OperationDetailsList.Remove(opDet);
                }
            }//foreach

            //Заполняем таблицу
            sale.OperationDetailsList.ToList().ForEach(od => od.Tag = od.Count); //Запоминаем в Tag каждого объекта его начальное значение количества.
            ReturnDGV.DataSource = sale.OperationDetailsList;

            operationIdTextBox.Text = sale.OperationId.ToString();
            ContragentTextBox.Text  = sale.Contragent.ContragentName;
        }//
        }     //CancelButton_MouseClick

        private void okButton_MouseClick(object sender, MouseEventArgs e)
        {
            if (e.Button == MouseButtons.Left)
            {
                //Если все данные введены корректно
                if (IsRequiredFieldsValid())
                {
                    //Присваиваем объект заполненный данными с формы.
                    _contragent = GetContragentFromForm();

                    //Добавляем новую запись или редактируем существующую.
                    if (_contragent.ContragentId == 0)
                    {
                        PartsDAL.AddContragent(_contragent);
                    }
                    else
                    {
                        PartsDAL.UpdateContragent(_contragent);
                    }

                    this.DialogResult = DialogResult.OK;
                    this.Close();
                } //if
            }     //if
        }         //OkButton_MouseClick
Esempio n. 3
0
        }//CancelButton_MouseClick

        private void OkButton_MouseClick(object sender, MouseEventArgs e)
        {
            if (e.Button == MouseButtons.Left)
            {
                //Если все корректно.
                if (IsRequiredFieldsValid())
                {
                    this.Cursor = Cursors.WaitCursor;
                    FillTheSparePartFromForm(_sparePart); //Заполняем объект данными с формы.

                    try
                    {
                        //Редактируем существующий объект или добавляем новый.
                        if (_sparePart.SparePartId != 0)
                            PartsDAL.UpdateSparePart(_sparePart);
                        else
                            PartsDAL.AddSparePart(_sparePart);
                    }//try
                    catch
                    {
                        MessageBox.Show("Операция завершена неправильно! Попробуйте ещё раз.");
                        this.Cursor = Cursors.Default;
                        return;
                    }//catch

                    CopyPhotoToTheFolder(_sparePart.Photo); //Копируем фото в папку 'Товар', если необходимо.
                    this.Close();
                }//if
            }//if
        }//
Esempio n. 4
0
        }//ContragentOperationsInfoForm_Load

        /// <summary>
        /// Метод стартовой инициализации формы.
        /// </summary>
        private void FormInitialize()
        {
            //Заполняем таблицы инф-цией в зависимости от типа операции.
            List <IContragent> contragList = null;

            if (_contragType == typeof(Supplier))
            {
                contragList = PartsDAL.FindSuppliers().OrderBy(s => s.ContragentName).ToList();
                ContragentsGroupBox.Text      = "Поставщики";
                OperationsGroupBox.Text       = "Поставки";
                OperationDetailsGroupBox.Text = "Доп. инф-ция по поставкам.";
            }//if
            else
            {
                contragList = PartsDAL.FindCustomers().OrderBy(s => s.ContragentName).ToList();
                ContragentsGroupBox.Text      = "Покупатели";
                OperationsGroupBox.Text       = "Покупки";
                OperationDetailsGroupBox.Text = "Доп. инф-ция по покупкам.";
            }//else

            //Заполняем лист контрагентами.
            foreach (IContragent contrag in contragList)
            {
                ListViewItem item = new ListViewItem(contrag.ContragentName);
                item.SubItems.Add(contrag.Balance == null ? null : ((double)contrag.Balance).ToString("0.00"));
                item.Tag = contrag;
                ContragentsListView.Items.Add(item);
            } //foreach
        }     //FormInitialize
        }     //passwordAgainTextBox_Leave

        private void loginTextBox_Leave(object sender, EventArgs e)
        {
            Point location = new Point(bottomPanel.Location.X + loginBackPanel.Location.X, bottomPanel.Location.Y + loginBackPanel.Location.Y);

            if (String.IsNullOrWhiteSpace(loginTextBox.Text))
            {
                WrongValueInput(loginTextBox, loginBackPanel, loginStarLabel, location, "Введите имя (логин) учетной записи.", 3000);
            }//if
            else
            {
                if (PartsDAL.FindEmployees().Where(empl => empl.Login == loginTextBox.Text.Trim()).Count() > 0) //Если такой логин уже имеется в базе.
                {
                    //Если редактируется существующий сотрудник, и логин не изменен, то всё корректно. Иначе проверяем на совпадение с другими логинами в базе.
                    if (_editEmployee != null && _editEmployee.Login == loginTextBox.Text.Trim())
                    {
                        CorrectValueInput(loginTextBox, loginBackPanel, loginStarLabel);
                    }
                    else
                    {
                        WrongValueInput(loginTextBox, loginBackPanel, loginStarLabel, location, "Такой логин уже существует, введите другой.", 3000);
                    }
                }    //if
                else //если фамилия введена правильно
                {
                    CorrectValueInput(loginTextBox, loginBackPanel, loginStarLabel);
                } //else
            }     //else
        }         //loginTextBox_Leave
Esempio n. 6
0
        }     //CancelButton_MouseClick

        private void okButton_MouseClick(object sender, MouseEventArgs e)
        {
            //Если в таблице нет ни одной корректной записи, выдаём ошибку.
            if (!ReturnDGV.Rows.Cast <DataGridViewRow>().Any(r => r.Cells[CountCol.Index].Style.ForeColor == Color.Black))
            {
                toolTip.Show("Выберети хотя бы один товар из таблицы.", this, okButton.Location, 3000);
                return;
            }//if

            //Записываем данные в базу
            Purchase purchase = CreatePurchaseFromForm();
            string   note     = (String.IsNullOrWhiteSpace(noteRichTextBox.Text)) ? null : noteRichTextBox.Text.Trim();

            try
            {
                PartsDAL.AddReturn(purchase, note);
            }//try
            catch (Exception)
            {
                MessageBox.Show("Операция завершена неправильно! Попробуйте ещё раз.");
                return;
            }//catch

            this.Close();
        } //
        }     //firstNameTextBox_Leave

        private void passportNumTextBox_Leave(object sender, EventArgs e)
        {
            if (String.IsNullOrWhiteSpace(passportNumTextBox.Text))
            {
                CorrectValueInput(passportNumTextBox, passportNumBackPanel, passportNumBackPanel);
            }
            else
            {
                if (PartsDAL.FindEmployees().Where(empl => empl.PassportNum == passportNumTextBox.Text.Trim()).Count() > 0) //Если такой номер паспорта уже имеется в базе.
                {
                    //Если редактируется существующий сотрудник, и паспортные данные не изменены, то всё корректно. Иначе проверяем на совпадение с другими паспортными данными.
                    if (_editEmployee != null && _editEmployee.PassportNum == passportNumTextBox.Text.Trim())
                    {
                        CorrectValueInput(passportNumTextBox, passportNumBackPanel, passportNumBackPanel);
                    }
                    else
                    {
                        WrongValueInput(passportNumTextBox, passportNumBackPanel, passportNumBackPanel, "Такие паспортные данные уже имеются в базе.", 3000);
                    }
                }    //if
                else //если фамилия введена правильно
                {
                    CorrectValueInput(passportNumTextBox, passportNumBackPanel, passportNumBackPanel);
                } //else
            }     //else
        }         //passportNumTextBox_Leave
        }     //CancelButton_MouseClick

        private void okButton_MouseClick(object sender, MouseEventArgs e)
        {
            if (e.Button == MouseButtons.Left)
            {
                if (CheckAllConditionsForWrightValues() == true)
                {
                    this.Cursor = Cursors.WaitCursor;
                    Employee employee = GetEmployeeFromForm();
                    try
                    {
                        //Проверяем добавляется новая ед. товара или модиф-ся уже сущ-щая.
                        if (_editEmployee == null)
                        {
                            PartsDAL.AddEmployee(employee);
                        }//if
                        else
                        {
                            employee.EmployeeId = _editEmployee.EmployeeId;
                            UpdateEmployee(employee);
                        } //else
                    }     //try
                    catch
                    {
                        MessageBox.Show("Операция завершена неправильно! Попробуйте ещё раз.");
                        this.Cursor = Cursors.Default;
                        return;
                    }//catch

                    this.DialogResult = DialogResult.OK;
                    this.Close();
                } //if
            }     //if
        }
Esempio n. 9
0
        }//editOperDescriptToolStripMenuItem_Click

        private void OperationsInfoDGV_CellEndEdit(object sender, DataGridViewCellEventArgs e)
        {
            //Делаем недоступными для редактирования все ячейки столбца 'Комментарий'.
            OperationsInfoDGV.Columns[DescriptionCol.Index].ReadOnly = true;

            //Обновляем запись в базе.
            DataGridViewCell cell = OperationsInfoDGV[e.ColumnIndex, e.RowIndex];
            int    operId         = (int)OperationsInfoDGV[OperationIdCol.Index, e.RowIndex].Value;
            string descr          = (cell.Value == null || String.IsNullOrWhiteSpace(cell.Value.ToString())) ? null : cell.Value.ToString().Trim();

            try
            {
                Cursor = Cursors.WaitCursor;
                if (_contragType == typeof(Supplier))
                {
                    PartsDAL.UpdatePurchase(operId, descr);
                }
                else
                {
                    PartsDAL.UpdateSale(operId, descr);
                }

                (cell.OwningRow.Tag as IOperation).Description = descr;
                Cursor = Cursors.Default;
            }//try
            catch
            {
                MessageBox.Show("Не удалось редактировать запись. Попробуйте ещё раз.");
                cell.Value = (cell.OwningRow.Tag as IOperation).Description;
            } //catch
        }     //OperationsInfoDGV_CellEndEdit
Esempio n. 10
0
        }     //AddSparePartsProviders

        //Добавление в БД новой записи, или увеличение количества уже существующей.
        public static void AddSparePartsWithUpdateCount(IList <SparePart> spareParts)
        {
            using (SQLiteConnection connection = GetDatabaseConnection("SparePartConfig") as SQLiteConnection)
            {
                connection.Open();
                for (int i = 0; i < spareParts.Count; ++i)
                {
                    //Проверяем есть ли уже в БД запчасть с таким артикулом.
                    IList <int> sparePartsId = PartsDAL.FindSparePartsIdByArticul(spareParts[i].Articul, connection);
                    //если запчасти с таким артикулом в Базе нет, то записываем запись в БД.
                    if (sparePartsId.Count == 0)
                    {
                        AddSparePart(spareParts[i], connection);
                    }
                    //если запчасть с таким артикулом есть, необходимо сравнивать их по Описанию.
                    else
                    {
                        sparePartsId = PartsDAL.FindSparePartsIdByTitle(spareParts[i].Title, sparePartsId, connection);

                        //на данный момент у нас может либо быть найдена 1 запись с таким Описанием, либо ниодной.
                        //если ниодной, просто вставляем запись в БД.
                        if (sparePartsId.Count == 0)
                        {
                            AddSparePart(spareParts[i], connection);
                        }
                        //если точно такая же запись уже есть в БД, то увеличиваем количество.
                        else
                        {
                            PartsDAL.ChangeSparePartCount(sparePartsId[0], spareParts[i].Count, connection);
                        }
                    } //else
                }     //for
                connection.Close();
            }         //using
        }             //AddSparePartsWithIncreasingCount
Esempio n. 11
0
        }//AddUnitOfMeasure

        //Нахождение всех данных БД.
        public static IList <SparePart> FindAllSpareParts()
        {
            const string      selectString = "SELECT * FROM SparePart";
            IList <SparePart> spareParts   = new List <SparePart>();

            using (SQLiteConnection connection = GetDatabaseConnection("SparePartConfig") as SQLiteConnection)
            {
                connection.Open();
                SQLiteCommand selectCommand = new SQLiteCommand(selectString, connection);
                var           dataReader    = selectCommand.ExecuteReader();
                while (dataReader.Read())
                {
                    SparePart sparePart = new SparePart
                    {
                        Photo        = dataReader["Photo"] as string,
                        Id           = Convert.ToInt32(dataReader["Id"]),
                        Articul      = dataReader["Articul"] as string,
                        Title        = dataReader["Title"] as string,
                        Manufacturer = PartsDAL.FindManufacturerTitleById(Convert.ToInt32(dataReader["ManufacturerId"])),
                        Price        = Convert.ToDouble(dataReader["Price"]),
                        Markup       = Convert.ToDouble(dataReader["Markup"]),
                        Count        = Convert.ToDouble(dataReader["Count"]),
                        Unit         = dataReader["Unit"] as string
                    };
                    sparePart.SellingPrice = CalculationOfSellingPrice(sparePart.Price, sparePart.Markup);
                    sparePart.Providers    = FindSparePartProvidersById(sparePart.Id, connection);

                    spareParts.Add(sparePart);
                } //while
                connection.Close();
            }     //using
            return(spareParts);
        }         //FindAllSpareParts
Esempio n. 12
0
        }//

        /// <summary>
        /// Конструктор для создания объекта из БД.
        /// </summary>
        /// <param name="employeeId"></param>
        /// <param name="lastName"></param>
        /// <param name="firstName"></param>
        /// <param name="middleName"></param>
        /// <param name="birthDate"></param>
        /// <param name="hireDate"></param>
        /// <param name="dismissalDate"></param>
        /// <param name="photo"></param>
        /// <param name="note"></param>
        /// <param name="passportNum"></param>
        /// <param name="title"></param>
        /// <param name="accessLayer"></param>
        /// <param name="login"></param>
        /// <param name="password"></param>
        public Employee(int employeeId, string lastName, string firstName, string middleName, DateTime?birthDate,
                        DateTime?hireDate, DateTime?dismissalDate, string photo, string note, string passportNum,
                        string title, string accessLayer, string login, string password)
            : this(employeeId, lastName, firstName, middleName, birthDate, hireDate, dismissalDate,
                   photo, note, passportNum, title, accessLayer, login, password, null)
        {
            _contactInfo = new Lazy <ContactInfo>(() => PartsDAL.FindContactInfo(this));
        }//
Esempio n. 13
0
        }     //ContragentsListBox_MouseDown

        private void EditContragentToolStripMenuItem_Click(object sender, EventArgs e)
        {
            IContragent contragent = ContragentsListView.SelectedItems[0] as IContragent;

            contragent = (contragent is Supplier) ? PartsDAL.FindSuppliers(contragent.ContragentId) : PartsDAL.FindCustomers(contragent.ContragentId);
            //Передаём в форму 'свежую'инф-цию из базы, на случай если она обновилась.
            new AddContragentForm(contragent).Show();
        }//EditContragentToolStripMenuItem_Click
        private void EmployeeOperationsInfoForm_Load(object sender, EventArgs e)
        {
            //Находим список всех сотрудников (сортируем по фамилии и имени) и делаем источником данных для ListBox.
            EmployeeListBox.DataSource = PartsDAL.FindEmployees().OrderBy(emp => emp.LastName).ThenBy(emp => emp.FirstName).ToList();

            //Устанавливаем стартовый период в месяц.
            EndDateDTP.Value   = DateTime.Now;
            BeginDateDTP.Value = DateTime.Today.AddMonths(-1);
        }//EmployeeOperationsInfoForm_Load
Esempio n. 15
0
        }//AddSparePartForm


        private void AddSparePartForm_Load(object sender, EventArgs e)
        {
            //добавляем все варианты выбора единицы измерения.
            MeasureUnitComboBox.DataSource = Models.MeasureUnit.GetDescriptions();
            MeasureUnitComboBox.SelectedItem = (_sparePart == null) ? null : _sparePart.MeasureUnit;

            //Добавляем в выпадающий список всех Производителей. /*ERROR!!!*/            
            ManufacturerTextBox.AutoCompleteCustomSource.AddRange(PartsDAL.FindAllManufacturersName());
        }//Form1_Load   
Esempio n. 16
0
        }//

        public SparePartOperationsInfoForm(SparePart sparePart)
        {
            InitializeComponent();

            List <IOperation> operList = PartsDAL.FindOperations(sparePart);

            //Заполняем таблицу.
            FillTheOperationDGV(operList, sparePart.SparePartId);
        }//
        public AuthorizationForm()
        {
            InitializeComponent();
            //Заполняем выпадающий список контрола для ввода ФИО.
            IList <Employee> employees = PartsDAL.FindEmployees();

            foreach (Employee employee in employees)
            {
                loginTextBox.AutoCompleteCustomSource.Add(employee.Login);
            }
        }
Esempio n. 18
0
        }//

        public Purchase(int operationId, Employee employee, IContragent contragent, string contragentEmployee,
                        DateTime operationDate, string description)
        {
            OperationId        = operationId;
            Employee           = employee;
            Contragent         = contragent;
            ContragentEmployee = contragentEmployee;
            OperationDate      = operationDate;
            Description        = description;

            _operationDetailsList = new Lazy <IList <OperationDetails> >(() => PartsDAL.FindPurchaseDetails(this));
        } //
Esempio n. 19
0
        }//

        private void ReturnForm_Load(object sender, EventArgs e)
        {
            //Устанавливаем даты для DateTimePicker.
            OperationDateTimePicker.MaxDate = DateTime.Now.Date.AddDays(7);
            OperationDateTimePicker.MinDate = DateTime.Now.Date.AddDays(-7);
            OperationDateTimePicker.Value   = DateTime.Now;

            //Заполняем список автоподстановки для ввода контрагента.
            ContragentTextBox.AutoCompleteCustomSource.AddRange(PartsDAL.FindCustomers().Select(c => c.ContragentName).ToArray());

            AgentEmployeerTextBox.Text = String.Format("{0} {1}", Form1.CurEmployee.LastName, Form1.CurEmployee.FirstName);
        }//ReturnForm_Load
Esempio n. 20
0
 //Добавление записи в таблицу "SparePartsProviders".
 public static void AddSparePart(IList <SparePart> spareParts)
 {
     using (SQLiteConnection connection = GetDatabaseConnection("SparePartConfig") as SQLiteConnection)
     {
         connection.Open();
         //var insertSQL = new SQLiteCommand("INSERT INTO SparePart(Photo, Articul, Title, Category, ManufacturerId, Unit, Count, Price, Markup) VALUES(@Photo, @Articul, @Title, @Category, @ManufacturerId, @Unit, @Count, @Price, @Markup)", connection);
         for (int i = 0; i < spareParts.Count; ++i)
         {
             PartsDAL.AddSparePart(spareParts[i], connection);
         }
         connection.Close();
     } //using
 }     //AddSparePart
Esempio n. 21
0
        }//LoadExcelFile

        public static void AddSparePartsFromExcelFile(string excelPath)
        {
            //Сравнить разницу в быстродействии двух вариантов!!!
            IList <SparePart> spareParts = PartsDAL.LoadExcelFile(excelPath);

            //1)Медленный вариант. Открытие connection для каждой итерации.
            //foreach (var part in spareParts)
            //    PartsDAL.AddSparePart(part);

            //2)Более быстрый вариант. connection открывается один раз для всей коллекции.
            //PartsDAL.AddSparePart(spareParts);
            PartsDAL.AddSparePartsWithUpdateCount(spareParts);
        }//AddSparePartsFromExcelFile
Esempio n. 22
0
        /// <summary>
        /// Конструктор для добавления нового объекта в БД.
        /// </summary>
        public SparePart(int sparePartId, string photo, string manufacturer, string articul,
                         string title, string description, string measureUnit)
        {
            SparePartId  = sparePartId;
            Photo        = photo;
            Manufacturer = manufacturer;
            Articul      = articul;
            Title        = title;
            Description  = description;
            MeasureUnit  = measureUnit;

            _availabilityList = new Lazy <List <Availability> >(() => PartsDAL.FindAvailability(this));
        }//
        }//DatesDTP_ValueChanged

        /// <summary>
        /// Заполняем таблицу операций для выделенного сотрудника.
        /// </summary>
        private void FillTheOperationDGV()
        {
            OperationsInfoDGV.Rows.Clear(); //Очищаем список операций.

            //Находим начальную и конечную дату требуемых операций.
            DateTime?beginDate = BeginDateDTP.Enabled ? BeginDateDTP.Value : (DateTime?)null;
            DateTime?endDate   = EndDateDTP.Enabled   ? EndDateDTP.Value   : (DateTime?)null;
            //Выводим список операций соответствующий заданным требованиям.
            List <IOperation> operList = PartsDAL.FindOperations(EmployeeListBox.SelectedItem as Employee, beginDate, endDate);

            FillTheOperationDGV(operList);

            //Изменяем видимость строк по типу операции.
            OperationsCheckBox_CheckedChanged(null, null);
        }//FillTheOperationDGV
Esempio n. 24
0
        }//FindSparePartsByArticulOrTitle

        public static IList <SparePart> FindSparePartsByArticuls(IList <string> articuls)
        {
            IList <SparePart> spareParts = new List <SparePart>();

            using (SQLiteConnection connection = GetDatabaseConnection("SparePartConfig") as SQLiteConnection)
            {
                connection.Open();
                var cmd = new SQLiteCommand(null, connection);

                cmd.CommandText = "SELECT * FROM SparePart WHERE Articul LIKE @Articul";

                SQLiteParameter param = new SQLiteParameter();
                param.ParameterName = "@Articul";
                cmd.Parameters.Add(param);
                cmd.Prepare();


                for (int i = 0; i < articuls.Count; ++i)
                {
                    param.Value = articuls[i];
                    var dataReader = cmd.ExecuteReader();

                    while (dataReader.Read())
                    {
                        SparePart sparePart = new SparePart
                        {
                            Photo        = dataReader["Photo"] as string,
                            Id           = Convert.ToInt32(dataReader["Id"]),
                            Articul      = dataReader["Articul"] as string,
                            Title        = dataReader["Title"] as string,
                            Manufacturer = PartsDAL.FindManufacturerTitleById(Convert.ToInt32(dataReader["ManufacturerId"])),
                            Price        = Convert.ToDouble(dataReader["Price"]),
                            Markup       = Convert.ToDouble(dataReader["Markup"]),
                            Count        = Convert.ToDouble(dataReader["Count"]),
                            Unit         = dataReader["Unit"] as string
                        };
                        sparePart.SellingPrice = CalculationOfSellingPrice(sparePart.Price, sparePart.Markup);
                        sparePart.Providers    = FindSparePartProvidersById(sparePart.Id, connection);

                        spareParts.Add(sparePart);
                    } //while
                    dataReader.Dispose();  //Спорный момент с dataReader. Без Dispose выдаёт ошибку "dataReader already activate".
                }     //for
                connection.Close();
            }         //using
            return(spareParts);
        }             //FindSparePartsByArticuls
Esempio n. 25
0
        }     //FormInitialize

        private void ContragentsListBox_SelectedIndexChanged(object sender, EventArgs e)
        {
            if (ContragentsListView.SelectedItems.Count != 0)
            {
                //int contragId = (int)ContragentsListBox.SelectedValue;
                int contragId = (ContragentsListView.SelectedItems[0].Tag as IContragent).ContragentId;

                //Если инф-ции об операциях данного контрагента ещё нет в коллекции, находим её в базе и добавляем в коллекцию.
                List <IOperation> operList;
                if (_contragentsOperations.TryGetValue(contragId, out operList) == false)
                {
                    operList = (_contragType == typeof(Supplier)) ? PartsDAL.FindPurchases(contragId, null) : PartsDAL.FindSales(contragId, null);
                    _contragentsOperations.Add(contragId, operList);//добавляем в коллекцию.
                }//if

                FillTheOperationsInfoDGV(operList); //Заполняем таблицу Операций.
            }//if
        }//ContragentsListBox_SelectedIndexChanged
Esempio n. 26
0
        }         //FindSparePartsByTitle

        public static IList <SparePart> FindSparePartsByArticulOrTitle(string TitleOrArticul)
        {
            IList <SparePart> spareParts = new List <SparePart>();

            using (SQLiteConnection connection = GetDatabaseConnection("SparePartConfig") as SQLiteConnection)
            {
                connection.Open();
                var cmd = new SQLiteCommand(null, connection);

                cmd.CommandText = "SELECT * FROM SparePart WHERE Title LIKE @TitleOrArticul OR Articul LIKE @TitleOrArticul";

                SQLiteParameter param = new SQLiteParameter();
                param.ParameterName = "@TitleOrArticul";
                param.Value         = TitleOrArticul;

                cmd.Parameters.Add(param);
                cmd.Prepare();

                var dataReader = cmd.ExecuteReader();
                while (dataReader.Read())
                {
                    var sparePart = new SparePart
                    {
                        Photo        = dataReader["Photo"] as string,
                        Id           = Convert.ToInt32(dataReader["Id"]),
                        Articul      = dataReader["Articul"] as string,
                        Title        = dataReader["Title"] as string,
                        Manufacturer = PartsDAL.FindManufacturerTitleById(Convert.ToInt32(dataReader["ManufacturerId"])),
                        Price        = Convert.ToDouble(dataReader["Price"]),
                        Markup       = Convert.ToDouble(dataReader["Markup"]),
                        Count        = Convert.ToDouble(dataReader["Count"]),
                        Unit         = dataReader["Unit"] as string
                    };
                    sparePart.SellingPrice = CalculationOfSellingPrice(sparePart.Price, sparePart.Markup);
                    sparePart.Providers    = FindSparePartProvidersById(sparePart.Id, connection);

                    spareParts.Add(sparePart);
                }//while

                connection.Close();
            }
            return(spareParts);
        }//FindSparePartsByArticulOrTitle
Esempio n. 27
0
        }     //SetDivider

/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
        #endregion


        /// <summary>
        /// Возвращает объект типа Operation, созданный из данных формы.
        /// </summary>
        /// <returns></returns>
        public Purchase CreatePurchaseFromForm()
        {
            //Находим весь возвращаемый товар.
            List <OperationDetails> operDetList = new List <OperationDetails>();
            var correctRows = ReturnDGV.Rows.Cast <DataGridViewRow>().Where(r => r.Cells[CountCol.Index].Style.ForeColor == Color.Black);

            correctRows.ToList().ForEach(r => operDetList.Add(r.DataBoundItem as OperationDetails));

            Purchase purchase = new Purchase
                                (
                employee: Form1.CurEmployee,
                contragent: PartsDAL.FindSuppliers("Возврат"),
                contragentEmployee: (!String.IsNullOrWhiteSpace(ContragentEmployeeTextBox.Text)) ? ContragentEmployeeTextBox.Text.Trim() : null,
                operationDate: OperationDateTimePicker.Value,
                description: (!String.IsNullOrWhiteSpace(noteRichTextBox.Text)) ? noteRichTextBox.Text.Trim() : null,
                operDetList: operDetList
                                );

            return(purchase);
        }//CreatePurchaseFromForm
Esempio n. 28
0
        }             //FindSparePartsByArticuls

        public static SparePart FindSparePartById(int id)
        {
            SparePart sparePart = null;

            using (SQLiteConnection connection = GetDatabaseConnection("SparePartConfig") as SQLiteConnection)
            {
                connection.Open();
                var cmd = new SQLiteCommand(null, connection);

                cmd.CommandText = "SELECT * FROM SparePart WHERE Id = @Id";

                SQLiteParameter param = new SQLiteParameter();
                param.ParameterName = "@Id";
                param.Value         = id;

                cmd.Parameters.Add(param);
                cmd.Prepare();

                var dataReader = cmd.ExecuteReader();

                dataReader.Read();

                sparePart = new SparePart
                {
                    Photo        = dataReader["Photo"] as string,
                    Id           = Convert.ToInt32(dataReader["Id"]),
                    Articul      = dataReader["Articul"] as string,
                    Title        = dataReader["Title"] as string,
                    Manufacturer = PartsDAL.FindManufacturerTitleById(Convert.ToInt32(dataReader["ManufacturerId"])),
                    Price        = Convert.ToDouble(dataReader["Price"]),
                    Markup       = Convert.ToDouble(dataReader["Markup"]),
                    Count        = Convert.ToDouble(dataReader["Count"]),
                    Unit         = dataReader["Unit"] as string
                };
                sparePart.SellingPrice = CalculationOfSellingPrice(sparePart.Price, sparePart.Markup);
                sparePart.Providers    = FindSparePartProvidersById(sparePart.Id, connection);

                connection.Close();
            } //using
            return(sparePart);
        }     //FindSparePartById
Esempio n. 29
0
        }             //FindSparePartById

        public static IList <SparePart> FindSparePartById(IList <int> sparePartsId, SQLiteConnection openConnection)
        {
            IList <SparePart> spareParts = new List <SparePart>();
            var cmd = new SQLiteCommand("SELECT * FROM SparePart WHERE Id = @Id", openConnection);

            SQLiteParameter param = new SQLiteParameter();

            param.ParameterName = "@Id";

            cmd.Parameters.Add(param);
            cmd.Prepare();

            for (int i = 0; i < sparePartsId.Count; ++i)
            {
                param.Value = sparePartsId[i];
                var dataReader = cmd.ExecuteReader();

                while (dataReader.Read())
                {
                    SparePart sparePart = new SparePart
                    {
                        Photo        = dataReader["Photo"] as string,
                        Id           = Convert.ToInt32(dataReader["Id"]),
                        Articul      = dataReader["Articul"] as string,
                        Title        = dataReader["Title"] as string,
                        Manufacturer = PartsDAL.FindManufacturerTitleById(Convert.ToInt32(dataReader["ManufacturerId"])),
                        Price        = Convert.ToDouble(dataReader["Price"]),
                        Markup       = Convert.ToDouble(dataReader["Markup"]),
                        Count        = Convert.ToDouble(dataReader["Count"]),
                        Unit         = dataReader["Unit"] as string
                    };
                    sparePart.SellingPrice = CalculationOfSellingPrice(sparePart.Price, sparePart.Markup);
                    sparePart.Providers    = FindSparePartProvidersById(sparePart.Id, openConnection);

                    spareParts.Add(sparePart);
                } //while
                dataReader.Dispose();  //Спорный момент с dataReader. Без Dispose выдаёт ошибку "dataReader already activate".
            }     //for
            return(spareParts);
        }         //FindSparePartById
Esempio n. 30
0
        }         //SetTheAccessLayerConstraints

        /// <summary>
        /// Метод обновляющий данные переданного сотрудника в базе.
        /// </summary>
        /// <param name="employee">Сотрудник чьи данные обновляются.</param>
        private void UpdateEmployee(Employee employee)
        {
            //Если редактируемый юзер это и есть тот кто сейчас авторизован
            if (employee.EmployeeId == Form1.CurEmployee.EmployeeId)
            {
                //Если права "Админ"
                if (Form1.CurEmployee.AccessLayer == Employee.AccessLayers.Admin.ToDescription())
                {
                    //Если пароль не менялся, обновляем без пароля, иначе обновляем полностью.
                    if (passwordTextBox.Text.Trim() == Form1.CurEmployee.Password)
                    {
                        PartsDAL.UpdateEmployeeWithoutPassword(employee);
                    }
                    else
                    {
                        PartsDAL.UpdateEmployee(employee);
                    }
                }//if
                //если права "Обычные"
                else
                {
                    //Если введен новый пароль, то обновляем его в базе, иначе ничего не делаем.
                    if (passwordTextBox.Text.Trim() != Form1.CurEmployee.Password)
                    {
                        PartsDAL.UpdateEmployee(employee);
                    }
                }//else

                Form1.CurEmployee = employee;
            }    //if
            else //Если редактируемый юзер не является авторизованным юзером
            {
                //если права "Админ"
                if (employee.AccessLayer == Employee.AccessLayers.Admin.ToDescription())
                {
                    PartsDAL.UpdateEmployeeWithoutPassword(employee);
                }
            } //else
        }     //UpdateEmployee