Esempio n. 1
0
        private void удалитьToolStripMenuItem_Click(object sender, EventArgs e)
        {
            DialogResult res = MessageBox.Show("Вы уверены, что хотите удалить эту запись?", "Предупреждение!", MessageBoxButtons.OKCancel, MessageBoxIcon.Question);

            if (res == System.Windows.Forms.DialogResult.OK)
            {
                if ((dataGridView1.CurrentRow.Cells[clmnNames[10]].Value != DBNull.Value) /* && (itAct == false)*/)
                {
                    int minus = Convert.ToInt32(dataGridView1.CurrentRow.Cells[clmnNames[10]].Value);
                    MapCasesManager.SetDBMapCasesSumm(dataGridView1.CurrentRow.Cells[3].Value.ToString(), (-minus));
                }

                // И удаляем строку
                bool deleteDocsSucseed = dm.DeleteDocsForId(currentID);
                if (deleteDocsSucseed)
                {
                    DataRow rowToDelete = (dataGridView1.CurrentRow.DataBoundItem as DataRowView).Row;
                    RowEdit.DeleteRow(rowToDelete);
                    rowToDelete.Delete();
                    LoadTables(sqlForm.CurrentSqlQuery, SqlQueryBuilder.AllDocumentsQuery);
                }
            }
        }
Esempio n. 2
0
        private void SaveItem_Click(object sender, EventArgs e)
        {
            #region Проверки заполнения
            if (((radioButton1.Checked == false) && (radioButton2.Checked == false)) || ((organizationsCB.Text == "") || organizationsCB.Text == "Начните вводить имя организации") || ((checkBox1.Checked == false) && (checkBox2.Checked == false)) || (clientsCB.Text == "") || (costTB.Text == "") || (memoTB.Text == ""))
            {
                MessageBox.Show("Не все поля формы заполнены. \nВнесите всю необходимую информацию и повторите попытку.", "Ошибка заполнения формы", MessageBoxButtons.OK, MessageBoxIcon.Information);
                DialogResult = DialogResult.None;
                return;
            }

            if (((organizationsCB.SelectedIndex == -1) && (organizationsCB.Text != "Частное лицо")) || (clientsCB.SelectedIndex == -1))
            {
                MessageBox.Show("Выбран несуществующий клиент или организация. Проверьте правильность ввода.", "Ошибка заполнения формы", MessageBoxButtons.OK, MessageBoxIcon.Information);
                DialogResult = DialogResult.None;
                return;
            }

            //if (dateTimePicker1.Value > DateTime.Now)
            //{
            //    MessageBox.Show("Дата документа задана не верно.", "Ошибка заполнения формы", MessageBoxButtons.OK, MessageBoxIcon.Warning);
            //    return;
            //}

            if (typeDocCB.SelectedIndex == -1)
            {
                MessageBox.Show("Не выбран тип документа.", "Ошибка заполнения формы", MessageBoxButtons.OK, MessageBoxIcon.Warning);
                return;
            }

            int chBoxIndx = 1;

            if ((checkBox1.Checked == true) && (checkBox2.Checked == false))
            {
                chBoxIndx = 2;
            }
            if ((checkBox1.Checked == false) && (checkBox2.Checked == true))
            {
                chBoxIndx = 3;
            }
            if ((checkBox1.Checked == true) && (checkBox2.Checked == true))
            {
                chBoxIndx = 4;
            }
            string chBoxIndxStr = Convert.ToString(chBoxIndx);
            if (memoTB.Text.Length > 4000)
            {
                if (MessageBox.Show("Слишком большой объем поля описания.\n\nСохранить введенное значение?", "Внимание", MessageBoxButtons.OKCancel, MessageBoxIcon.Information) != DialogResult.OK)
                {
                    return;
                }
            }
            #endregion
            SaveItem.Enabled = false;
            Cursor           = Cursors.AppStarting;
            //Подготавливаем переменые даты для передачи на sql server
            DateTime dateNow = Convert.ToDateTime(textBox3.Text);

            //Отправляем текст на Regex-анализ, чтобы узнать количество выданных планшетов
            int mapCasesCount = RegexAnalys.MapCasesCount(memoTB.Text);

            var        cn      = dm.DBConnection;
            SqlCommand command = cn.CreateCommand();

            //Добавление новой строки со случайными значениями.
            //Подготавливаем значения
            //'04-02-2017' формат передаваемой в sql даты
            //SqlCommand orgIndex = cn.CreateCommand();

            int orgId    = dm.FindFirstOrganizationId(organizationsCB.Text);
            int clientId = (int)clientsCB.SelectedValue;
            //MessageBox.Show(clientsCB.SelectedValue.ToString());
            command.CommandText = "INSERT INTO Журнал (TypeDoc, Date, Memo, Organ_ID, Empl_ID, Client_ID, in_id, Cost, mapCasesCount, RequireConfirmAct) VALUES ('" + (typeDocCB.SelectedIndex + 1) + "', '" + dateNow.ToString("yyyy - MM - dd HH:mm:ss") + "' , '" + memoTB.Text + "', '" + orgId + "', '" + (employCB.SelectedIndex + 1) + "', '" + clientId + "', '" + chBoxIndxStr + "', '" + Convert.ToInt32(costTB.Text) + "', '" + mapCasesCount + "', '" + mapCasesCount + "')";

            #region ==========СОЗДАЕМ БАЗОВОГО КЛИЕНТА============
            SqlCommand baseClient = cn.CreateCommand();
            if (topClientCheckB.Checked == true)
            {
                baseClient.CommandText = "UPDATE Организации SET ОсновнойКлиент =" + clientId + " WHERE Организации.ID = " + orgId;
                try
                {
                    baseClient.Transaction = cn.BeginTransaction(IsolationLevel.Serializable);
                    baseClient.ExecuteNonQuery();
                    baseClient.Transaction.Commit();
                }
                catch
                {
                    baseClient.Transaction.Rollback();
                    MessageBox.Show("Данный клиент не был назначен основным", "Ошибка при изменении статуса клиента", MessageBoxButtons.OK, MessageBoxIcon.Information);
                }
            }
            #endregion

            //========================COMMIT==============================
            try
            {
                command.Transaction = cn.BeginTransaction(IsolationLevel.Serializable);
                command.ExecuteNonQuery();
                command.Transaction.Commit();

                lastID = Convert.ToInt32(SqlQueryBuilder.LastId(cn).ExecuteScalar());

                // Вставка документов в БД
                if (docsForInsert != null)
                {
                    docsForInsert.ForEach(x => x.FidJournal = lastID);
                    //docsForInsert.ForEach(x => x.Type = (DocType)comboBox2.SelectedIndex + 1);
                }
                //else if (comboBox2.Text == "Обращение")
                //{
                //    docsForInsert = new List<Document>();
                //    docsForInsert.Add(new Document((DocType)comboBox2.SelectedIndex + 1)
                //    {
                //        FidJournal = lastID,
                //        TicketNumber = textBox1.Text,
                //        TicketDate = dateTimePicker1.Value,
                //        NumRazresh = null,
                //        DateRazresh = null,
                //        //Type = (DocType)comboBox2.SelectedIndex + 1
                //    });
                //}
                bool isAdded = dm.CreateDocuments(docsForInsert);
                DialogResult = DialogResult.OK;
            }
            catch
            {
                command.Transaction.Rollback();

                DialogResult = DialogResult.Abort;
                MessageBox.Show("Транзакция отменена. Данные не добавлены в базу данных. \nОбратитесь к администратору.", "Системный сбой", MessageBoxButtons.OKCancel, MessageBoxIcon.Warning);
            }


            //В таблицу Организации в поле количество прибавляем выданные планшеты
            if (mapCasesCount > 0)
            {
                MapCasesManager.SetDBMapCasesSumm(organizationsCB.Text, mapCasesCount);
            }

            int allMapCases = MapCasesManager.GetMapCasesSum(organizationsCB.Text);
            if (allMapCases >= 200)
            {
                MessageBox.Show(String.Format("Количество планшетов, выданных организации {0} составляет {1}.\nНеобходимо получить от организации акты об удалении, после чего изменить сумму в таблице Выданные планшеты\n(Данные - Выданные планшеты).", organizationsCB.Text, allMapCases), "Информация", MessageBoxButtons.OK, MessageBoxIcon.Warning);
            }

            if (checkBox3.Checked == true)
            {
                try
                {
                    _printingService.Print(lastID,
                                           Convert.ToDateTime(textBox3.Text),
                                           docsForInsert ?? new List <Document> (),
                                           organizationsCB.Text,
                                           dm.GetClientName(Convert.ToInt32(clientsCB.SelectedValue)),
                                           clientsCB.Text,
                                           costTB.Text,
                                           memoTB.Text,
                                           GetInfoType(),
                                           employCB.Text,
                                           _employeeService.GetActiveSign(),
                                           entryType: typeDocCB.Text);
                }
                catch (Exception ex) { MessageBox.Show(ex.Message); }
            }

            Close();
            callback.Invoke(DialogResult);
            RepeatEnter : Cursor = Cursors.Default; SaveItem.Enabled = true;
        }
Esempio n. 3
0
        private void SaveEditingBtn_Click(object sender, EventArgs e)
        {
            string in_type = null;

            if (checkBox1.Checked == true)
            {
                in_type = "В электронном виде";
            }
            if (checkBox2.Checked == true)
            {
                in_type = "На бумажном носителе";
            }
            if ((checkBox1.Checked == true) && (checkBox2.Checked == true))
            {
                in_type = "На электронном и бумажном носителе";
            }
            #region Проверки заполнения
            if (clientsCB.SelectedValue == null)
            {
                MessageBox.Show("Не выбран клиент или организация. Повторите ввод.", "Ошибка заполнения", MessageBoxButtons.OK, MessageBoxIcon.Information);
                return;
            }
            if (((organizationsCB.Text == "") || organizationsCB.Text == "Начните вводить имя организации") || (in_type == null) || (clientsCB.Text == "") || (costTBox.Text == ""))
            {
                MessageBox.Show("Не все поля формы заполнены. \nВнесите всю необходимую информацию и повторите попытку.", "Ошибка заполнения формы", MessageBoxButtons.OK, MessageBoxIcon.Information);
                return;
            }
            if (((organizationsCB.SelectedIndex == -1) && (organizationsCB.Text != "Частное лицо")) || (clientsCB.SelectedIndex == -1))
            {
                MessageBox.Show("Выбран несуществующий клиент или организация. Проверьте правильность ввода.", "Ошибка заполнения формы", MessageBoxButtons.OK, MessageBoxIcon.Information);
                return;
            }
            //if (dateTimePicker1.Value > DateTime.Now)
            //{
            //    MessageBox.Show("Дата документа задана не верно", "Ошибка заполнения", MessageBoxButtons.OK, MessageBoxIcon.Warning);
            //    goto RepeatEnter;
            //}
            if (memoTB.Text.Length > 4000)
            {
                if (MessageBox.Show("Слишком большой объем поля описания.\n\nСохранить введенное значение?", "Внимание", MessageBoxButtons.OKCancel, MessageBoxIcon.Information) != DialogResult.OK)
                {
                    return;
                }
            }
            #endregion

            //Если пользователь изменил колличество лпаншетов в списке. Вызовем метод пересчета планшетов.
            //И запишем, сколько планшетов было ДО редактирования
            //А также запишем организацию которая была в начале редактирования. Потомучто если пользователь изменить организацию, приплюсоваь планшеты уже нужно будет ей
            string organization_before         = rowToEdit["Организация"].ToString();
            int    mapCasesBeforeEdit          = 0;
            int    requireConfirmActBeforeEdit = 0;
            if (rowToEdit["MapCasesCount"] != DBNull.Value)
            {
                mapCasesBeforeEdit = Convert.ToInt32(rowToEdit["MapCasesCount"]);
            }
            if (rowToEdit["RequireConfirmAct"] != DBNull.Value)
            {
                requireConfirmActBeforeEdit = Convert.ToInt32(rowToEdit["RequireConfirmAct"]);
            }
            int mapCasesCount = RegexAnalys.MapCasesCount(memoTB.Text);

            try
            {
                // if (textBox1.Text != "")
                // rowToEdit["NumRazresh"] = textBox1.Text;
                // else rowToEdit["NumRazresh"] = DBNull.Value;
                rowToEdit["Memo"]        = memoTB.Text;
                rowToEdit["Выдал"]       = comboBox3.Text;
                rowToEdit["Организация"] = organizationsCB.SelectedValue;
                rowToEdit["Документ"]    = typeDocCB.Text;
                //if (dateTimePicker1.Value != new DateTime(2000, 01, 01))
                //  rowToEdit["DateRazresh"] = dateTimePicker1.Value;
                // else rowToEdit["DateRazresh"] = DBNull.Value;
                rowToEdit["Дата"]          = Convert.ToDateTime(textBox3.Text);
                rowToEdit["in_type"]       = in_type;
                rowToEdit["ClientName"]    = clientsCB.Text;
                rowToEdit["Cost"]          = costTBox.Text;
                rowToEdit["MapCasesCount"] = mapCasesCount;
                rowToEdit["Client_ID"]     = clientsCB.SelectedValue.ToString();
                // В сумму планшетов прибавим разностьтого что стало после редактирования и до
                int actual_RequestToDel = MapCasesManager.GetActualRequireAct(Convert.ToInt32(rowToEdit["Номер"]));

                if ((organization_before != rowToEdit["Организация"].ToString()))
                {
                    MapCasesManager.SetDBMapCasesSumm(organization_before, -requireConfirmActBeforeEdit); //у старой организации удаляем все ее планшеты из этой записи
                    MapCasesManager.SetDBMapCasesSumm(organizationsCB.Text, mapCasesCount);               //а новой прибавляем то что введено
                    rowToEdit["RequireConfirmAct"] = mapCasesCount;
                }
                else
                {
                    MapCasesManager.SetDBMapCasesSumm(organizationsCB.Text, mapCasesCount - mapCasesBeforeEdit);
                    rowToEdit["RequireConfirmAct"] = (requireConfirmActBeforeEdit + (mapCasesCount - mapCasesBeforeEdit) >= 0) ?
                                                     requireConfirmActBeforeEdit + (mapCasesCount - mapCasesBeforeEdit) : 0;
                }


                var docsForChange = GetDocsAfterEdit();

                bool insertSucsedeed = false, deleteSucsedeed = false;
                deleteSucsedeed = dm.DeleteDocsForId(editId);
                if (deleteSucsedeed)
                {
                    insertSucsedeed = dm.InsertDocuments(docsForChange);
                }

                if (deleteSucsedeed & insertSucsedeed)
                {
                    RowEdit.ChangeRow(rowToEdit);
                }
                else
                {
                    throw new Exception("Не удалось записать документы в базу данных. Изменение записи отменено.");
                }
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message);
            }

            this.Close();
            callback(DialogResult.OK);
        }