Диплом: Автоматизация управления процессом отгрузки товара в ИП «Диденков А.Н.»

Внимание! Если размещение файла нарушает Ваши авторские права, то обязательно сообщите нам
137
// Методы
//=========================================
// Заполнить поля для нового документа
private void FillFields()
{
// Номер документа
textBoxNDoc.Text = "Новый";
// Дата документа
dateTimePickerDocDate.Value = DateTime.Now;
// Статус
DataSet data = DBControl.execСтатусДокумента(-1);// Получить данные из
таблицы БД
foreach (DataRow row in data.Tables[0].Rows)
{
idStatusDoc = Convert.ToInt32(row["Код"]);
textBoxStatus.Text = Convert.ToString(row["Наименование"]);
}
}
// Заполнить поля для документа id
private void FillFields(int id)
{
// Получить реквизиты документа
DataSet data = DBControl.execДокументРеквизиты(id);
// Отобразить реквизиты документа
foreach (DataRow row in data.Tables[0].Rows)
{
textBoxNDoc.Text = Convert.ToString(row["НомерДок"]);
dateTimePickerDocDate.Value = Convert.ToDateTime(row["Дата"]);
textBoxStatus.Text = Convert.ToString(row["НаименованиеСтатус"]);
idStatusDoc = Convert.ToInt32(row["Статус"]);
textBoxContr.Text = Convert.ToString(row["НаименованиеКонтрагент"]);
idContragent = Convert.ToInt32(row["Контрагент"]);
textBoxComment.Text = Convert.ToString(row["Комментарий"]);
idBaseDoc = Convert.ToInt32(row["ДокОснование"]);
textBoxDocZK.Text = DBControl.execДокументНомер(idBaseDoc);
}
}
// Заполнить табличную часть
private void FillTableDoc(int id)
{
// Получить табличную часть документа
DataSet data = DBControl.execДокументТаблЧасть(id);
// Отобразить табличную часть документа
foreach (DataRow row in data.Tables[0].Rows)
{
// Получить данные из источника
String idtabl = Convert.ToString(row["Код"]);
String idgoods = Convert.ToString(row["КодТов"]);
String articul = Convert.ToString(row["Артикул"]);
String name = Convert.ToString(row["Наименование"]);
String cena = Convert.ToString(row["Цена"]);
String count = Convert.ToString(row["Колич"]);
Double sum = Convert.ToDouble(row["Сумма"]);
// Отобразить в табличной части
DataGridViewCell cel1 = new DataGridViewTextBoxCell();//Код
DataGridViewCell cel2 = new DataGridViewTextBoxCell();//КодТов
DataGridViewCell cel3 = new DataGridViewTextBoxCell();//Артикул
DataGridViewCell cel4 = new DataGridViewTextBoxCell();//Наименование
DataGridViewCell cel5 = new DataGridViewTextBoxCell();//Цена
DataGridViewCell cel6 = new DataGridViewTextBoxCell();//Колич
DataGridViewCell cel7 = new DataGridViewTextBoxCell();//Сумма
cel1.Value = idtabl;
cel2.Value = idgoods;
cel3.Value = articul;
138
cel4.Value = name;
cel5.Value = cena;
cel6.Value = count;
cel7.Value = sum;
//cel5.Value = Y[i].ToString("F");
DataGridViewRow dgrow = new DataGridViewRow();
dgrow.Cells.AddRange(cel1, cel2, cel3, cel4, cel5, cel6, cel7);
dataGridViewTableDoc.Rows.Add(dgrow);
}
// Отобразить сумму документа
textBoxSum.Text = DBControl.execДокументСумма(id);
}
// Добавить строку в табличную часть
private void AddItemToTable(int id)
{
// Получить данные о товаре
DataSet data = DBControl.execТоварыТовар(id);
// Отобразить товар в табличной части
foreach (DataRow row in data.Tables[0].Rows)
{
// Получить данные из источника
String idtabl = "-1";
String idgoods = Convert.ToString(row["Код"]);
String articul = Convert.ToString(row["Артикул"]);
String name = Convert.ToString(row["Наименование"]);
String cena = Convert.ToString(row["Цена"]);
String count = "1";
String sum = Convert.ToString(row["Цена"]);
// Отобразить в табличной части
DataGridViewCell cel1 = new DataGridViewTextBoxCell();//Код
DataGridViewCell cel2 = new DataGridViewTextBoxCell();//КодТов
DataGridViewCell cel3 = new DataGridViewTextBoxCell();//Артикул
DataGridViewCell cel4 = new DataGridViewTextBoxCell();//Наименование
DataGridViewCell cel5 = new DataGridViewTextBoxCell();//Цена
DataGridViewCell cel6 = new DataGridViewTextBoxCell();//Колич
DataGridViewCell cel7 = new DataGridViewTextBoxCell();//Сумма
cel1.Value = idtabl;
cel2.Value = idgoods;
cel3.Value = articul;
cel4.Value = name;
cel5.Value = cena;
cel6.Value = count;
cel7.Value = sum;
//cel5.Value = Y[i].ToString("F");
DataGridViewRow dgrow = new DataGridViewRow();
dgrow.Cells.AddRange(cel1, cel2, cel3, cel4, cel5, cel6, cel7);
dataGridViewTableDoc.Rows.Add(dgrow);
}
}
// Удалить строку из табличной части
private void DelItemFromTable()
{
int nrow=dataGridViewTableDoc.SelectedCells[0].RowIndex;
String idstr = (String)dataGridViewTableDoc.Rows[nrow].Cells[0].Value;
if (idstr != "-1") delitems.Add(idstr);
dataGridViewTableDoc.Rows.RemoveAt(nrow);
}
// Перерасчет суммы документа
private void RecalcSumDoc()
{
Double sum = 0;
foreach (DataGridViewRow row in dataGridViewTableDoc.Rows)
{
Double sumrow = Convert.ToDouble(row.Cells[6].Value);
sum += sumrow;
139
}
textBoxSum.Text = sum.ToString("F");
}
// Проверка документа
private Boolean CheckDoc()
{
if (idContragent < 0)
{
MessageBox.Show("Не выбран контрагент!");
return false;
}
return true;
}
// Сохранить заголовочную часть
private void SaveTitleDoc()
{
DataTable dataTable = new DataTable();
dataTable.Columns.Add(new DataColumn("Код",
System.Type.GetType("System.Int32")));
dataTable.Columns.Add(new DataColumn("НомерДок",
System.Type.GetType("System.String")));
dataTable.Columns.Add(new DataColumn("Дата",
System.Type.GetType("System.DateTime")));
dataTable.Columns.Add(new DataColumn("Тип",
System.Type.GetType("System.Int32")));
dataTable.Columns.Add(new DataColumn("Контрагент",
System.Type.GetType("System.Int32")));
dataTable.Columns.Add(new DataColumn("Статус",
System.Type.GetType("System.Int32")));
dataTable.Columns.Add(new DataColumn("ДокОснование",
System.Type.GetType("System.Int32")));
dataTable.Columns.Add(new DataColumn("Комментарий",
System.Type.GetType("System.String")));
DataRow dataRow = dataTable.NewRow();
dataRow["Код"] = idDoc;
dataRow["НомерДок"] = textBoxNDoc.Text;
dataRow["Дата"] = dateTimePickerDocDate.Value;
dataRow["Тип"] = TypeDoc;
dataRow["Контрагент"] = idContragent;
dataRow["Статус"] = idStatusDoc;
dataRow["ДокОснование"] = idBaseDoc;
dataRow["Комментарий"] = textBoxComment.Text;
dataTable.Rows.Add(dataRow);
DataSet data = new DataSet();// Для данных заголовочной части
data.Tables.Add(dataTable);
idDoc = DBControl.execДокументЗаголовокСохранить(data);
if (idDoc < 0)
{
MessageBox.Show("Ошибка при сохранении документа!");
}
}
// Сохранить табличную часть
private void SaveTableDoc()
{
if (idDoc > 0)
{
DataTable dataTable = new DataTable();
dataTable.Columns.Add(new DataColumn("Код",
System.Type.GetType("System.String")));
dataTable.Columns.Add(new DataColumn("КодДок",
System.Type.GetType("System.String")));
dataTable.Columns.Add(new DataColumn("КодТов",
System.Type.GetType("System.String")));
dataTable.Columns.Add(new DataColumn("Колич",
System.Type.GetType("System.String")));
140
dataTable.Columns.Add(new DataColumn("Цена",
System.Type.GetType("System.String")));
foreach (DataGridViewRow row in dataGridViewTableDoc.Rows)
{
DataRow dataRow = dataTable.NewRow();
dataRow["Код"] = Convert.ToString(row.Cells[0].Value);
dataRow["КодДок"] = idDoc.ToString();
dataRow["КодТов"] = Convert.ToString(row.Cells[1].Value);
dataRow["Колич"] = Convert.ToString(row.Cells[5].Value);
dataRow["Цена"] = Convert.ToString(row.Cells[4].Value);
dataTable.Rows.Add(dataRow);
}
DataSet data = new DataSet();// Для данных заголовочной части
data.Tables.Add(dataTable);
DBControl.execДокументТаблицаСохранить(data);
DBControl.execДокументТаблицаУдалить(delitems);
}
}
// Сохранить документ
private void SaveDoc()
{
SaveTitleDoc();
SaveTableDoc();
}
// Установить документ-основание
public void SetBaseDoc(int id)
{
idBaseDoc = id;
textBoxDocZK.Text = DBControl.execДокументНомер(idBaseDoc);
DataSet data = DBControl.execДокументКонтрагент(id);
// Отобразить табличную часть документа
foreach (DataRow row in data.Tables[0].Rows)
{
// Получить данные из источника
idContragent = Convert.ToInt32(row["Код"]);
textBoxContr.Text = Convert.ToString(row["Наименование"]);
}
CreateTablDoc();
}
// Заполнить табличную часть документа на основе документа-заказа
private void CreateTablDoc()
{
// Получить табличную часть документа
DataSet data = DBControl.execДокументРНТаблЧасть(idBaseDoc);
// Отобразить табличную часть документа
foreach (DataRow row in data.Tables[0].Rows)
{
// Получить данные из источника
String idtabl = Convert.ToString(row["Код"]);
String idgoods = Convert.ToString(row["КодТов"]);
String articul = Convert.ToString(row["Артикул"]);
String name = Convert.ToString(row["Наименование"]);
String cena = Convert.ToString(row["Цена"]);
String count = Convert.ToString(row["Колич"]);
Double sum = Convert.ToDouble(row["Сумма"]);
// Отобразить в табличной части
DataGridViewCell cel1 = new DataGridViewTextBoxCell();//Код
DataGridViewCell cel2 = new DataGridViewTextBoxCell();//КодТов
DataGridViewCell cel3 = new DataGridViewTextBoxCell();//Артикул
DataGridViewCell cel4 = new DataGridViewTextBoxCell();//Наименование
DataGridViewCell cel5 = new DataGridViewTextBoxCell();//Цена
DataGridViewCell cel6 = new DataGridViewTextBoxCell();//Колич
DataGridViewCell cel7 = new DataGridViewTextBoxCell();//Сумма
cel1.Value = idtabl;
cel2.Value = idgoods;
141
cel3.Value = articul;
cel4.Value = name;
cel5.Value = cena;
cel6.Value = count;
cel7.Value = sum;
//cel5.Value = Y[i].ToString("F");
DataGridViewRow dgrow = new DataGridViewRow();
dgrow.Cells.AddRange(cel1, cel2, cel3, cel4, cel5, cel6, cel7);
dataGridViewTableDoc.Rows.Add(dgrow);
}
// Отобразить сумму документа
RecalcSumDoc();
}
//=========================================
// События
//=========================================
private void buttonSelectКонтрагент_Click(object sender, EventArgs e)
{
FormSprPartners frm = new FormSprPartners(true);
frm.ShowDialog();
if (frm.DialogResult == DialogResult.OK)
{
idContragent = frm.SelectId;
textBoxContr.Text = frm.SelectName;
}
}
private void toolStripButtonAdd_Click(object sender, EventArgs e)
{
FormSprGoods frm = new FormSprGoods(true);
frm.ShowDialog();
if (frm.DialogResult == DialogResult.OK)
{
AddItemToTable(frm.SelectId);
RecalcSumDoc();
}
}
private void toolStripButtonDel_Click(object sender, EventArgs e)
{
DelItemFromTable();
RecalcSumDoc();
}
private void dataGridViewTableDoc_CellValueChanged(object sender,
DataGridViewCellEventArgs e)
{
if ((e.ColumnIndex == 4 || e.ColumnIndex == 5) && (e.RowIndex >= 0))
{
Double cena =
Convert.ToDouble(dataGridViewTableDoc.Rows[e.RowIndex].Cells[4].Value);
Double count =
Convert.ToDouble(dataGridViewTableDoc.Rows[e.RowIndex].Cells[5].Value);
Double sum = cena * count;
dataGridViewTableDoc.Rows[e.RowIndex].Cells[6].Value =
sum.ToString("F");
RecalcSumDoc();
}
}
private void DocRN_FormClosing(object sender, FormClosingEventArgs e)
{
Boolean checkDoc = CheckDoc();
if ((DialogResult == DialogResult.OK) && !checkDoc) e.Cancel = true;
if ((DialogResult == DialogResult.OK) && checkDoc) SaveDoc();
}
}
}
142
DocZKP.cs
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using Microsoft.Reporting.WinForms;
namespace Storage.Forms.Reports
{
public partial class MoveGoods : Form
{
public MoveGoods()
{
InitializeComponent();
}
private void buttonGoReport_Click(object sender, EventArgs e)
{
this.движенияТоваровTableAdapter.Fill(this.dbstorageDataSet.ДвиженияТоваров,
dateTimePickerBegin.Value, dateTimePickerEnd.Value);
ReportParameter p1 = new ReportParameter("ReportParameterTimeBegin",
dateTimePickerBegin.Value.ToString());
ReportParameter p2 = new ReportParameter("ReportParameterTimeEnd",
dateTimePickerEnd.Value.ToString());
reportViewer1.LocalReport.SetParameters(new ReportParameter[] { p1, p2
});
this.reportViewer1.RefreshReport();
}
}
}
DBControl.cs
//=======================================
//
// Для работы с базой данных
//
//=======================================
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Data.SqlClient;
using System.Data;
using System.Windows.Forms;
using System.IO;
namespace Storage
{
static class DBControl
{
private static String FNAMECONFIG = "config.ini";//Имя файла со строкой
подключения
static DBControl()
{
setConnectionString();//Устанавливаем строку соединения с БД
}
//==================================================================
// Свойства
//==================================================================
public static String ConnectionString { get; set; }
143
//==================================================================
// Методы работы со стрококй подкючения БД
//==================================================================
private static void setConnectionString()
{
//Получить строку соединения из параметров
ConnectionString =
Properties.Settings.Default["ConnectionToDB"].ToString();
if (!TestConnect(ConnectionString))
{// Если строка подключения не работает
// Загрузить строку соединения из файла
ConnectionString = System.IO.File.ReadAllText(@FNAMECONFIG);
if (TestConnect(ConnectionString))
{// Если строка успешно протестирована, то установить ее по
умолчанию
//connectionstring = connstr;
try
{
Properties.Settings.Default["ConnectionToDB"] =
ConnectionString;//Устанавливаем строку для проекта
Properties.Settings.Default.Save();
}
catch
{
MessageBox.Show("Невозможно сохранить строку подключения!");
}
}
else MessageBox.Show("Необходимо настроить подключение. Настройка ->
Подключение");
}
}
// Сохранить строку подключения в файл
private static void SaveConnectionString()
{
//Сохраняем строку соединения в файл
System.IO.File.WriteAllText(@FNAMECONFIG, ConnectionString);
Properties.Settings.Default["ConnectionToDB"] =
ConnectionString;//Устанавливаем строку для проекта
Properties.Settings.Default.Save();
//MessageBox.Show(Properties.Settings.Default["ConnectionToDB"].ToString());
}
// Создать строку подключения
public static bool CreateConnectionString(string datasource, string
initialcatalog, bool integratedsecurity, string userid, string password)
{
//Data Source=VETALCOMP\SQLEXPRESS;Initial Catalog=dbforecast;Integrated
Security=True
bool value = false;
string connstr = "Data Source=" + datasource + ";Initial Catalog=" +
initialcatalog;
if (integratedsecurity)
{
connstr = connstr + ";Integrated Security=True";
}
else
{
connstr = connstr + "User ID=" + userid + ";Password=" + password;
}
if (TestConnect(connstr))
{
ConnectionString = connstr;
SaveConnectionString();//Сохраняем в настройках
value = true;
//SetConnectionString();//Читаем из файла и тестируем
144
}
return value;
}
// Получить параметры из строки подключения
public static String GetDataFromConnectionString(string namedata)
{
string[] words = ConnectionString.Split(';');
string value = "";
foreach (string word in words)
{
//Console.WriteLine(word);
if (word.IndexOf(namedata) > -1)
{
string[] wrds = word.Split('=');
value = wrds[1];
}
}
return value.Trim();
}
// Тестирование соединения с БД
public static bool TestConnect(String constr)
{
SqlConnection conn = new SqlConnection();
conn.ConnectionString = constr;
bool value = true;
try
{
conn.Open();
}
//catch (SqlException ex)
catch
{
value = false;
//MessageBox.Show("Проверьте параметры соединения Настройки-
>Подключение..." + ex.Message);
}
finally
{
conn.Close();
}
return value;
}
//==================================================================
// Методы работы с БД
//==================================================================
// Выполнение запроса, который не возвращает результат
private static void execNonQuery(String CommandText)
{
//Соединяемся с БД
SqlConnection conn = new SqlConnection();
conn.ConnectionString = ConnectionString;
conn.Open();
//Формируем команду
SqlCommand comm = conn.CreateCommand();
comm.CommandText = CommandText;
//Выполняем запрос
comm.ExecuteNonQuery();
conn.Close();
}
// Выполнение запроса, который возвращает код добавленной записи
public static int ExecAdd(String CommandText)
{
int newid = -1;
SqlConnection conn = new SqlConnection();//Соединяемся с БД
try
145
{
conn.ConnectionString = ConnectionString;
conn.Open();
//Формируем команду
SqlCommand comm = conn.CreateCommand();
comm.CommandText = CommandText;
// Устанавливается время ожидания ответа сервера
//if (CommandTimeout != null) comm.CommandTimeout =
(int)CommandTimeout;
//Выполняем запрос
newid = (Int32)comm.ExecuteScalar();
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
finally
{
conn.Close();
}
return newid;
}
// Выполнение запроса, который возвращает значение типа Double
public static Double ExecCommand(String CommandText)
{
Double value = 0;
SqlConnection conn = new SqlConnection();//Соединяемся с БД
try
{
conn.ConnectionString = ConnectionString;
conn.Open();
//Формируем команду
SqlCommand comm = conn.CreateCommand();
comm.CommandText = CommandText;
// Устанавливается время ожидания ответа сервера
//if (CommandTimeout != null) comm.CommandTimeout =
(int)CommandTimeout;
//Выполняем запрос
Object obj = comm.ExecuteScalar();
value = obj == DBNull.Value ? 0 : Convert.ToDouble(obj);
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
finally
{
conn.Close();
}
return value;
}
// Получить набор данных
private static DataSet GetDataSet(String CommandText)
{
//Соединяемся с БД
SqlConnection conn = new SqlConnection();
conn.ConnectionString = ConnectionString;
conn.Open();
SqlDataAdapter adapt = new SqlDataAdapter(CommandText, conn);
DataSet data = new DataSet();
adapt.Fill(data);
conn.Close();
return data;
}
// Добавить изображение отдельной записью
146
public static int AddImage()
{
int idimg = -1;
OpenFileDialog openFileFoto = new OpenFileDialog();
if (openFileFoto.ShowDialog() == DialogResult.OK)
{
//Сохраняем изображение
//1. настраиваем объект SqlConnection и формируем объект SqlCommand:
String tbname = "Изображения";
String fieldnamefoto = "Изображение";
String CommandText = "insert into " + tbname + " ( " + fieldnamefoto
+ ") values(@ImageByte " + ")\n SELECT CAST(scope_identity() AS int)";
SqlConnection connection = new SqlConnection(ConnectionString);
SqlCommand cmd = new SqlCommand(CommandText, connection);
//2. Затем, используя тип FileStream читаем содержимое файла
FileStream fStream = new FileStream(openFileFoto.FileName,
FileMode.Open, FileAccess.Read);
//3. Теперь создадим массив байтов размерностью в количество
полученных байтов и переместим в него данные из объекта fStream:
//Таким образом мы получили массив байтов, представляющих исходное
изображение.
Byte[] imageBytes = new byte[fStream.Length];
fStream.Read(imageBytes, 0, imageBytes.Length);
//4. Теперь осалось лишь настроить параметры для команды вставки
SqlParameter par = new SqlParameter("@ImageByte", SqlDbType.Image);
par.Value = imageBytes;
cmd.Parameters.Add(par);
//5. Передаем в БД готовую команду на выполнение:
connection.Open();
//cmd.ExecuteNonQuery();
idimg = Convert.ToInt32(cmd.ExecuteScalar());
connection.Dispose();
}
return idimg;
}
// Удалить изображение
public static void execУдалитьИзображение(int id)
{
String CommandText = "exec УдалитьИзображение " + id.ToString();
execNonQuery(CommandText);
}
// Удалить товар
public static void execТоварыУдалить(int id)
{
String CommandText = "exec ТоварыУдалить " + id.ToString();
execNonQuery(CommandText);
}
// Установить изображение товара
public static void execТоварыУстКодИзображения(int id, int idimg)
{
String CommandText = "exec ТоварыУстКодИзображения " + id.ToString() +
", " + idimg.ToString();
execNonQuery(CommandText);
}
// Добавить новый товар
public static int execТоварыДобавить(String Артикул, String Наименование,
String Цена, String Описание)
{
String CommandText = "exec ТоварыДобавить '" + Артикул + "', '" +
Наименование + "', " + Цена + ", '" + Описание + "'";
return ExecAdd(CommandText);
}
// Сохранить изменения о товре
public static void execТоварыИзменить(int id, String Артикул, String
Наименование, String Цена, String Описание)

Смотрите также:

"Автоматизация обработки заявок ООО "Проектно-Строительная Компания"
"Автоматизация процесса аттестации персонала для ООО "Нэт Бай Нэт Холдинг"
"Анализ интернет-активности конкурентов ( на примере конкурентов "Газпром нефть")
"Бухгалтерский учёт и аудит расчётов с подотчётними лицами в организации на примере ООО "ЛОЦ 10""
«Психологическое сопровождение персонала в организации на примере ООО «Крокус»
Cовершенствование деловой оценки персонала в организации (на примере ООО "Даймонд кейтеринг развитие")
IPO - инструмент финансирования деятельности организации. На примере ПАО «Нефтяная компания «Лукойл»
PR как средство продвижения организации (на примере ПАО "Тамбовский завод "Комсомолец им. Н.С. Артемова")
PR-коммуникации в сфере общественного питания (на примере кафе-кондитерской «Cream Cheese»)
SMM как средство повышения эффективности работы учреждений социокультурной сферы (на примере Малого театра)