123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503 |
- using System;
- using System.Collections.Generic;
- using System.ComponentModel;
- using System.Data;
- using System.Data.SqlClient;
- using System.Drawing;
- using System.Linq;
- using System.Text;
- using System.Threading.Tasks;
- using System.Windows.Forms;
- namespace Швейная_фабрика
- {
- public partial class FormAddZak : Form
- {
- public FormAddZak()
- {
- InitializeComponent();
- }
- public string IdZakazchik = FormMain.IDUser; // код авторизовавшегося заказчика
- string IdTkan = "", IdFur = "", IdIzd = ""; // код выбранной ткани и фурнитуры
- string TxtCon = @"Data Source=213.155.192.79,3002;Initial Catalog=СlothesFactoryLG;Persist Security Info=True;User ID=u21lebed;Password=hgm8";
- class ItemTkani : Panel
- {
- public System.Windows.Forms.Label LblComment;
- public System.Windows.Forms.Label LblLength;
- public System.Windows.Forms.Label LblWith;
- public System.Windows.Forms.Label LblColor;
- public System.Windows.Forms.Label LblTitle;
- public System.Windows.Forms.Label lblID;
- public System.Windows.Forms.PictureBox PbxPhoto;
- public ItemTkani()
- {
- this.LblTitle = new System.Windows.Forms.Label();
- this.LblColor = new System.Windows.Forms.Label();
- this.LblWith = new System.Windows.Forms.Label();
- this.LblLength = new System.Windows.Forms.Label();
- this.LblComment = new System.Windows.Forms.Label();
- this.lblID = new System.Windows.Forms.Label();
- this.PbxPhoto = new System.Windows.Forms.PictureBox();
- //
- // panel1
- //
- this.BackColor = System.Drawing.Color.White;
- this.Controls.Add(this.LblComment);
- this.Controls.Add(this.LblLength);
- this.Controls.Add(this.LblWith);
- this.Controls.Add(this.LblColor);
- this.Controls.Add(this.LblTitle);
- this.Controls.Add(this.PbxPhoto);
- this.Location = new System.Drawing.Point(13, 13);
- this.Name = "panel1";
- this.Size = new System.Drawing.Size(390, 161);
- this.TabIndex = 0;
- //
- // LblTitle
- //
- this.LblTitle.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
- | System.Windows.Forms.AnchorStyles.Right)));
- this.LblTitle.Location = new System.Drawing.Point(225, 13);
- this.LblTitle.Name = "LblTitle";
- this.LblTitle.Size = new System.Drawing.Size(147, 23);
- this.LblTitle.TabIndex = 1;
- this.LblTitle.Text = "label1";
- //
- // LblColor
- //
- this.LblColor.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
- | System.Windows.Forms.AnchorStyles.Right)));
- this.LblColor.Location = new System.Drawing.Point(225, 41);
- this.LblColor.Name = "LblColor";
- this.LblColor.Size = new System.Drawing.Size(147, 23);
- this.LblColor.TabIndex = 2;
- this.LblColor.Text = "label2";
- //
- // LblWith
- //
- this.LblWith.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
- | System.Windows.Forms.AnchorStyles.Right)));
- this.LblWith.Location = new System.Drawing.Point(225, 73);
- this.LblWith.Name = "LblWith";
- this.LblWith.Size = new System.Drawing.Size(147, 23);
- this.LblWith.TabIndex = 3;
- this.LblWith.Text = "label3";
- //
- // LblLength
- //
- this.LblLength.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
- | System.Windows.Forms.AnchorStyles.Right)));
- this.LblLength.Location = new System.Drawing.Point(225, 100);
- this.LblLength.Name = "LblLength";
- this.LblLength.Size = new System.Drawing.Size(147, 23);
- this.LblLength.TabIndex = 4;
- this.LblLength.Text = "label4";
- //
- // LblComment
- //
- this.LblComment.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
- | System.Windows.Forms.AnchorStyles.Right)));
- this.LblComment.Location = new System.Drawing.Point(225, 126);
- this.LblComment.Name = "LblComment";
- this.LblComment.Size = new System.Drawing.Size(147, 29);
- this.LblComment.TabIndex = 5;
- this.LblComment.Text = "label5";
- //
- // lblID
- //
- this.lblID.AutoSize = true;
- this.lblID.Location = new System.Drawing.Point(321, 13);
- this.lblID.Name = "lblID";
- this.lblID.Size = new System.Drawing.Size(34, 16);
- this.lblID.TabIndex = 6;
- this.lblID.Text = "lblID";
- //
- // pictureBox1
- //
- this.PbxPhoto.Location = new System.Drawing.Point(16, 13);
- this.PbxPhoto.Name = "pictureBox1";
- this.PbxPhoto.Size = new System.Drawing.Size(175, 129);
- this.PbxPhoto.TabIndex = 0;
- this.PbxPhoto.TabStop = false;
- this.PbxPhoto.SizeMode = PictureBoxSizeMode.Zoom;
- }
- }
- class ItemFurnitura : Panel
- {
- public System.Windows.Forms.Label label2;
- public System.Windows.Forms.Label label1;
- public System.Windows.Forms.Label lblID;
- public System.Windows.Forms.PictureBox PbxImage;
- public ItemFurnitura()
- {
- this.label1 = new System.Windows.Forms.Label();
- this.label2 = new System.Windows.Forms.Label();
- this.lblID = new System.Windows.Forms.Label();
- this.PbxImage = new System.Windows.Forms.PictureBox();
- //
- // panel1
- //
- this.BackColor = System.Drawing.Color.White;
- this.Controls.Add(this.label2);
- this.Controls.Add(this.label1);
- this.Controls.Add(this.PbxImage);
- this.Location = new System.Drawing.Point(13, 13);
- this.Name = "panel1";
- this.Size = new System.Drawing.Size(265, 225);
- this.TabIndex = 0;
- //
- // label1
- //
- this.label1.Location = new System.Drawing.Point(34, 163);
- this.label1.Name = "label1";
- this.label1.Size = new System.Drawing.Size(190, 23);
- this.label1.TabIndex = 1;
- this.label1.Text = "label1";
- //
- // label2
- //
- this.label2.Location = new System.Drawing.Point(34, 190);
- this.label2.Name = "label2";
- this.label2.Size = new System.Drawing.Size(190, 23);
- this.label2.TabIndex = 2;
- this.label2.Text = "label2";
- //
- // lblID
- //
- this.lblID.AutoSize = true;
- this.lblID.Location = new System.Drawing.Point(191, 190);
- this.lblID.Name = "lblID";
- this.lblID.Size = new System.Drawing.Size(44, 16);
- this.lblID.TabIndex = 3;
- this.lblID.Text = "label3";
- //
- // PbxImage
- //
- this.PbxImage.Location = new System.Drawing.Point(37, 18);
- this.PbxImage.Name = "PbxImage";
- this.PbxImage.Size = new System.Drawing.Size(187, 133);
- this.PbxImage.SizeMode = System.Windows.Forms.PictureBoxSizeMode.Zoom;
- this.PbxImage.TabIndex = 0;
- this.PbxImage.TabStop = false;
- }
- }
- struct Tkani
- {
- public string Title, Color, With, Length, Comment, Photo, ID;
- }
- struct Furnitura
- {
- public string Title, CountFur, Image, ID;
- }
- List<Tkani> LstTkani = new List<Tkani>();
- ItemTkani CurrentTkan;
- List<Furnitura> LstFurnitura = new List<Furnitura>();
- ItemFurnitura CurrentFurnitura;
- void GetDateFromDBForTkani()
- {
- SqlConnection Con = new SqlConnection(TxtCon);
- Con.Open();
- string TxtQuery =
- @"select Tkan.id_Tkan, Tkan.Title as TitleTkan, Color.Title as TitleColor, Length, Width, Comment, NamePhoto
- from Tkan join Color on Tkan.id_color = Color.id_colors";
- SqlCommand Query = new SqlCommand(TxtQuery, Con);
- SqlDataReader Res = Query.ExecuteReader();
- LstTkani.Clear();
- while (Res.Read())
- {
- Tkani tkan = new Tkani();
- tkan.Title = Res["TitleTkan"].ToString();
- tkan.Color = Res["TitleColor"].ToString();
- tkan.With = Res["Width"].ToString();
- tkan.Length = Res["Length"].ToString();
- tkan.Comment = Res["Comment"].ToString();
- tkan.ID = Res["id_Tkan"].ToString();
- tkan.Photo = Res["NamePhoto"].ToString();
- LstTkani.Add(tkan);
- }
- Con.Close();
- }
- void GetDateFromDBForFurnitura()
- {
- SqlConnection Con = new SqlConnection(TxtCon);
- Con.Open();
- SqlCommand Query = new SqlCommand("select * from Furnitura ", Con);
- SqlDataReader Res = Query.ExecuteReader();
- LstFurnitura.Clear();
- while (Res.Read())
- {
- Furnitura fur = new Furnitura();
- fur.Title = Res["namefur"].ToString();
- fur.CountFur = Res["countfur"].ToString();
- fur.Image = Res["photo"].ToString();
- fur.ID = Res["id_fur"].ToString();
- LstFurnitura.Add(fur);
- }
- Con.Close();
- }
- void FillPanelForFurnitura()
- {
- //очистить панель от старых данных
- TlpFurnitura.Controls.Clear();
- //перебор записей о товарах
- for (int i = 0; i <= LstFurnitura.Count - 1; i++)
- {
- ItemFurnitura Item = new ItemFurnitura();
- Item.label1.Text = "Название: "+LstFurnitura[i].Title;
- Item.label2.Text = "Кол-во на складе: "+LstFurnitura[i].CountFur;
- Item.lblID.Text = LstFurnitura[i].ID;
- try
- {
- Item.PbxImage.Image = Image.FromFile(Application.StartupPath + "\\furnitur\\" + LstFurnitura[i].Image);
- }
- catch
- {
- Item.PbxImage.Image = Image.FromFile(Application.StartupPath + "\\furnitur\\picture.png");
- }
- Item.Click += Item_Click;
- Item.label1.Click += Label1_Click;
- Item.label2.Click += Label1_Click;
- Item.PbxImage.Click += Label1_Click;
- if (i == 0)
- {
- CurrentFurnitura = Item;
- CurrentFurnitura.BackColor = Color.LightGreen;
- IdFur = CurrentFurnitura.lblID.Text;
- TbxNameFur.Text = CurrentFurnitura.label1.Text.Substring(CurrentFurnitura.label1.Text.LastIndexOf(": ") + 2);
- TbxCountFurSklad.Text = CurrentFurnitura.label2.Text.Substring(CurrentFurnitura.label2.Text.LastIndexOf(": ")+2);
- }
- //добавить плитку в контейнер
- TlpFurnitura.Controls.Add(Item);
- }
- }
- private void Label1_Click(object sender, EventArgs e)
- {
- CurrentFurnitura.BackColor = Color.White;
- CurrentFurnitura = (sender as Control).Parent as ItemFurnitura;
- IdFur = CurrentFurnitura.lblID.Text;
- TbxNameFur.Text = CurrentFurnitura.label1.Text.Substring(CurrentFurnitura.label1.Text.LastIndexOf(": ") + 2);
- TbxCountFurSklad.Text = CurrentFurnitura.label2.Text.Substring(CurrentFurnitura.label2.Text.LastIndexOf(": ") + 2);
- CurrentFurnitura.BackColor = Color.LightGreen;
- }
- private void Item_Click(object sender, EventArgs e)
- {
- CurrentFurnitura.BackColor = Color.White;
- CurrentFurnitura = sender as ItemFurnitura;
- IdFur = CurrentFurnitura.lblID.Text;
- TbxNameFur.Text = CurrentFurnitura.label1.Text.Substring(CurrentFurnitura.label1.Text.LastIndexOf(": ") + 2);
- TbxCountFurSklad.Text = CurrentFurnitura.label2.Text.Substring(CurrentFurnitura.label2.Text.LastIndexOf(": ") + 2);
- CurrentFurnitura.BackColor = Color.LightGreen;
- }
- void FillPanelForTkani()
- {
- //очистить панель от старых данных
- TlpTkani.Controls.Clear();
- //перебор записей о товарах
- for (int i = 0; i <= LstTkani.Count - 1; i++)
- {
- ItemTkani Item = new ItemTkani();
- Item.LblTitle.Text = "Название: " + LstTkani[i].Title;
- Item.LblColor.Text = "Цвет: "+LstTkani[i].Color;
- Item.LblWith.Text = "Ширина: "+LstTkani[i].With;
- Item.LblLength.Text = "Длинна: "+LstTkani[i].Length;
- Item.LblComment.Text = "Описание: "+LstTkani[i].Comment;
- Item.lblID.Text = LstTkani[i].ID;
- try
- {
- Item.PbxPhoto.Image = Image.FromFile(Application.StartupPath + "\\tkani\\" + LstTkani[i].Photo);
- }
- catch
- {
- Item.PbxPhoto.Image = Image.FromFile(Application.StartupPath + "\\tkani\\picture.png");
- }
- Item.Click += Item_Click1;
- Item.lblID.Click += LblID_Click;
- Item.LblColor.Click += LblID_Click;
- Item.LblComment.Click += LblID_Click;
- Item.LblLength.Click += LblID_Click;
- Item.LblTitle.Click += LblID_Click;
- Item.LblWith.Click += LblID_Click;
- Item.PbxPhoto.Click += LblID_Click;
- if (i == 0)
- {
- CurrentTkan = Item;
- CurrentTkan.BackColor = Color.LightBlue;
- IdTkan = CurrentTkan.lblID.Text;
- TbxTitle.Text = CurrentTkan.LblTitle.Text.Substring(CurrentTkan.LblTitle.Text.LastIndexOf(": ") + 2);
- TbxColor.Text = CurrentTkan.LblColor.Text.Substring(CurrentTkan.LblColor.Text.LastIndexOf(": ") + 2);
- TbxWith.Text = CurrentTkan.LblWith.Text.Substring(CurrentTkan.LblWith.Text.LastIndexOf(": ") + 2);
- TbxLength.Text = CurrentTkan.LblLength.Text.Substring(CurrentTkan.LblLength.Text.LastIndexOf(": ") + 2);
- TbxDescription.Text = CurrentTkan.LblComment.Text.Substring(CurrentTkan.LblComment.Text.LastIndexOf(": ") + 2);
- }
- //добавить плитку в контейнер
- TlpTkani.Controls.Add(Item);
- }
- }
- private void LblID_Click(object sender, EventArgs e)
- {
- CurrentTkan.BackColor = Color.White;
- CurrentTkan = (sender as Control).Parent as ItemTkani;
- IdTkan = CurrentTkan.lblID.Text;
- TbxTitle.Text = CurrentTkan.LblTitle.Text.Substring(CurrentTkan.LblTitle.Text.LastIndexOf(": ") + 2);
- TbxColor.Text = CurrentTkan.LblColor.Text.Substring(CurrentTkan.LblColor.Text.LastIndexOf(": ") + 2);
- TbxWith.Text = CurrentTkan.LblWith.Text.Substring(CurrentTkan.LblWith.Text.LastIndexOf(": ") + 2);
- TbxLength.Text = CurrentTkan.LblLength.Text.Substring(CurrentTkan.LblLength.Text.LastIndexOf(": ") + 2);
- TbxDescription.Text = CurrentTkan.LblComment.Text.Substring(CurrentTkan.LblComment.Text.LastIndexOf(": ") + 2);
- CurrentTkan.BackColor = Color.LightBlue;
- }
- private void Item_Click1(object sender, EventArgs e)
- {
- CurrentTkan.BackColor = Color.White;
- CurrentTkan = sender as ItemTkani;
- IdTkan = CurrentTkan.lblID.Text;
- TbxTitle.Text = CurrentTkan.LblTitle.Text.Substring(CurrentTkan.LblTitle.Text.LastIndexOf(": ") + 2);
- TbxColor.Text = CurrentTkan.LblColor.Text.Substring(CurrentTkan.LblColor.Text.LastIndexOf(": ") + 2);
- TbxWith.Text = CurrentTkan.LblWith.Text.Substring(CurrentTkan.LblWith.Text.LastIndexOf(": ") + 2);
- TbxLength.Text = CurrentTkan.LblLength.Text.Substring(CurrentTkan.LblLength.Text.LastIndexOf(": ") + 2);
- TbxDescription.Text = CurrentTkan.LblComment.Text.Substring(CurrentTkan.LblComment.Text.LastIndexOf(": ") + 2);
- CurrentTkan.BackColor = Color.LightBlue;
- }
- /// <summary>
- /// Определение длины ткани, которую нужно отрезать от рулона
- /// для изготовления нужного кол-ва изделий заданного размера
- /// </summary>
- /// <param name="WidthTkan">ширина рулона ткани</param>
- /// <param name="WidthIzd">ширина изделия</param>
- /// <param name="LengthIzd">длина изделия</param>
- /// <param name="CountIzd">кол-во изделий</param>
- /// <returns>длина ткани, которую нужно отрезать от рулона</returns>
- int CutTkan(int WidthTkan, int WidthIzd, int LengthIzd, int CountIzd)
- {
- // ЕСЛИ УКЛАДЫВАТЬ ИЗДЕЛИЯ НА ТКАНЬ В РУЛОНЕ ПО ШИРИНЕ ИЗДЕЛИЯ
- // кол-во изделий, умещающихся в один ряд на рулоне ткани
- int IzdInRow1 = WidthTkan / WidthIzd;
- // кол-во рядов, в каждом из которых IzdInRow1 изделий
- int Row1 = CountIzd / IzdInRow1;
- // если кол-во изделий в 1 ряду умноженное на кол-во рядов меньше
- // кол-ва всех изделий, добавить кол-во рядов
- if (IzdInRow1 * Row1 < CountIzd)
- Row1++;
- // длина ткани, которую нужно отрезать от рулона, если укладывать изделия
- // по ширине
- int CutTkan1 = LengthIzd * Row1;
- // ЕСЛИ УКЛАДЫВАТЬ ИЗДЕЛИЯ НА ТКАНЬ В РУЛОНЕ ПО ДЛИНЕ ИЗДЕЛИЯ
- // кол-во изделий, умещающихся в один ряд на рулоне ткани
- int IzdInRow2 = WidthTkan / LengthIzd;
- // кол-во рядов, в каждом из которых IzdInRow2 изделий
- int Row2 = CountIzd / IzdInRow2;
- // если перемножить кол-во изделий в 1 ряду на кол-во рядов и полученное
- // значение меньше кол-ва необходимых изделий, значит нужно использовать
- // еще один ряд
- if (IzdInRow2 * Row2 < CountIzd)
- Row2++;
- // длина ткани, которую нужно отрезать от рулона, если укладывать изделия
- // по длине
- int CutTkan2 = WidthIzd * Row2;
- // вернуть наименьшую длину
- return Math.Min(CutTkan1, CutTkan2);
- }
- private void BtnOK_Click(object sender, EventArgs e)
- {
- // int a = CutTkan(430, 150, 200, 4);
- //this.Text = a.ToString();
- //return;
- // кол-во фурнитур, которое нужно сохранить в БД
- if (TbxCountFur.Text.Trim() == "" || TbxCountIzd.Text.Trim() == "")
- {
- MessageBox.Show("Не введено количество фурнитуры или изделий.", "Внимание!",MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
- return;
- }
- int NewCountFur = int.Parse(TbxCountFurSklad.Text) -
- int.Parse(TbxCountFur.Text) * int.Parse(TbxCountIzd.Text);
- SqlConnection con = new SqlConnection(TxtCon);
- con.Open();
- string t1 = string.Format(@"update Furnitura set countfur = {0} where id_fur = {1}", NewCountFur, IdFur);
- SqlCommand query = new SqlCommand(t1, con);
- // выполнить запрос
- query.ExecuteNonQuery();
- con.Close();
- int WidthTkan = int.Parse(TbxWith.Text); // ширина ткани
- // ширина изделия
- int WidthIzd = int.Parse(DgvIzd.CurrentRow.Cells[3].Value.ToString());
- // длина изделия
- int LengthIzd = int.Parse(DgvIzd.CurrentRow.Cells[2].Value.ToString());
- int CountIzd = int.Parse(TbxCountIzd.Text); // кол-во изделий
- // отрезать от рулона ткани кусок нужной длины
- int NewLengthTkan = int.Parse(TbxLength.Text) -
- CutTkan(WidthTkan, WidthIzd, LengthIzd, CountIzd);
- // обновить таблицу Ткани (для выделенной ткани сохранить новую длину NewLengthTkan)
- con.Open();
- string t2 = string.Format(@"update Tkan set Length = {0} where id_Tkan = {1}", NewLengthTkan, IdTkan);
- SqlCommand query1 = new SqlCommand(t2, con);
- // выполнить запрос
- query1.ExecuteNonQuery();
- con.Close();
- // код менеджера для обработки нового заказа нужно заменить на код наименее загруженного менеджера
- int IdManager = 2;
- //try
- //{
- con.Open();
- // SQL-запрос для добавления нового заказа
- string t = String.Format(@"insert into Orders (id_izd, id_zak, id_men, id_tkan, id_fur, countfur, countizd) values ({0}, {1}, {2}, {3}, {4}, {5}, {6})",
- IdIzd, IdZakazchik, IdManager, IdTkan, IdFur, TbxCountFur.Text, TbxCountIzd.Text);
- SqlCommand query2 = new SqlCommand(t, con);
- // выполнить запрос
- query2.ExecuteNonQuery();
- con.Close();
- MessageBox.Show("Заказ сформирован.", "Внимание!",
- MessageBoxButtons.OK, MessageBoxIcon.Information);
- this.Close(); // закрыть форму
- //}
- //catch
- //{
- // MessageBox.Show("Ошибка добавления нового заказа.", "Внимание!",
- // MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
- //}
- }
- private void DgvIzd_CellClick(object sender, DataGridViewCellEventArgs e)
- {
- IdIzd = DgvIzd.CurrentRow.Cells[0].Value.ToString();
- }
- private void FormZakazchik_Load(object sender, EventArgs e)
- {
- // TODO: данная строка кода позволяет загрузить данные в таблицу "сlothesFactoryLGDataSet.Izdelie". При необходимости она может быть перемещена или удалена.
- this.izdelieTableAdapter.Fill(this.сlothesFactoryLGDataSet.Izdelie);
- // TODO: данная строка кода позволяет загрузить данные в таблицу "сlothesFactoryLGDataSet.Users". При необходимости она может быть перемещена или удалена.
- this.usersTableAdapter.Fill(this.сlothesFactoryLGDataSet.Users);
- IdIzd = DgvIzd.CurrentRow.Cells[0].Value.ToString();
- GetDateFromDBForTkani();
- FillPanelForTkani();
- GetDateFromDBForFurnitura();
- FillPanelForFurnitura();
- }
-
- }
- }
|