Разработка подсистемы документооборота в системе управления проектами сервисной компании

Сущность логистического бизнес-процесса. Функциональная, инфологическая и даталогическая модели предметной области. Выбор языка и средства программирования. Разработка и описание программного обеспечения для автоматизации закупок на предприятии.

Рубрика Программирование, компьютеры и кибернетика
Вид дипломная работа
Язык русский
Дата добавления 29.06.2012
Размер файла 4,8 M

Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже

Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.

{

bool isError = false; //Отображать ли ошибку в строке

List<DataGridViewCell> listCells = new List<DataGridViewCell>();

listCells.Add(mainDGV.Rows[e.RowIndex].Cells[0]);

listCells.Add(mainDGV.Rows[e.RowIndex].Cells[1]);

listCells.Add(mainDGV.Rows[e.RowIndex].Cells[2]);

listCells.Add(mainDGV.Rows[e.RowIndex].Cells[9]);

foreach (DataGridViewCell cell in listCells)

{

if (cell.EditedFormattedValue.Equals(string.Empty) || cell.EditedFormattedValue == null)

{

cell.ErrorText = "Пустые поля недопустимы";

isError = true;

}

else

cell.ErrorText = "";

}

if (isError)

mainDGV.Rows[e.RowIndex].ErrorText = "Пустые поля недопустимы";

else

mainDGV.Rows[e.RowIndex].ErrorText = "";

}

}

private void mainTGV_CellValueChanged(object sender, System.Windows.Forms.DataGridViewCellEventArgs e)

{

if (canTrackMainTGVChanges && e.ColumnIndex > -1)

{

bool needToSetValue = true;

DataGridView table = sender as DataGridView;

object newValue = table[e.ColumnIndex, e.RowIndex].Value;

PropertyInfo pi = MappingClassType.GetProperty(dict[table.Columns[e.ColumnIndex].HeaderText]);

switch (pi.PropertyType.Name)

{

case "Statuses":

{

newValue = connector.executeUniqueResultQuery

("FROM " + pi.PropertyType.Name

+ " WHERE name='" + newValue + "'");

break;

}

case "Projects":

case "Contracts":

{

needToSetValue = false; //Мы уже обновили Tag когда изменяли ячейку с TextBoxButton

break;

}

}

if (needToSetValue) pi.SetValue(table.Rows[e.RowIndex].Tag, newValue, null);

if (table.Rows[e.RowIndex].ErrorText.Equals(string.Empty))

connector.Update(table.Rows[e.RowIndex].Tag);

}

}

#endregion

#region Члены ISessionable

public Connector Connector

{

get

{

return this.connector;

}

set

{

this.connector = value;

}

}

public ISessionable SessionableTabPage

{

get

{

return this;

}

set

{

throw new NotImplementedException();

}

}

public void updateView(bool onlyDetailTables)

{

canTrackMainTGVChanges = false;

#region Заполнение ComboBox-ов

//Заполнение комбобокса "Статус"

((DataGridViewComboBoxColumn)PreviewDocsTGV.Columns[7]).Items.Clear();

((DataGridViewComboBoxColumn)PreviewFactTGV.Columns[7]).Items.Clear();

((DataGridViewComboBoxColumn)mainDGV.Columns[9]).Items.Clear();

List<Statuses> listStatuses = connector.getAllDataFromDB("Statuses").ConvertAll(new Converter<object, Statuses>(ConverterStatuses));

for (int i = 0; i < listStatuses.Count; i++)

{

((DataGridViewComboBoxColumn)PreviewDocsTGV.Columns[7]).Items.Add(listStatuses[i].name);

((DataGridViewComboBoxColumn)PreviewFactTGV.Columns[7]).Items.Add(listStatuses[i].name);

((DataGridViewComboBoxColumn)mainDGV.Columns[9]).Items.Add(listStatuses[i].name);

}

//Заполнение комбобокса "Единица измерения"

((DataGridViewComboBoxColumn)PreviewDocsTGV.Columns[2]).Items.Clear();

((DataGridViewComboBoxColumn)PreviewFactTGV.Columns[2]).Items.Clear();

List<Units_measur> listUnits_measur = connector.getAllDataFromDB("Units_measur").ConvertAll(new Converter<object, Units_measur>(ConverterUnits_measur));

for (int i = 0; i < listUnits_measur.Count; i++)

{

((DataGridViewComboBoxColumn)PreviewDocsTGV.Columns[2]).Items.Add(listUnits_measur[i].short_name);

((DataGridViewComboBoxColumn)PreviewFactTGV.Columns[2]).Items.Add(listUnits_measur[i].short_name);

}

//Заполнение комбобокса "Валюта"

((DataGridViewComboBoxColumn)PreviewDocsTGV.Columns[4]).Items.Clear();

((DataGridViewComboBoxColumn)PreviewFactTGV.Columns[4]).Items.Clear();

List<Valuta> listValuta = connector.getAllDataFromDB("Valuta").ConvertAll(new Converter<object, Valuta>(ConverterValuta));

for (int i = 0; i < listValuta.Count; i++)

{

((DataGridViewComboBoxColumn)PreviewDocsTGV.Columns[4]).Items.Add(listValuta[i].name);

((DataGridViewComboBoxColumn)PreviewFactTGV.Columns[4]).Items.Add(listValuta[i].name);

}

#endregion

if (!onlyDetailTables)

{

#region Заполнение mainDGV

mainDGV.Rows.Clear();

List<Contract_spec> listContract_spec = connector.getAllDataFromDB("Contract_spec").ConvertAll(new Converter<object, Contract_spec>(ConverterContract_spec));

for (int i = 0; i < listContract_spec.Count; i++)

{

mainDGV.Rows.Add(listContract_spec[i].name, listContract_spec[i].proj_proj_id.name_proj, listContract_spec[i].cont_cont_id.name_cont, listContract_spec[i].create_date,

listContract_spec[i].author, listContract_spec[i].client, listContract_spec[i].contractor, listContract_spec[i].summa,

listContract_spec[i].comment, listContract_spec[i].stat_stat_id.name);

mainDGV.Rows[i].Tag = listContract_spec[i];

}

if (mainDGV.Rows.Count > 0 && RowForDetail==-1) RowForDetail = 0;

#endregion

}

if (RowForDetail!= -1 && mainDGV.Rows[RowForDetail].Tag!=null)

{

#region Заполнение PreviewDocsTGV

PreviewDocsTGV.Nodes.Clear();

List<Pos_group> listPos_group = connector.getAllDataFromDB("Pos_group AS pg WHERE pg.pt_pt_id=1 AND pg.cs_cs_id = " + (mainDGV.Rows[RowForDetail].Tag as Contract_spec).cs_id).ConvertAll(new Converter<object, Pos_group>(ConverterPos_group));

for (int j = 0; j < listPos_group.Count; j++)

{

TreeGridNode node = PreviewDocsTGV.Nodes.Add(listPos_group[j].name);

node.Tag = listPos_group[j];

NodeCellsToTextBoxCells(node);

List<Positions> listPositionsFact = connector.getAllDataFromDB("Positions AS pos WHERE pos.del IS NULL AND pos.post_post_id=1 AND pos.pos_pos_id IS NULL AND pos.pg_pg_id = " + listPos_group[j].pg_id + " AND pos.cs_cs_id = " +((Contract_spec)mainDGV.Rows[RowForDetail].Tag).cs_id + " ORDER BY pos.order_number asc").ConvertAll(new Converter<object, Positions>(ConverterPositions));

for (int i = 0; i < listPositionsFact.Count; i++)

{

TreeGridNode nodeChild = node.Nodes.Add(listPositionsFact[i].article, listPositionsFact[i].name, listPositionsFact[i].um_um_id.short_name, listPositionsFact[i].count,

listPositionsFact[i].val_val_id.name, listPositionsFact[i].price, listPositionsFact[i].summa, listPositionsFact[i].stat_stat_id.name, listPositionsFact[i].delivery,

listPositionsFact[i].cancel, listPositionsFact[i].official);

nodeChild.Tag = listPositionsFact[i];

recursionAddingNodes(nodeChild, listPositionsFact[i].pos_id, listPositionsFact[i].post_post_id, listPositionsFact[i].pg_pg_id);

}

}

#endregion

#region Заполнение PreviewFactTGV

PreviewFactTGV.Nodes.Clear();

List<Pos_group> listPos_group2 = connector.getAllDataFromDB("Pos_group AS pg WHERE pg.pt_pt_id=2 AND pg.cs_cs_id = " + (mainDGV.Rows[RowForDetail].Tag as Contract_spec).cs_id).ConvertAll(new Converter<object, Pos_group>(ConverterPos_group));

for (int j = 0; j < listPos_group2.Count; j++)

{

TreeGridNode node = PreviewFactTGV.Nodes.Add(listPos_group2[j].name);

node.Tag = listPos_group2[j];

NodeCellsToTextBoxCells(node);

List<Positions> listPositionsDocs = connector.getAllDataFromDB("Positions AS pos WHERE pos.del IS NULL AND pos.post_post_id=2 AND pos.pos_pos_id IS NULL AND pos.pg_pg_id = " + listPos_group2[j].pg_id + "AND pos.cs_cs_id = " + ((Contract_spec)mainDGV.Rows[RowForDetail].Tag).cs_id + " ORDER BY pos.order_number asc").ConvertAll(new Converter<object, Positions>(ConverterPositions));

for (int i = 0; i < listPositionsDocs.Count; i++)

{

TreeGridNode nodeChild = node.Nodes.Add(listPositionsDocs[i].article, listPositionsDocs[i].name, listPositionsDocs[i].um_um_id.short_name, listPositionsDocs[i].count,

listPositionsDocs[i].val_val_id.name, listPositionsDocs[i].price, listPositionsDocs[i].summa, listPositionsDocs[i].stat_stat_id.name, listPositionsDocs[i].delivery,

listPositionsDocs[i].cancel, listPositionsDocs[i].official);

nodeChild.Tag = listPositionsDocs[i];

recursionAddingNodes(nodeChild, listPositionsDocs[i].pos_id, listPositionsDocs[i].post_post_id, listPositionsDocs[i].pg_pg_id);

}

}

#endregion

}

canTrackMainTGVChanges = true;

}

private void NodeCellsToTextBoxCells(TreeGridNode treeGridNode)

{

for (int i = 1; i < treeGridNode.Cells.Count; i++)//Заполнение пустыми ячейками строки группы

{

treeGridNode.Cells[i] = new DataGridViewTextBoxCell();

treeGridNode.Cells[i].Value = "";

treeGridNode.Cells[i].ReadOnly = true;

}

}

//Рекурсивно добавляем потомков в дерево

private void recursionAddingNodes(TreeGridNode node, int id, Pos_type pos_type, Pos_group pos_group)

{

List<Positions> listPositionsChildren = connector.getAllDataFromDB("Positions AS pos WHERE pos.del IS NULL AND pos.post_post_id=" + pos_type.pos_type_id + " AND pos.pg_pg_id = " + pos_group.pg_id + " AND pos.pos_pos_id = " + id + " ORDER BY pos.order_number asc").ConvertAll(new Converter<object, Positions>(ConverterPositions));

for (int j = 0; j < listPositionsChildren.Count; j++)

{

TreeGridNode nodeChild = node.Nodes.Add(listPositionsChildren[j].article, listPositionsChildren[j].name, listPositionsChildren[j].um_um_id.short_name, listPositionsChildren[j].count,

listPositionsChildren[j].val_val_id.name, listPositionsChildren[j].price, listPositionsChildren[j].summa, listPositionsChildren[j].stat_stat_id.name, listPositionsChildren[j].delivery,

listPositionsChildren[j].cancel, listPositionsChildren[j].official);

nodeChild.Tag = listPositionsChildren[j];

Positions newPos = new Positions();

newPos.name = ((Positions)nodeChild.Tag).name;

newPos.article = ((Positions)nodeChild.Tag).article;

newPos.cancel = ((Positions)nodeChild.Tag).cancel;

newPos.count = ((Positions)nodeChild.Tag).count;

newPos.delivery = ((Positions)nodeChild.Tag).delivery;

newPos.official = ((Positions)nodeChild.Tag).official;

newPos.delivery = ((Positions)nodeChild.Tag).delivery;

newPos.price = ((Positions)nodeChild.Tag).price;

newPos.summa = ((Positions)nodeChild.Tag).summa;

newPos.stat_stat_id = ((Positions)nodeChild.Tag).stat_stat_id;

newPos.prop_prop_id = ((Positions)nodeChild.Tag).prop_prop_id;

newPos.um_um_id = ((Positions)nodeChild.Tag).um_um_id;

newPos.val_val_id = ((Positions)nodeChild.Tag).val_val_id;

newPos.pg_pg_id = ((Positions)nodeChild.Parent.Tag).pg_pg_id;

newPos.post_post_id = ((Positions)nodeChild.Parent.Tag).post_post_id;

newPos.pos_pos_id = ((Positions)nodeChild.Parent.Tag);

newPos.cs_cs_id = ((Positions)nodeChild.Parent.Tag).cs_cs_id;

recursionAddingNodes(nodeChild, listPositionsChildren[j].pos_id, listPositionsChildren[j].post_post_id, listPositionsChildren[j].pg_pg_id);

}

}

#endregion

private void mainDGV_CellMouseDoubleClick(object sender, DataGridViewCellMouseEventArgs e)

{

var newTab = new DogovornieSpecifikaciiForm(mainDGV.Rows[e.RowIndex].Tag as Contract_spec);

(Parent as ExtendedTabControl).TabPages.Add(newTab);

(Parent as ExtendedTabControl).SelectedTab = newTab;

}

}

}

DogovornieSpecifikaciiForm.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 ControlsLibrary.Others;

using ControlsLibrary.NHibernate.MappingClasses;

using ControlsLibrary.Controls.TreeGridView;

using ControlsLibrary.Interfaces;

namespace Forms.FormModels

{

public partial class DogovornieSpecifikaciiForm : TabPage, ISessionable

{

public Connector connector = new Connector();

public static string desc = "Форма Ведение договорных спецификаций представляет собой...";

private bool flagCellMouseUpped = false;

Contract_spec ParentContractSpec = null;

private Point start;

private Point DraggablePanelOldLocation;

private Size DraggablePanelOldSize;

private bool dragPanelClosed = false;

#region Constructor

public DogovornieSpecifikaciiForm()

{

InitializeComponent();

//Прикрепление событий

docsTgv.CellMouseDown += new System.Windows.Forms.DataGridViewCellMouseEventHandler(docsTgv_CellMouseDown);

docsTgv.CellMouseUp += new System.Windows.Forms.DataGridViewCellMouseEventHandler(docsTgv_CellMouseUp);

factTgv.AllowDrop = true;

factTgv.DragEnter += factTgv_DragEnter;

factTgv.DragDrop += factTgv_DragDrop;

draggablePanel1.Move += draggablePanel1_Move;

draggablePanel1.MouseUp += draggablePanel1_MouseUp;

docsTgv.DragEnter += docsTgv_DragEnter;

docsTgv.DragDrop += docsTgv_DragDrop;

updateView(false);

//ToolTips

ToolTip t = new ToolTip();

t.SetToolTip(excelImportButton, "Импортировать в Excel");

t.SetToolTip(excelExportButton, "Экспортировать в Excel");

t.SetToolTip(DelRecordButton, "Удалить ДС");

t.SetToolTip(addRecordButton, "Добавить ДС");

t.SetToolTip(closeDraggablePanelButton, "Свернуть");

}

public DogovornieSpecifikaciiForm(Contract_spec ParentContractSpec)

{

this.ParentContractSpec = ParentContractSpec;

InitializeComponent();

//Прикрепление событий

docsTgv.CellMouseDown += new System.Windows.Forms.DataGridViewCellMouseEventHandler(docsTgv_CellMouseDown);

docsTgv.CellMouseUp += new System.Windows.Forms.DataGridViewCellMouseEventHandler(docsTgv_CellMouseUp);

factTgv.AllowDrop = true;

factTgv.DragEnter += factTgv_DragEnter;

factTgv.DragDrop += factTgv_DragDrop;

draggablePanel1.Move += draggablePanel1_Move;

draggablePanel1.MouseUp += draggablePanel1_MouseUp;

docsTgv.DragEnter += docsTgv_DragEnter;

docsTgv.DragDrop += docsTgv_DragDrop;

DC_NameTextBox.Text = ParentContractSpec.name;

DC_ProjectTextBox.Text = ParentContractSpec.proj_proj_id.name_proj;

DC_ContractTextBox.Text = ParentContractSpec.cont_cont_id.name_cont;

dateTimePicker1.Value = ParentContractSpec.create_date?? new DateTime(1753,1,1);

updateView(false);

}

#endregion

#region Разные доп функции

//Превратить все ячейки группы в тип TextBoxCell

private void NodeCellsToTextBoxCells(TreeGridNode treeGridNode)

{

for (int i = 1; i < treeGridNode.Cells.Count; i++)//Заполнение пустыми ячейками строки группы

{

treeGridNode.Cells[i] = new DataGridViewTextBoxCell();

treeGridNode.Cells[i].Value = "";

treeGridNode.Cells[i].ReadOnly = true;

}

}

void ByFactByDocsButton_Click(object sender, System.EventArgs e)

{

if ((ByFactButton.Pressed && ByDocsButton.Pressed) || (!ByFactButton.Pressed &&!ByDocsButton.Pressed))

splitContainer2.SplitterDistance = splitContainer2.Width / 2;

else

if (ByFactButton.Pressed &&!ByDocsButton.Pressed)

splitContainer2.SplitterDistance = 5;

else if (!ByFactButton.Pressed && ByDocsButton.Pressed)

splitContainer2.SplitterDistance = splitContainer2.Width - 5;

dragPanelChoisePartMove();

}

#endregion

#region Рекурсивные функции

//Рекурсивно добавляем потомков в дерево

private void recursionAddingNodes(TreeGridNode node, int id,Pos_type pos_type,Pos_group pos_group)

{

List<Positions> listPositionsChildren = connector.getAllDataFromDB("Positions AS pos WHERE pos.del IS NULL AND pos.post_post_id=" + pos_type.pos_type_id + " AND pos.pg_pg_id = " + pos_group.pg_id + " AND pos.pos_pos_id = " + id + " ORDER BY pos.order_number asc").ConvertAll(new Converter<object, Positions>(ConverterPositions));

for (int j = 0; j < listPositionsChildren.Count; j++)

{

TreeGridNode nodeChild = node.Nodes.Add(listPositionsChildren[j].article, listPositionsChildren[j].name, listPositionsChildren[j].um_um_id.short_name, listPositionsChildren[j].count,

listPositionsChildren[j].val_val_id.name, listPositionsChildren[j].price, listPositionsChildren[j].summa, listPositionsChildren[j].stat_stat_id.name, listPositionsChildren[j].delivery,

listPositionsChildren[j].cancel, listPositionsChildren[j].official);

nodeChild.Tag = listPositionsChildren[j];

Positions newPos = new Positions();

newPos.name = ((Positions)nodeChild.Tag).name;

newPos.article = ((Positions)nodeChild.Tag).article;

newPos.cancel = ((Positions)nodeChild.Tag).cancel;

newPos.count = ((Positions)nodeChild.Tag).count;

newPos.delivery = ((Positions)nodeChild.Tag).delivery;

newPos.official = ((Positions)nodeChild.Tag).official;

newPos.delivery = ((Positions)nodeChild.Tag).delivery;

newPos.price = ((Positions)nodeChild.Tag).price;

newPos.summa = ((Positions)nodeChild.Tag).summa;

newPos.stat_stat_id = ((Positions)nodeChild.Tag).stat_stat_id;

newPos.prop_prop_id = ((Positions)nodeChild.Tag).prop_prop_id;

newPos.um_um_id = ((Positions)nodeChild.Tag).um_um_id;

newPos.val_val_id = ((Positions)nodeChild.Tag).val_val_id;

newPos.pg_pg_id = ((Positions)nodeChild.Parent.Tag).pg_pg_id;

newPos.post_post_id = ((Positions)nodeChild.Parent.Tag).post_post_id;

newPos.pos_pos_id = ((Positions)nodeChild.Parent.Tag);

newPos.cs_cs_id = ((Positions)nodeChild.Parent.Tag).cs_cs_id;

recursionAddingNodes(nodeChild, listPositionsChildren[j].pos_id,listPositionsChildren[j].post_post_id,listPositionsChildren[j].pg_pg_id);

}

}

//Рекурсивно меняем у родителя данные всех детей, делаем детей относящимися ко второй (правой таблице)

private void recursionChangeParent(TreeGridNode node)

{

foreach (TreeGridNode childNode in node.Nodes)

{

Positions newPos = new Positions();

newPos.name = ((Positions)childNode.Tag).name;

newPos.article = ((Positions)childNode.Tag).article;

newPos.cancel = ((Positions)childNode.Tag).cancel;

newPos.count = ((Positions)childNode.Tag).count;

newPos.delivery = ((Positions)childNode.Tag).delivery;

newPos.official = ((Positions)childNode.Tag).official;

newPos.delivery = ((Positions)childNode.Tag).delivery;

newPos.price = ((Positions)childNode.Tag).price;

newPos.summa = ((Positions)childNode.Tag).summa;

newPos.stat_stat_id = ((Positions)childNode.Tag).stat_stat_id;

newPos.prop_prop_id = ((Positions)childNode.Tag).prop_prop_id;

newPos.um_um_id = ((Positions)childNode.Tag).um_um_id;

newPos.val_val_id = ((Positions)childNode.Tag).val_val_id;

newPos.pg_pg_id = ((Positions)childNode.Parent.Tag).pg_pg_id;

newPos.post_post_id = ((Positions)childNode.Parent.Tag).post_post_id;

newPos.pos_pos_id = ((Positions)childNode.Parent.Tag);

newPos.cs_cs_id = ((Positions)childNode.Parent.Tag).cs_cs_id;

childNode.Tag = newPos;

connector.Update(newPos);

recursionChangeParent(childNode);

}

}

private void recursionChangeNodeParent(TreeGridNode node)

{

foreach (TreeGridNode childNode in node.Nodes)

{

Positions newPos = new Positions();

newPos.name = ((Positions)childNode.Tag).name;

newPos.article = ((Positions)childNode.Tag).article;

newPos.cancel = ((Positions)childNode.Tag).cancel;

newPos.count = ((Positions)childNode.Tag).count;

newPos.delivery = ((Positions)childNode.Tag).delivery;

newPos.official = ((Positions)childNode.Tag).official;

newPos.delivery = ((Positions)childNode.Tag).delivery;

newPos.price = ((Positions)childNode.Tag).price;

newPos.summa = ((Positions)childNode.Tag).summa;

newPos.stat_stat_id = ((Positions)childNode.Tag).stat_stat_id;

newPos.prop_prop_id = ((Positions)childNode.Tag).prop_prop_id;

newPos.um_um_id = ((Positions)childNode.Tag).um_um_id;

newPos.val_val_id = ((Positions)childNode.Tag).val_val_id;

newPos.cs_cs_id = ((Positions)childNode.Tag).cs_cs_id;

newPos.pg_pg_id = ((Pos_group)childNode.Parent.Tag);

newPos.post_post_id = ((Pos_group)childNode.Parent.Tag).pt_pt_id;

newPos.pos_pos_id = null;

childNode.Tag = newPos;

connector.Update(newPos);

recursionChangeParent(childNode);

}

}

#endregion

#region Converters

private Contract_spec ConverterContract_spec(object obj)

{

return (Contract_spec)obj;

}

private Positions ConverterPositions(object obj)

{

return (Positions)obj;

}

private Statuses ConverterStatuses(object obj)

{

return (Statuses)obj;

}

private Units_measur ConverterUnits_measur(object obj)

{

return (Units_measur)obj;

}

private Valuta ConverterValuta(object obj)

{

return (Valuta)obj;

}

private Pos_group ConverterPos_group(object obj)

{

return (Pos_group)obj;

}

#endregion

#region draggablePanel1

private void draggablePanel1_Move(object sender, EventArgs e)

{

dragPanelChoisePartMove();

}

private void draggablePanel1_MouseUp(object sender, MouseEventArgs e)

{

dragPanelChoisePartMouseUp();

}

void dragPanelChoisePartMouseUp()

{

//Мониторим панель, что она лежит между 2мя датагридами

if (draggablePanel1.Location.X < splitContainer2.SplitterDistance && draggablePanel1.Location.X + draggablePanel1.Width > splitContainer2.SplitterDistance)

{

if (draggablePanel1.Location.X + draggablePanel1.Width / 2 < splitContainer2.SplitterDistance)//Больше к левой

{

draggablePanel1.Location = new Point(splitContainer2.SplitterDistance - draggablePanel1.Width, draggablePanel1.Location.Y);

blockPanel9.HeaderText = "По документам";

}

else//Больше к правой

{

draggablePanel1.Location = new Point(splitContainer2.SplitterDistance, draggablePanel1.Location.Y);

blockPanel9.HeaderText = "Фактически";

}

}

//Если выходит за левую границу

if (draggablePanel1.Location.X < 0)

draggablePanel1.Location = new Point(0, draggablePanel1.Location.Y);

////Если выходит за правую границу

if (draggablePanel1.Location.X + draggablePanel1.Width > splitContainer2.Width)

draggablePanel1.Location = new Point(splitContainer2.Width - draggablePanel1.Width, draggablePanel1.Location.Y);

//Если выходит за верхнюю границу

if (draggablePanel1.Location.Y < 0)

draggablePanel1.Location = new Point(draggablePanel1.Location.X, 0);

////Если выходит за нижнюю границу

if (draggablePanel1.Location.Y + draggablePanel1.Height > splitContainer2.Height)

draggablePanel1.Location = new Point(draggablePanel1.Location.X, splitContainer2.Height - draggablePanel1.Height);

}

void dragPanelChoisePartMove()

{

if (draggablePanel1.Location.X + draggablePanel1.Width < splitContainer2.SplitterDistance)

blockPanel9.HeaderText = "По документам";

else if (draggablePanel1.Location.X > splitContainer2.SplitterDistance)

{

blockPanel9.HeaderText = "Фактически";

}

}

void blockPanel9_MouseDown(object sender, System.Windows.Forms.MouseEventArgs e)

{

if (e.Button == MouseButtons.Left)

{

BringToFront();

start = e.Location;

(sender as Control).MouseUp += new MouseEventHandler(MouseUpEv);

(sender as Control).MouseMove += new MouseEventHandler(MouseMoveEv);

}

}

void MouseUpEv(object sender, MouseEventArgs e)

{

(sender as Control).MouseMove -= new MouseEventHandler(MouseMoveEv);

(sender as Control).MouseUp -= new MouseEventHandler(MouseUpEv);

dragPanelChoisePartMouseUp();

}

void MouseMoveEv(object sender, MouseEventArgs e)

{

draggablePanel1.Location = new Point(draggablePanel1.Location.X - (start.X - e.X), draggablePanel1.Location.Y - (start.Y - e.Y));

}

void closeDraggablePanelButton_Click(object sender, System.EventArgs e)

{

if (dragPanelClosed)

{

draggablePanel1.Location = DraggablePanelOldLocation;

draggablePanel1.Size = DraggablePanelOldSize;

dragPanelClosed = false;

}

else

{

DraggablePanelOldLocation = draggablePanel1.Location;

draggablePanel1.Location = new Point(splitContainer2.Location.X + 10, splitContainer2.Height - 10);

DraggablePanelOldSize = draggablePanel1.Size;

draggablePanel1.Size = blockPanel9.HeaderPanel.Size;

dragPanelClosed = true;

}

dragPanelChoisePartMouseUp();

}

#endregion

#region Drag and Drop из docsTGV в factsTGV

//Источник docsTgv

private void docsTgv_CellMouseDown(object sender, DataGridViewCellMouseEventArgs e)

{

if (e.RowIndex > -1 && e.ColumnIndex > -1)

{

flagCellMouseUpped = false;

Timer timer = new Timer();

timer.Interval = 50;

timer.Tag = e.RowIndex;

timer.Tick += DragTimerTick;

timer.Start();

}

}

private void docsTgv_CellMouseUp(object sender, DataGridViewCellMouseEventArgs e)

{

if (e.RowIndex > -1 && e.ColumnIndex > -1)

{

flagCellMouseUpped = true;

}

}

private void DragTimerTick(object sender, EventArgs e)

{

((Timer)sender).Stop();

if (!flagCellMouseUpped)

{

//Тащим несколько разных выделенных объектов И группы и Позиции

Type typeofFirstAddedItem = docsTgv.SelectedRows[0].Tag.GetType(); //Либо тип группа - либо тип позиция

List<Pos_group> listGroups = new List<Pos_group>();

List<Positions> listPositions = new List<Positions>();

bool flagNeedToDrag =true;

for (int i = 0; i < docsTgv.SelectedRows.Count; i++)

{

if (docsTgv.SelectedRows[i].Tag.GetType() == typeofFirstAddedItem)

{

if (typeofFirstAddedItem == typeof(Pos_group))

listGroups.Add((Pos_group)docsTgv.SelectedRows[i].Tag);

else

listPositions.Add((Positions)docsTgv.SelectedRows[i].Tag);

}

else

{

flagNeedToDrag = false;

MessageBox.Show("Невозможно перетащить группы и позиции одновременно");

return;

}

}

if (flagNeedToDrag)

{

if(listGroups.Count>0)

docsTgv.DoDragDrop(listGroups, DragDropEffects.Copy);

else

if (listPositions.Count > 0)

docsTgv.DoDragDrop(listPositions, DragDropEffects.All);

}

}

}

//Приемник factTgv

private void factTgv_DragEnter(object sender, DragEventArgs e)

{

e.Effect = DragDropEffects.Copy;

}

private void factTgv_DragDrop(object sender, DragEventArgs e)

{

Point clientPoint = factTgv.PointToClient(new Point(e.X, e.Y));

int rowIndexOfItemUnderMouseToDrop = factTgv.HitTest(clientPoint.X, clientPoint.Y).RowIndex;

#region Если в пустое место

if (rowIndexOfItemUnderMouseToDrop == -1)//Если в пустое место

{

List<Pos_group> listGroups = e.Data.GetData(typeof(List<Pos_group>)) as List<Pos_group>;

if (listGroups == null)//Драгаем позицию

MessageBox.Show("Невозможно перетатащить позиции в корень групп");

else//Драгаем группу

{

for (int j = 0; j < listGroups.Count; j++)

{

TreeGridNode group = factTgv.Nodes.Add(listGroups[j].name);

NodeCellsToTextBoxCells(group);

group.Tag = listGroups[j];

List<Positions> listPositionsFact = connector.getAllDataFromDB("Positions AS pos WHERE pos.del IS NULL AND pos.post_post_id=1 AND pos.pos_pos_id IS NULL AND pos.pg_pg_id = " + listGroups[j].pg_id).ConvertAll(new Converter<object, Positions>(ConverterPositions));

for (int i = 0; i < listPositionsFact.Count; i++)

{

TreeGridNode nodeChild = group.Nodes.Add(listPositionsFact[i].article, listPositionsFact[i].name, listPositionsFact[i].um_um_id.short_name, listPositionsFact[i].count,

listPositionsFact[i].val_val_id.name, listPositionsFact[i].price, listPositionsFact[i].summa, listPositionsFact[i].stat_stat_id.name, listPositionsFact[i].delivery,

listPositionsFact[i].cancel, listPositionsFact[i].official);

nodeChild.Tag = listPositionsFact[i];

recursionAddingNodes(nodeChild, listPositionsFact[i].pos_id, listPositionsFact[i].post_post_id, listPositionsFact[i].pg_pg_id);

}

Pos_group newGroup = new Pos_group();

newGroup.name = ((Pos_group)group.Tag).name;

newGroup.descript = ((Pos_group)group.Tag).descript;

newGroup.cs_cs_id = ((Pos_group)group.Tag).cs_cs_id;

newGroup.pt_pt_id = (Pos_type)connector.executeUniqueResultQuery("from Pos_type AS pt WHERE pt.pos_type_id =2");

group.Tag = newGroup;

connector.Update(newGroup);

recursionChangeNodeParent(group);

}

connector.CommitChanges();

}

}

#endregion

#region Если в группу

else if (factTgv.Rows[rowIndexOfItemUnderMouseToDrop].Tag.GetType() == typeof(Pos_group))//Если в группу

{

List<Positions> listPositions = e.Data.GetData(typeof(List<Positions>)) as List<Positions>;

if (listPositions == null)//Драгаем группу

MessageBox.Show("Невозможно перетащить группы в группу");

else//Драгаем позицию

{

TreeGridNode parent = factTgv.GetNodeForRow(rowIndexOfItemUnderMouseToDrop);//Получили нод, на который мы перетащили

for (int i = 0; i < listPositions.Count; i++)

{

TreeGridNode newChild = parent.Nodes.Add(listPositions[i].article, listPositions[i].name, listPositions[i].um_um_id.short_name, listPositions[i].count,

listPositions[i].val_val_id.name, listPositions[i].price, listPositions[i].summa, listPositions[i].stat_stat_id.name, listPositions[i].delivery,

listPositions[i].cancel, listPositions[i].official);

newChild.Tag = listPositions[i];

recursionAddingNodes(newChild, listPositions[i].pos_id, listPositions[i].post_post_id, listPositions[i].pg_pg_id);

Positions newPos = new Positions();

newPos.name = ((Positions)newChild.Tag).name;

newPos.article = ((Positions)newChild.Tag).article;

newPos.cancel = ((Positions)newChild.Tag).cancel;

newPos.count = ((Positions)newChild.Tag).count;

newPos.delivery = ((Positions)newChild.Tag).delivery;

newPos.official = ((Positions)newChild.Tag).official;

newPos.delivery = ((Positions)newChild.Tag).delivery;

newPos.price = ((Positions)newChild.Tag).price;

newPos.summa = ((Positions)newChild.Tag).summa;

newPos.stat_stat_id = ((Positions)newChild.Tag).stat_stat_id;

newPos.prop_prop_id = ((Positions)newChild.Tag).prop_prop_id;

newPos.um_um_id = ((Positions)newChild.Tag).um_um_id;

newPos.val_val_id = ((Positions)newChild.Tag).val_val_id;

newPos.cs_cs_id = ((Positions)newChild.Tag).cs_cs_id;

newPos.pg_pg_id = ((Pos_group)newChild.Parent.Tag);

newPos.post_post_id = ((Pos_group)newChild.Parent.Tag).pt_pt_id;

newPos.pos_pos_id = null;

newChild.Tag = newPos;

connector.Update(newPos);

recursionChangeParent(newChild);

}

connector.CommitChanges();

}

}

#endregion

#region Если в позицию

else if (factTgv.Rows[rowIndexOfItemUnderMouseToDrop].Tag.GetType() == typeof(Positions))//Если в позицию

{

List<Positions> listPositions = e.Data.GetData(typeof(List<Positions>)) as List<Positions>;

if (listPositions == null)//Драгаем группу

MessageBox.Show("Невозможно перетащить группы в позицию");

else//Драгаем позицию

{

TreeGridNode parent = factTgv.GetNodeForRow(rowIndexOfItemUnderMouseToDrop);//Получили нод, на который мы перетащили

for (int i = 0; i < listPositions.Count; i++)

{

TreeGridNode newChild = parent.Nodes.Add(listPositions[i].article, listPositions[i].name, listPositions[i].um_um_id.short_name, listPositions[i].count,

listPositions[i].val_val_id.name, listPositions[i].price, listPositions[i].summa, listPositions[i].stat_stat_id.name, listPositions[i].delivery,

listPositions[i].cancel, listPositions[i].official);

newChild.Tag = listPositions[i];

recursionAddingNodes(newChild, listPositions[i].pos_id, listPositions[i].post_post_id, listPositions[i].pg_pg_id);

Positions newPos = new Positions();

newPos.name = ((Positions)newChild.Tag).name;

newPos.article = ((Positions)newChild.Tag).article;

newPos.cancel = ((Positions)newChild.Tag).cancel;

newPos.count = ((Positions)newChild.Tag).count;

newPos.delivery = ((Positions)newChild.Tag).delivery;

newPos.official = ((Positions)newChild.Tag).official;

newPos.delivery = ((Positions)newChild.Tag).delivery;

newPos.price = ((Positions)newChild.Tag).price;

newPos.summa = ((Positions)newChild.Tag).summa;

newPos.stat_stat_id = ((Positions)newChild.Tag).stat_stat_id;

newPos.prop_prop_id = ((Positions)newChild.Tag).prop_prop_id;

newPos.um_um_id = ((Positions)newChild.Tag).um_um_id;

newPos.val_val_id = ((Positions)newChild.Tag).val_val_id;

newPos.pg_pg_id = ((Positions)newChild.Parent.Tag).pg_pg_id;

newPos.post_post_id = ((Positions)newChild.Parent.Tag).post_post_id;

newPos.pos_pos_id = ((Positions)newChild.Parent.Tag);

newPos.cs_cs_id = ((Positions)newChild.Parent.Tag).cs_cs_id;

newChild.Tag = newPos;

connector.Update(newPos);

recursionChangeParent(newChild);

}

connector.CommitChanges();

}

}

#endregion

}

#endregion

#region Drag and Drop внутри docsTGV

//Приемник docsTgv

private void docsTgv_DragEnter(object sender, DragEventArgs e)

{

e.Effect = DragDropEffects.Move;

}

private void docsTgv_DragDrop(object sender, DragEventArgs e)

{

Point clientPoint = docsTgv.PointToClient(new Point(e.X, e.Y));

int rowIndexOfItemUnderMouseToDrop = docsTgv.HitTest(clientPoint.X, clientPoint.Y).RowIndex;

if (docsTgv.Rows[rowIndexOfItemUnderMouseToDrop].Tag.GetType() == typeof(Positions))//Если на позицию

{

List<Positions> listPositions = e.Data.GetData(typeof(List<Positions>)) as List<Positions>;

if (listPositions == null)//Драгаем группу

MessageBox.Show("Невозможно перетащить группы в позицию");

else//Драгаем позицию

{

Positions targetPosition = (Positions)docsTgv.Rows[rowIndexOfItemUnderMouseToDrop].Tag;

for (int i = 0; i < listPositions.Count; i++)//Проверка: Невозможно переместить позиции на самих себя

if (listPositions[i] == targetPosition)

return;

bool flagOneGroupOneLevel = false;

for (int i = 0; i < listPositions.Count; i++)//Проверка: принадлежат одной группе и находятся на одном уровне

{

if (listPositions[i].pg_pg_id == targetPosition.pg_pg_id && listPositions[i].pos_pos_id == targetPosition.pos_pos_id)

flagOneGroupOneLevel = true;

else

{

flagOneGroupOneLevel = false;

MessageBox.Show("Перемещение позиций возможно только в рамках группы и на одном уровне");

return;

}

}

if (flagOneGroupOneLevel)//Если принадлежат

{

flagOneGroupOneLevel = false;

int orderNumberToChange = targetPosition.order_number;

//for ()

if (targetPosition.order_number < getMinOrderNumberFromList(listPositions))//Меняем местами - Цель вверху, Элементы, которые тянем внизу.

{

for (int i = 0; i < listPositions.Count; i++)

{

listPositions[i].order_number = orderNumberToChange + i;

connector.Update(listPositions[i]);

if (i == listPositions.Count - 1)

targetPosition.order_number = orderNumberToChange + i + 1;

}

connector.Update(targetPosition);

connector.CommitChanges();

TreeGridNode ParentNode = docsTgv.GetNodeForRow(rowIndexOfItemUnderMouseToDrop).Parent;

ParentNode.Nodes.Clear();

if (ParentNode.Tag.GetType() == typeof(Pos_group))//Если родитель - группа

recursionAddChildrenToGroup(ParentNode);

}

else if (targetPosition.order_number > getMaxOrderNumberFromList(listPositions))//Меняем местами - Элементы, которые тянем вверху, Цель внизу.

{

targetPosition.order_number = getMinOrderNumberFromList(listPositions);

for (int i = 0; i < listPositions.Count; i++)

{

listPositions[i].order_number = orderNumberToChange + i;

connector.Update(listPositions[i]);

}

connector.Update(targetPosition);

connector.CommitChanges();

TreeGridNode ParentNode = docsTgv.GetNodeForRow(rowIndexOfItemUnderMouseToDrop).Parent;

ParentNode.Nodes.Clear();

if (ParentNode.Tag.GetType() == typeof(Pos_group))//Если родитель - группа

recursionAddChildrenToGroup(ParentNode);

}

}

else

MessageBox.Show("Перемещение позиций возможно только в рамках группы");

}

}

}

int getMinOrderNumberFromList(List<Positions> list)

{

int min = 9999;

for (int i = 0; i < list.Count; i++)

if (list[i].order_number < min)

min = list[i].order_number;

return min;

}

int getMaxOrderNumberFromList(List<Positions> list)

{

int max = -9999;

for (int i = 0; i < list.Count; i++)

if (list[i].order_number > max)

max = list[i].order_number;

return max;

}

void recursionAddChildrenToGroup(TreeGridNode parentGroupNode)

{

Pos_group parentGroup = parentGroupNode.Tag as Pos_group;

List<Positions> listPositionsFact = connector.getAllDataFromDB("Positions AS pos WHERE pos.del IS NULL AND pos.post_post_id=" + parentGroup.pt_pt_id.pos_type_id + " AND pos.pos_pos_id IS NULL AND pos.pg_pg_id = " + parentGroup.pg_id +" ORDER BY order_number").ConvertAll(new Converter<object, Positions>(ConverterPositions));

for (int i = 0; i < listPositionsFact.Count; i++)

{

TreeGridNode nodeChild = parentGroupNode.Nodes.Add(listPositionsFact[i].article, listPositionsFact[i].name, listPositionsFact[i].um_um_id.short_name, listPositionsFact[i].count,

listPositionsFact[i].val_val_id.name, listPositionsFact[i].price, listPositionsFact[i].summa, listPositionsFact[i].stat_stat_id.name, listPositionsFact[i].delivery,

listPositionsFact[i].cancel, listPositionsFact[i].official);

nodeChild.Tag = listPositionsFact[i];

recursionAddingNodes(nodeChild, listPositionsFact[i].pos_id, listPositionsFact[i].post_post_id, listPositionsFact[i].pg_pg_id);

}

}

#endregion

#region Члены ISessionable

public Connector Connector

{

get

{

return connector;

}

set

{

this.connector = value;

}

}

public ISessionable SessionableTabPage

{

get

{

return this;

}

set

{

throw new NotImplementedException();

}

}

public void updateView(bool onlyDetailTables)

{

#region Инициализация компонентов (docsTGV, factsDGV)

#region Заполнение ComboBox-ов

//Заполнение комбобокса "Статус"

((DataGridViewComboBoxColumn)docsTgv.Columns[7]).Items.Clear();

((DataGridViewComboBoxColumn)factTgv.Columns[7]).Items.Clear();

List<Statuses> listStatuses = connector.getAllDataFromDB("Statuses").ConvertAll(new Converter<object, Statuses>(ConverterStatuses));

for (int i = 0; i < listStatuses.Count; i++)

{

((DataGridViewComboBoxColumn)docsTgv.Columns[7]).Items.Add(listStatuses[i].name);

((DataGridViewComboBoxColumn)factTgv.Columns[7]).Items.Add(listStatuses[i].name);

}

//Заполнение комбобокса "Единица измерения"

((DataGridViewComboBoxColumn)docsTgv.Columns[2]).Items.Clear();

((DataGridViewComboBoxColumn)factTgv.Columns[2]).Items.Clear();

List<Units_measur> listUnits_measur = connector.getAllDataFromDB("Units_measur").ConvertAll(new Converter<object, Units_measur>(ConverterUnits_measur));

for (int i = 0; i < listUnits_measur.Count; i++)

{

((DataGridViewComboBoxColumn)docsTgv.Columns[2]).Items.Add(listUnits_measur[i].short_name);

((DataGridViewComboBoxColumn)factTgv.Columns[2]).Items.Add(listUnits_measur[i].short_name);

}

//Заполнение комбобокса "Валюта"

((DataGridViewComboBoxColumn)docsTgv.Columns[4]).Items.Clear();

((DataGridViewComboBoxColumn)factTgv.Columns[4]).Items.Clear();

List<Valuta> listValuta = connector.getAllDataFromDB("Valuta").ConvertAll(new Converter<object, Valuta>(ConverterValuta));

for (int i = 0; i < listValuta.Count; i++)

{

((DataGridViewComboBoxColumn)docsTgv.Columns[4]).Items.Add(listValuta[i].name);

((DataGridViewComboBoxColumn)factTgv.Columns[4]).Items.Add(listValuta[i].name);

}

#endregion

#region Заполнение factTgv

factTgv.Rows.Clear();

List<Pos_group> listPos_group2 = connector.getAllDataFromDB("Pos_group AS pg WHERE pg.pt_pt_id=2 AND pg.cs_cs_id = "+ParentContractSpec.cs_id).ConvertAll(new Converter<object, Pos_group>(ConverterPos_group));

for (int j = 0; j < listPos_group2.Count; j++)

{

TreeGridNode node = factTgv.Nodes.Add(listPos_group2[j].name);

node.Tag = listPos_group2[j];

NodeCellsToTextBoxCells(node);

List<Positions> listPositionsFact = connector.getAllDataFromDB("Positions AS pos WHERE pos.del IS NULL AND pos.post_post_id=2 AND pos.pos_pos_id IS NULL AND pos.pg_pg_id = " + listPos_group2[j].pg_id + " AND pos.cs_cs_id = "+ParentContractSpec.cs_id+" ORDER BY pos.order_number asc").ConvertAll(new Converter<object, Positions>(ConverterPositions));

for (int i = 0; i < listPositionsFact.Count; i++)

{

TreeGridNode nodeChild = node.Nodes.Add(listPositionsFact[i].article, listPositionsFact[i].name, listPositionsFact[i].um_um_id.short_name, listPositionsFact[i].count,

listPositionsFact[i].val_val_id.name, listPositionsFact[i].price, listPositionsFact[i].summa, listPositionsFact[i].stat_stat_id.name, listPositionsFact[i].delivery,

listPositionsFact[i].cancel, listPositionsFact[i].official);

nodeChild.Tag = listPositionsFact[i];

recursionAddingNodes(nodeChild, listPositionsFact[i].pos_id, listPositionsFact[i].post_post_id, listPositionsFact[i].pg_pg_id);

}

}

#endregion

#region Заполнение docsTgv

docsTgv.Rows.Clear();

List<Pos_group> listPos_group = connector.getAllDataFromDB("Pos_group AS pg WHERE pg.pt_pt_id=1 AND pg.cs_cs_id = " + ParentContractSpec.cs_id).ConvertAll(new Converter<object, Pos_group>(ConverterPos_group));

for (int j = 0; j < listPos_group.Count; j++)

{

TreeGridNode node = docsTgv.Nodes.Add(listPos_group[j].name);

node.Tag = listPos_group[j];

NodeCellsToTextBoxCells(node);

List<Positions> listPositionsDocs = connector.getAllDataFromDB("Positions AS pos WHERE pos.del IS NULL AND pos.post_post_id=1 AND pos.pos_pos_id IS NULL AND pos.pg_pg_id = " + listPos_group[j].pg_id + "AND pos.cs_cs_id = " + ParentContractSpec.cs_id + " ORDER BY pos.order_number asc").ConvertAll(new Converter<object, Positions>(ConverterPositions));

for (int i = 0; i < listPositionsDocs.Count; i++)

{

TreeGridNode nodeChild = node.Nodes.Add(listPositionsDocs[i].article, listPositionsDocs[i].name, listPositionsDocs[i].um_um_id.short_name, listPositionsDocs[i].count,

listPositionsDocs[i].val_val_id.name, listPositionsDocs[i].price, listPositionsDocs[i].summa, listPositionsDocs[i].stat_stat_id.name, listPositionsDocs[i].delivery,

listPositionsDocs[i].cancel, listPositionsDocs[i].official);

nodeChild.Tag = listPositionsDocs[i];

recursionAddingNodes(nodeChild, listPositionsDocs[i].pos_id, listPositionsDocs[i].post_post_id, listPositionsDocs[i].pg_pg_id);

}

}

#endregion

#endregion

}

#endregion

}

}

ZakupochnieSpecifikaciiForm.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 ControlsLibrary.Others;

using ControlsLibrary.NHibernate.MappingClasses;

using ControlsLibrary.Interfaces;

namespace Forms.FormModels

{

public partial class ZakupochnieSpecifikaciiForm : TabPage, ISessionable

{

public Connector connector = new Connector();

public static string desc = "Форма ведения договоров представляет собой...";

public ZakupochnieSpecifikaciiForm()

{

InitializeComponent();

//filterPanel1.LocalDGV = unitsDGV;

updateView(false);

}

#region Converters

private Statuses ConverterStatuses(object obj)

{

return (Statuses)obj;

}

private Units_measur Converter(object obj)

{

return (Units_measur)obj;

}

private Contract_spec ConverterContract_spec(object obj)

{

return (Contract_spec)obj;

}

private Positions ConverterPositions(object obj)

{

return (Positions)obj;

}

private Propertyes ConverterPropertyes(object obj)

{

return (Propertyes)obj;

}

#endregion

#region Члены ISessionable

public Connector Connector

{

get

{

return connector;

}

set

{

this.connector = value;

}

}

public ISessionable SessionableTabPage

{

get

{

return this;

}

set

{

throw new NotImplementedException();

}

}

public void updateView(bool onlyDetailTables)

{

#region Заполнение комбобоксов

//Заполнение комбобокса "Статус"

((DataGridViewComboBoxColumn)mainDGV.Columns[9]).Items.Clear();

List<Statuses> listStatuses = connector.getAllDataFromDB("Statuses").ConvertAll(new Converter<object, Statuses>(ConverterStatuses));

for (int i = 0; i < listStatuses.Count; i++)

{

((DataGridViewComboBoxColumn)mainDGV.Columns[9]).Items.Add(listStatuses[i].name);

}

//Заполнение комбобокса "Единица измерения"

((DataGridViewComboBoxColumn)mainDGV.Columns[12]).Items.Clear();

List<Units_measur> listUnits_measur = connector.getAllDataFromDB("Units_measur").ConvertAll(new Converter<object, Units_measur>(Converter));

for (int i = 0; i < listUnits_measur.Count; i++)

{

((DataGridViewComboBoxColumn)mainDGV.Columns[12]).Items.Add(listUnits_measur[i].short_name);

}

#endregion

#region Заполнение mainDGV

mainDGV.Rows.Clear();

List<Contract_spec> listContract_spec = connector.getAllDataFromDB("Contract_spec").ConvertAll(new Converter<object, Contract_spec>(ConverterContract_spec));

for (int i = 0; i < listContract_spec.Count; i++)

{

List<Positions> listPositions = connector.getAllDataFromDB("Positions AS pos WHERE pos.cs_cs_id = " + listContract_spec[i].cs_id).ConvertAll(new Converter<object, Positions>(ConverterPositions));

for (int j = 0; j < listPositions.Count; j++)

{

List<Propertyes> listPropertyes = connector.getAllDataFromDB("Propertyes AS prop WHERE prop.prop_id = " + listPositions[j].prop_prop_id.prop_id).ConvertAll(new Converter<object, Propertyes>(ConverterPropertyes));

mainDGV.Rows.Add(listContract_spec[i].name, listContract_spec[i].proj_proj_id.code, listContract_spec[i].cont_cont_id.name_cont,

listContract_spec[i].create_date, listContract_spec[i].author, listContract_spec[i].client, listContract_spec[i].contractor,

listContract_spec[i].summa, listContract_spec[i].comment, listContract_spec[i].stat_stat_id.name, listPositions[j].article,

listPositions[j].name, listPositions[j].um_um_id.short_name, listPositions[j].count, listPositions[j].val_val_id.name, listPositions[j].price,

listPositions[j].summa, listPositions[j].delivery, listPositions[j].cancel, listPositions[j].official, listPropertyes[0].distributor,

listPropertyes[0].price, listPropertyes[0].date_receipt, listPropertyes[0].date_delivery, listPropertyes[0].date_maturity,

listPropertyes[0].account, listPropertyes[0].responsible);

}

}

#endregion

}

#endregion

}

}

ПРИЛОЖЕНИЕ В

Логистический процесс

Размещено на Allbest.ru


Подобные документы

Работы в архивах красиво оформлены согласно требованиям ВУЗов и содержат рисунки, диаграммы, формулы и т.д.
PPT, PPTX и PDF-файлы представлены только в архивах.
Рекомендуем скачать работу.