2021-07-17 09:33:09 +05:00
|
|
|
|
using System;
|
|
|
|
|
using System.Collections.Generic;
|
|
|
|
|
using System.ComponentModel;
|
|
|
|
|
using System.Data;
|
|
|
|
|
using System.Drawing;
|
|
|
|
|
using System.Linq;
|
|
|
|
|
using System.Text;
|
|
|
|
|
using System.Threading.Tasks;
|
|
|
|
|
using System.Windows.Forms;
|
2021-07-18 22:17:04 +05:00
|
|
|
|
using Diplom_B.DB;
|
2021-07-17 09:33:09 +05:00
|
|
|
|
|
|
|
|
|
namespace Diplom_B
|
|
|
|
|
{
|
|
|
|
|
public partial class DogForm : Form
|
2021-07-19 14:12:18 +05:00
|
|
|
|
{
|
2021-07-18 22:17:04 +05:00
|
|
|
|
private int? izdId = null;
|
|
|
|
|
private void ClearIzd()
|
|
|
|
|
{
|
|
|
|
|
izdId = null;
|
|
|
|
|
UpdateIzdLink();
|
|
|
|
|
kolvoBox.Text = "";
|
|
|
|
|
}
|
|
|
|
|
private void UpdateIzdLink()
|
|
|
|
|
{
|
|
|
|
|
var size = 23;
|
|
|
|
|
izdDecNumLinkLabel.Text = "Не выбран.";
|
|
|
|
|
if (!izdId.HasValue) return;
|
|
|
|
|
var f = WorkDB.GetIzdelie(izdId.Value);
|
|
|
|
|
if (f == null) return;
|
|
|
|
|
izdDecNumLinkLabel.Text = (f.DecNum.Length > size) ? f.DecNum.Substring(0, size - 3) + "..." : f.DecNum;
|
|
|
|
|
}
|
|
|
|
|
private void UpdateIzdTable()
|
|
|
|
|
{
|
|
|
|
|
var selected = (izdGridView.SelectedRows.Count > 0) ? izdGridView.SelectedRows[0].Index : -1;
|
|
|
|
|
{
|
|
|
|
|
var r = izdGridView.Rows;
|
|
|
|
|
while (r.Count > 0)
|
|
|
|
|
r.Remove(r[0]);
|
|
|
|
|
var c = izdGridView.Columns;
|
|
|
|
|
while (c.Count > 0)
|
|
|
|
|
c.Remove(c[0]);
|
|
|
|
|
}
|
|
|
|
|
{
|
|
|
|
|
var c = izdGridView.Columns;
|
|
|
|
|
c.Add("Id", "№");
|
|
|
|
|
c["Id"].Width = 40;
|
|
|
|
|
c.Add("DecNum", "Дец. №");
|
|
|
|
|
c["DecNum"].Width = 120;
|
|
|
|
|
c.Add("Kolvo", "Кол-во");
|
|
|
|
|
c["Kolvo"].Width = 40;
|
|
|
|
|
}
|
|
|
|
|
{
|
|
|
|
|
if (int.TryParse(idLabel.Text, out int idRes))
|
|
|
|
|
{
|
|
|
|
|
var arr = WorkDB.GetIzdelieDogIzdFromDogovor(idRes);
|
|
|
|
|
if (arr != null)
|
|
|
|
|
{
|
|
|
|
|
var r = izdGridView.Rows;
|
|
|
|
|
foreach (var izdDi in arr)
|
|
|
|
|
r.Add(new object[] {
|
|
|
|
|
izdDi.dogIzd.Id,
|
|
|
|
|
izdDi.izd.DecNum,
|
|
|
|
|
izdDi.dogIzd.Kolvo
|
|
|
|
|
});
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
{
|
|
|
|
|
if (izdGridView.Rows.Count > 0)
|
|
|
|
|
izdGridView.Rows[0].Selected = true;
|
|
|
|
|
if (selected != -1 && selected < izdGridView.Rows.Count)
|
|
|
|
|
for (var i = 0; i < izdGridView.Rows.Count; i++)
|
|
|
|
|
izdGridView.Rows[i].Selected = (i == selected);
|
|
|
|
|
}
|
|
|
|
|
izdGridView_CurrentCellChanged(this, new EventArgs());
|
|
|
|
|
}
|
|
|
|
|
private void izdGridView_CurrentCellChanged(object sender, EventArgs e)
|
|
|
|
|
{
|
|
|
|
|
if (izdGridView.SelectedRows.Count != 1) return;
|
|
|
|
|
var dogIzd = WorkDB.GetDogIzd((int)izdGridView.SelectedRows[0].Cells[0].Value);
|
|
|
|
|
if (dogIzd == null) return;
|
|
|
|
|
var izd = WorkDB.GetIzdelieFromDogIzd((int)izdGridView.SelectedRows[0].Cells[0].Value);
|
|
|
|
|
if (izd == null) return;
|
|
|
|
|
izdId = izd.Id;
|
|
|
|
|
UpdateIzdLink();
|
|
|
|
|
kolvoBox.Text = dogIzd.Kolvo.ToString();
|
|
|
|
|
}
|
|
|
|
|
private void addIzdButton_Click(object sender, EventArgs e)
|
|
|
|
|
{
|
|
|
|
|
if (!int.TryParse(idLabel.Text, out int dogId)) { ShowError("Договор не выбран."); return; }
|
|
|
|
|
if (!izdId.HasValue) { ShowError("Изделие не выбрано."); return; }
|
|
|
|
|
if (!int.TryParse(kolvoBox.Text, out int kolviIzd)) { ShowError("Кол-во не указано."); return; }
|
|
|
|
|
if (kolviIzd <= 0) { ShowError("Кол-во <= 0."); return; }
|
|
|
|
|
if (WorkDB.GetDogIzd(dogId, izdId.Value) != null) { ShowError("Изделие уже в списке."); return; }
|
|
|
|
|
var di = new DogIzd() { DogovorId = dogId, IzdelieId = izdId.Value, Kolvo = kolviIzd };
|
|
|
|
|
WorkDB.AddDogIzd(di);
|
|
|
|
|
UpdateIzdTable();
|
2021-07-19 14:12:18 +05:00
|
|
|
|
UpdatePlatejTable();
|
2021-07-18 22:17:04 +05:00
|
|
|
|
}
|
|
|
|
|
private void changeIzdButton_Click(object sender, EventArgs e)
|
|
|
|
|
{
|
|
|
|
|
if (!int.TryParse(idLabel.Text, out int dogId)) { ShowError("Договор не выбран."); return; }
|
|
|
|
|
if (!izdId.HasValue) { ShowError("Зделие не выбрано."); return; }
|
|
|
|
|
if (!int.TryParse(kolvoBox.Text, out int kolviIzd)) { ShowError("Кол-во не указано."); return; }
|
|
|
|
|
if (kolviIzd <= 0) { ShowError("Кол-во <= 0."); return; }
|
|
|
|
|
var di = WorkDB.GetDogIzd(dogId, izdId.Value);
|
|
|
|
|
if (di == null) { ShowError("Изделия нет в списке."); return; }
|
|
|
|
|
di.DogovorId = dogId;
|
|
|
|
|
di.IzdelieId = izdId.Value;
|
|
|
|
|
di.Kolvo = kolviIzd;
|
|
|
|
|
WorkDB.ChangeDogIzd(di);
|
|
|
|
|
UpdateIzdTable();
|
2021-07-19 14:12:18 +05:00
|
|
|
|
UpdatePlatejTable();
|
2021-07-18 22:17:04 +05:00
|
|
|
|
}
|
|
|
|
|
private void delIzdButton_Click(object sender, EventArgs e)
|
|
|
|
|
{
|
|
|
|
|
if (!int.TryParse(idLabel.Text, out int dogId)) { ShowError("Договор не выбран."); return; }
|
|
|
|
|
if (!izdId.HasValue) { ShowError("Изделие не выбрано."); return; }
|
|
|
|
|
var di = WorkDB.GetDogIzd(dogId, izdId.Value);
|
|
|
|
|
if (di == null) { ShowError("Изделия нет в списке."); return; }
|
|
|
|
|
WorkDB.DeleteDogIzd(di);
|
|
|
|
|
UpdateIzdTable();
|
2021-07-19 14:12:18 +05:00
|
|
|
|
UpdatePlatejTable();
|
2021-07-18 22:17:04 +05:00
|
|
|
|
}
|
|
|
|
|
private void selectizd_Click(object sender, EventArgs e)
|
|
|
|
|
{
|
|
|
|
|
var form = new IzdForm(true);
|
|
|
|
|
form.ShowDialog();
|
|
|
|
|
izdId = form.returnId;
|
|
|
|
|
UpdateIzdLink();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private void ClearPlatej()
|
|
|
|
|
{
|
|
|
|
|
cenaGlobalLabel.Text = "0";
|
|
|
|
|
avansLabel.Text = "0";
|
|
|
|
|
ostalosLabel.Text = "0";
|
|
|
|
|
platejBox.Text = "";
|
|
|
|
|
}
|
|
|
|
|
private void UpdatePlatejTable()
|
|
|
|
|
{
|
|
|
|
|
var selected = (platejGridView.SelectedRows.Count > 0) ? platejGridView.SelectedRows[0].Index : -1;
|
|
|
|
|
{
|
|
|
|
|
var r = platejGridView.Rows;
|
|
|
|
|
while (r.Count > 0)
|
|
|
|
|
r.Remove(r[0]);
|
|
|
|
|
var c = platejGridView.Columns;
|
|
|
|
|
while (c.Count > 0)
|
|
|
|
|
c.Remove(c[0]);
|
|
|
|
|
}
|
|
|
|
|
{
|
|
|
|
|
var c = platejGridView.Columns;
|
|
|
|
|
c.Add("Id", "№");
|
|
|
|
|
c["Id"].Width = 40;
|
|
|
|
|
c.Add("Platej", "Платёж");
|
|
|
|
|
c["Platej"].Width = 120;
|
|
|
|
|
}
|
|
|
|
|
{
|
|
|
|
|
if (int.TryParse(idLabel.Text, out int idRes))
|
|
|
|
|
{
|
|
|
|
|
var arr = WorkDB.GetPlatejyFromDogovor(idRes);
|
|
|
|
|
if (arr != null)
|
|
|
|
|
{
|
|
|
|
|
var r = platejGridView.Rows;
|
|
|
|
|
foreach (var pl in arr)
|
|
|
|
|
r.Add(new object[] {
|
|
|
|
|
pl.Id,
|
2021-07-19 14:12:18 +05:00
|
|
|
|
pl.Summa.ToString("F2")
|
2021-07-18 22:17:04 +05:00
|
|
|
|
});
|
|
|
|
|
}
|
|
|
|
|
{
|
|
|
|
|
double cena = 0;
|
|
|
|
|
double avans = 0;
|
|
|
|
|
double ostalos = 0;
|
|
|
|
|
var cenaArr = WorkDB.GetIzdelieDogIzdFromDogovor(idRes);
|
|
|
|
|
if(cenaArr != null)
|
|
|
|
|
for(var i = 0; i < cenaArr.Length; i++)
|
|
|
|
|
cena += cenaArr[i].izd.Cena * cenaArr[i].dogIzd.Kolvo;
|
|
|
|
|
ostalos = cena;
|
|
|
|
|
for(var i = 0; i < arr.Length; i++)
|
|
|
|
|
{
|
|
|
|
|
if (i == 0) avans = arr[i].Summa;
|
|
|
|
|
ostalos -= arr[i].Summa;
|
|
|
|
|
}
|
2021-07-19 14:12:18 +05:00
|
|
|
|
cenaGlobalLabel.Text = cena.ToString("F2");
|
|
|
|
|
avansLabel.Text = avans.ToString("F2");
|
|
|
|
|
ostalosLabel.Text = ostalos.ToString("F2");
|
2021-07-18 22:17:04 +05:00
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
{
|
|
|
|
|
if (platejGridView.Rows.Count > 0)
|
|
|
|
|
platejGridView.Rows[0].Selected = true;
|
|
|
|
|
if (selected != -1 && selected < platejGridView.Rows.Count)
|
|
|
|
|
for (var i = 0; i < platejGridView.Rows.Count; i++)
|
|
|
|
|
platejGridView.Rows[i].Selected = (i == selected);
|
|
|
|
|
}
|
|
|
|
|
platejGridView_CurrentCellChanged(this, new EventArgs());
|
|
|
|
|
}
|
|
|
|
|
private void platejGridView_CurrentCellChanged(object sender, EventArgs e)
|
|
|
|
|
{
|
|
|
|
|
if (platejGridView.SelectedRows.Count != 1) return;
|
|
|
|
|
var platej = WorkDB.GetPlatej((int)platejGridView.SelectedRows[0].Cells[0].Value);
|
|
|
|
|
if (platej == null) return;
|
2021-07-19 14:12:18 +05:00
|
|
|
|
platejBox.Text = platej.Summa.ToString("F2");
|
2021-07-18 22:17:04 +05:00
|
|
|
|
}
|
|
|
|
|
private void addPlatejBox_Click(object sender, EventArgs e)
|
|
|
|
|
{
|
|
|
|
|
if (!int.TryParse(idLabel.Text, out int dogId)) { ShowError("Договор не выбран."); return; }
|
|
|
|
|
if (!double.TryParse(platejBox.Text, out double platej)) { ShowError("Сумма не корректна."); return; }
|
|
|
|
|
if (platej < 0) { ShowError("Платёж < 0."); return; }
|
|
|
|
|
var pl = new Platej() { DogovorId = dogId, Summa = platej };
|
|
|
|
|
WorkDB.AddPlatej(pl);
|
|
|
|
|
UpdatePlatejTable();
|
|
|
|
|
}
|
|
|
|
|
private void changePlatejBox_Click(object sender, EventArgs e)
|
|
|
|
|
{
|
|
|
|
|
if (!int.TryParse(idLabel.Text, out int dogId)) { ShowError("Договор не выбран."); return; }
|
|
|
|
|
if (!double.TryParse(platejBox.Text, out double platej)) { ShowError("Сумма не корректна."); return; }
|
|
|
|
|
if (platej < 0) { ShowError("Платёж < 0."); return; }
|
|
|
|
|
if (platejGridView.SelectedRows.Count != 1) { ShowError("Платёж не выбран."); return; }
|
|
|
|
|
var pl = WorkDB.GetPlatej((int)platejGridView.SelectedRows[0].Cells[0].Value);
|
|
|
|
|
if (pl == null) { ShowError("Платежа нет в БД."); return; }
|
|
|
|
|
pl.DogovorId = dogId;
|
|
|
|
|
pl.Summa = platej;
|
|
|
|
|
WorkDB.ChangePlatej(pl);
|
|
|
|
|
UpdatePlatejTable();
|
|
|
|
|
}
|
|
|
|
|
private void delPlatejBox_Click(object sender, EventArgs e)
|
|
|
|
|
{
|
|
|
|
|
if (!int.TryParse(idLabel.Text, out int dogId)) { ShowError("Договор не выбран."); return; }
|
|
|
|
|
if (platejGridView.SelectedRows.Count != 1) { ShowError("Платёж не выбран."); return; }
|
|
|
|
|
var pl = WorkDB.GetPlatej((int)platejGridView.SelectedRows[0].Cells[0].Value);
|
|
|
|
|
if (pl == null) { ShowError("Платежа нет в БД."); return; }
|
|
|
|
|
WorkDB.DeletePlatej(pl);
|
|
|
|
|
UpdatePlatejTable();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private void UpdatePostTable()
|
|
|
|
|
{
|
|
|
|
|
var selected = (postGridView.SelectedRows.Count > 0) ? postGridView.SelectedRows[0].Index : -1;
|
|
|
|
|
{
|
|
|
|
|
var r = postGridView.Rows;
|
|
|
|
|
while (r.Count > 0)
|
|
|
|
|
r.Remove(r[0]);
|
|
|
|
|
var c = postGridView.Columns;
|
|
|
|
|
while (c.Count > 0)
|
|
|
|
|
c.Remove(c[0]);
|
|
|
|
|
}
|
|
|
|
|
{
|
|
|
|
|
var c = postGridView.Columns;
|
|
|
|
|
c.Add("Id", "№");
|
|
|
|
|
c["Id"].Width = 40;
|
|
|
|
|
c.Add("ZavNum", "Зав. №");
|
|
|
|
|
c["ZavNum"].Width = 120;
|
|
|
|
|
}
|
|
|
|
|
{
|
|
|
|
|
if (int.TryParse(idLabel.Text, out int idRes))
|
|
|
|
|
{
|
|
|
|
|
var arr = WorkDB.GetPostavkyFromDogovor(idRes);
|
|
|
|
|
if (arr != null)
|
|
|
|
|
{
|
|
|
|
|
var r = postGridView.Rows;
|
|
|
|
|
foreach (var post in arr)
|
|
|
|
|
r.Add(new object[] {
|
|
|
|
|
post.Id,
|
|
|
|
|
post.ZavNum
|
|
|
|
|
});
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
{
|
|
|
|
|
if (postGridView.Rows.Count > 0)
|
|
|
|
|
postGridView.Rows[0].Selected = true;
|
|
|
|
|
if (selected != -1 && selected < postGridView.Rows.Count)
|
|
|
|
|
for (var i = 0; i < postGridView.Rows.Count; i++)
|
|
|
|
|
postGridView.Rows[i].Selected = (i == selected);
|
|
|
|
|
}
|
|
|
|
|
}
|
2021-07-19 14:12:18 +05:00
|
|
|
|
private void addPostButton_Click(object sender, EventArgs e)
|
|
|
|
|
{
|
|
|
|
|
var form = new PostForm(true);
|
|
|
|
|
form.ShowDialog();
|
|
|
|
|
var postId = form.returnId;
|
|
|
|
|
if (!int.TryParse(idLabel.Text, out int dogId)) { ShowError("Договор не выбран."); return; }
|
|
|
|
|
if (!postId.HasValue) { ShowError("Поставка не выбрана."); return; }
|
|
|
|
|
var post = WorkDB.GetPostavka(postId.Value);
|
|
|
|
|
if (post == null) { ShowError("Поставки не существует."); return; }
|
|
|
|
|
if (post.DogovorId.HasValue) { ShowError("Поставка связана с договором."); return; }
|
|
|
|
|
post.DogovorId = dogId;
|
|
|
|
|
WorkDB.ChangePostavka(post);
|
|
|
|
|
UpdatePostTable();
|
|
|
|
|
}
|
|
|
|
|
private void delPostButton_Click(object sender, EventArgs e)
|
2021-07-18 22:17:04 +05:00
|
|
|
|
{
|
2021-07-19 14:12:18 +05:00
|
|
|
|
if (!int.TryParse(idLabel.Text, out int dogId)) { ShowError("Договор не выбран."); return; }
|
|
|
|
|
if (postGridView.SelectedRows.Count != 1) { ShowError("Поставка не выбрана."); return; }
|
2021-07-18 22:17:04 +05:00
|
|
|
|
var post = WorkDB.GetPostavka((int)postGridView.SelectedRows[0].Cells[0].Value);
|
2021-07-19 14:12:18 +05:00
|
|
|
|
if (post == null) { ShowError("Поставки не существует."); return; }
|
|
|
|
|
if (!post.DogovorId.HasValue) { ShowError("Поставка не связана с договором."); return; }
|
|
|
|
|
post.DogovorId = null;
|
|
|
|
|
WorkDB.ChangePostavka(post);
|
|
|
|
|
UpdatePostTable();
|
2021-07-18 22:17:04 +05:00
|
|
|
|
}
|
2021-07-19 14:12:18 +05:00
|
|
|
|
|
|
|
|
|
private void UpdateDocTable()
|
|
|
|
|
{
|
|
|
|
|
var selected = (docGridView.SelectedRows.Count > 0) ? docGridView.SelectedRows[0].Index : -1;
|
|
|
|
|
{
|
|
|
|
|
var r = docGridView.Rows;
|
|
|
|
|
while (r.Count > 0)
|
|
|
|
|
r.Remove(r[0]);
|
|
|
|
|
var c = docGridView.Columns;
|
|
|
|
|
while (c.Count > 0)
|
|
|
|
|
c.Remove(c[0]);
|
|
|
|
|
}
|
|
|
|
|
{
|
|
|
|
|
var c = docGridView.Columns;
|
|
|
|
|
c.Add("Id", "№");
|
|
|
|
|
c["Id"].Width = 40;
|
|
|
|
|
c.Add("DecNum", "Дец. №");
|
|
|
|
|
c["DecNum"].Width = 120;
|
|
|
|
|
}
|
|
|
|
|
{
|
|
|
|
|
if (int.TryParse(idLabel.Text, out int idRes))
|
|
|
|
|
{
|
|
|
|
|
var arr = WorkDB.GetDocumentyDogDocFromDogovor(idRes);
|
|
|
|
|
if (arr != null)
|
|
|
|
|
{
|
|
|
|
|
var r = docGridView.Rows;
|
|
|
|
|
foreach (var dd in arr)
|
|
|
|
|
r.Add(new object[] {
|
|
|
|
|
dd.dogDoc.Id,
|
|
|
|
|
dd.doc.DecNum,
|
|
|
|
|
});
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
{
|
|
|
|
|
if (docGridView.Rows.Count > 0)
|
|
|
|
|
docGridView.Rows[0].Selected = true;
|
|
|
|
|
if (selected != -1 && selected < docGridView.Rows.Count)
|
|
|
|
|
for (var i = 0; i < docGridView.Rows.Count; i++)
|
|
|
|
|
docGridView.Rows[i].Selected = (i == selected);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
private void addDocButton_Click(object sender, EventArgs e)
|
2021-07-18 22:17:04 +05:00
|
|
|
|
{
|
2021-07-19 14:12:18 +05:00
|
|
|
|
var form = new DocForm(true);
|
|
|
|
|
form.ShowDialog();
|
|
|
|
|
var docId = form.returnId;
|
2021-07-18 22:17:04 +05:00
|
|
|
|
if (!int.TryParse(idLabel.Text, out int dogId)) { ShowError("Договор не выбран."); return; }
|
2021-07-19 14:12:18 +05:00
|
|
|
|
if (!docId.HasValue) { ShowError("Документ не выбран."); return; }
|
|
|
|
|
var doc = WorkDB.GetDocument(docId.Value);
|
|
|
|
|
if (doc == null) { ShowError("Документа не существует."); return; }
|
|
|
|
|
var dogDoc = WorkDB.GetDogDoc(dogId, docId.Value);
|
|
|
|
|
if (dogDoc != null) { ShowError("Документ связан с договором."); return; }
|
|
|
|
|
dogDoc = new DogDoc() { DogovorId = dogId, DocumentId = docId.Value};
|
|
|
|
|
WorkDB.AddDogDoc(dogDoc);
|
|
|
|
|
UpdateDocTable();
|
2021-07-18 22:17:04 +05:00
|
|
|
|
}
|
2021-07-19 14:12:18 +05:00
|
|
|
|
private void delDocButton_Click(object sender, EventArgs e)
|
2021-07-18 22:17:04 +05:00
|
|
|
|
{
|
2021-07-19 14:12:18 +05:00
|
|
|
|
if (!int.TryParse(idLabel.Text, out int dogId)) { ShowError("Договор не выбран."); return; }
|
|
|
|
|
if (docGridView.SelectedRows.Count != 1) { ShowError("Договор не выбран."); return; }
|
2021-07-22 07:22:51 +05:00
|
|
|
|
var dogDoc = WorkDB.GetDogDoc((int)docGridView.SelectedRows[0].Cells[0].Value);
|
2021-07-19 14:12:18 +05:00
|
|
|
|
if (dogDoc == null) { ShowError("Документ не связана с договором."); return; }
|
2021-07-22 07:22:51 +05:00
|
|
|
|
var doc = WorkDB.GetDocument(dogDoc.DocumentId);
|
|
|
|
|
if (doc == null) { ShowError("Документ не существует."); return; }
|
2021-07-19 14:12:18 +05:00
|
|
|
|
WorkDB.DeleteDogDoc(dogDoc);
|
|
|
|
|
UpdateDocTable();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public int? returnId = null;
|
|
|
|
|
private bool needReturn = false;
|
2021-07-18 22:17:04 +05:00
|
|
|
|
|
2021-07-19 14:12:18 +05:00
|
|
|
|
private Task errDrop;
|
|
|
|
|
private void ShowError(string msg = null)
|
|
|
|
|
{
|
|
|
|
|
errorLabel.Text = string.IsNullOrEmpty(msg) ? "Неизвестная ошибка." : msg;
|
|
|
|
|
errorLabel.Visible = true;
|
|
|
|
|
errDrop = new Task(() =>
|
|
|
|
|
{
|
|
|
|
|
var fd = errDrop.Id;
|
|
|
|
|
Task.Delay(5000).Wait();
|
|
|
|
|
if (errDrop.Id == fd)
|
|
|
|
|
if (InvokeRequired) Invoke((Action)(() => { errorLabel.Visible = false; }));
|
|
|
|
|
else errorLabel.Visible = false;
|
|
|
|
|
});
|
|
|
|
|
errDrop.Start();
|
2021-07-18 22:17:04 +05:00
|
|
|
|
}
|
2021-07-19 14:12:18 +05:00
|
|
|
|
|
|
|
|
|
private Task filterDrop;
|
|
|
|
|
private void searchBox_TextChanged(object sender, EventArgs e)
|
2021-07-18 22:17:04 +05:00
|
|
|
|
{
|
2021-07-19 14:12:18 +05:00
|
|
|
|
filterDrop = new Task(() =>
|
|
|
|
|
{
|
|
|
|
|
var fd = filterDrop.Id;
|
|
|
|
|
Task.Delay(1000).Wait();
|
|
|
|
|
if (filterDrop.Id == fd)
|
|
|
|
|
if (InvokeRequired) Invoke((Action)(() => { UpdateTable(WorkDB.ListDogovor(searchBox.Text)); }));
|
|
|
|
|
else UpdateTable(WorkDB.ListDogovor(searchBox.Text));
|
2021-07-18 22:17:04 +05:00
|
|
|
|
|
2021-07-19 14:12:18 +05:00
|
|
|
|
});
|
|
|
|
|
filterDrop.Start();
|
2021-07-18 22:17:04 +05:00
|
|
|
|
}
|
2021-07-19 14:12:18 +05:00
|
|
|
|
private void resetSearchButton_Click(object sender, EventArgs e)
|
2021-07-18 22:17:04 +05:00
|
|
|
|
{
|
2021-07-19 14:12:18 +05:00
|
|
|
|
searchBox.Text = "";
|
|
|
|
|
filterDrop = new Task(() => { return; });
|
|
|
|
|
UpdateTable(WorkDB.ListDogovor(searchBox.Text));
|
2021-07-18 22:17:04 +05:00
|
|
|
|
}
|
|
|
|
|
|
2021-07-17 22:32:53 +05:00
|
|
|
|
public DogForm(bool needReturn = false)
|
2021-07-17 09:33:09 +05:00
|
|
|
|
{
|
2021-07-17 22:32:53 +05:00
|
|
|
|
this.needReturn = needReturn;
|
2021-07-17 09:33:09 +05:00
|
|
|
|
InitializeComponent();
|
2021-07-18 22:17:04 +05:00
|
|
|
|
try
|
|
|
|
|
{
|
2021-07-19 14:12:18 +05:00
|
|
|
|
UpdateTable(WorkDB.ListDogovor(searchBox.Text));
|
2021-07-18 22:17:04 +05:00
|
|
|
|
Init();
|
|
|
|
|
}
|
|
|
|
|
catch { throw; }
|
|
|
|
|
}
|
|
|
|
|
private void Init()
|
|
|
|
|
{
|
|
|
|
|
if (Program.user == null) this.Close();
|
|
|
|
|
if (this.needReturn)
|
|
|
|
|
{
|
|
|
|
|
selectButton.Visible = true;
|
|
|
|
|
mainMenuStrip.Visible = false;
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
mainMenuStrip.Items[0].Enabled = Program.user.Usr.Dog > 0;
|
|
|
|
|
mainMenuStrip.Items[1].Enabled = Program.user.Usr.Doc > 0;
|
|
|
|
|
mainMenuStrip.Items[2].Enabled = Program.user.Usr.Izv > 0;
|
|
|
|
|
mainMenuStrip.Items[3].Enabled = Program.user.Usr.Post > 0;
|
|
|
|
|
mainMenuStrip.Items[4].Enabled = Program.user.Usr.Izd > 0;
|
|
|
|
|
mainMenuStrip.Items[5].Enabled = Program.user.Usr.Zak > 0;
|
|
|
|
|
mainMenuStrip.Items[6].Enabled = Program.user.Usr.Set > 0;
|
|
|
|
|
mainMenuStrip.Items[0].Enabled = false;
|
|
|
|
|
}
|
|
|
|
|
{
|
|
|
|
|
zakDecNumLinkLabel.Enabled = Program.user.Usr.Dog > 2;
|
|
|
|
|
createButton.Enabled = Program.user.Usr.Dog > 2;
|
|
|
|
|
changeButton.Enabled = Program.user.Usr.Dog > 1;
|
|
|
|
|
deleteButton.Enabled = Program.user.Usr.Dog > 2;
|
|
|
|
|
izdDecNumLinkLabel.Enabled = Program.user.Usr.Dog > 1;
|
|
|
|
|
addIzdButton.Enabled = Program.user.Usr.Dog > 1;
|
|
|
|
|
changeIzdButton.Enabled = Program.user.Usr.Dog > 1;
|
|
|
|
|
delIzdButton.Enabled = Program.user.Usr.Dog > 1;
|
|
|
|
|
addPlatejBox.Enabled = Program.user.Usr.Dog > 1;
|
|
|
|
|
changePlatejBox.Enabled = Program.user.Usr.Dog > 1;
|
|
|
|
|
delPlatejBox.Enabled = Program.user.Usr.Dog > 1;
|
|
|
|
|
addPostButton.Enabled = Program.user.Usr.Dog > 1;
|
|
|
|
|
delPostButton.Enabled = Program.user.Usr.Dog > 1;
|
|
|
|
|
addDocButton.Enabled = Program.user.Usr.Dog > 1;
|
|
|
|
|
delDocButton.Enabled = Program.user.Usr.Dog > 1;
|
|
|
|
|
}
|
2021-07-17 09:33:09 +05:00
|
|
|
|
}
|
2021-07-18 22:17:04 +05:00
|
|
|
|
|
|
|
|
|
|
2021-07-19 14:12:18 +05:00
|
|
|
|
private void ClearBoxes()
|
|
|
|
|
{
|
|
|
|
|
idLabel.Text = "";
|
|
|
|
|
dogNumBox.Text = "";
|
|
|
|
|
zakId = null;
|
|
|
|
|
UpdateZakDecNumLink();
|
|
|
|
|
datePicker.Value = DateTime.Now;
|
|
|
|
|
prikZapBox.Text = "";
|
|
|
|
|
garantiiBox.Text = "";
|
|
|
|
|
primechanieBox.Text = "";
|
|
|
|
|
ClearIzd();
|
|
|
|
|
UpdateIzdTable();
|
|
|
|
|
ClearPlatej();
|
|
|
|
|
UpdatePlatejTable();
|
|
|
|
|
UpdatePostTable();
|
|
|
|
|
UpdateDocTable();
|
|
|
|
|
}
|
|
|
|
|
int? zakId = null;
|
|
|
|
|
private void UpdateZakDecNumLink()
|
|
|
|
|
{
|
|
|
|
|
var size = 23;
|
|
|
|
|
zakDecNumLinkLabel.Text = "Не выбран.";
|
|
|
|
|
if (!zakId.HasValue) return;
|
|
|
|
|
var f = WorkDB.GetZakazchik(zakId.Value);
|
|
|
|
|
if (f == null) return;
|
|
|
|
|
zakDecNumLinkLabel.Text = (f.Name.Length > size) ? f.Name.Substring(0, size - 3) + "..." : f.Name;
|
|
|
|
|
}
|
|
|
|
|
private void selectZak_Click(object sender, EventArgs e)
|
|
|
|
|
{
|
|
|
|
|
var form = new ZakForm(true);
|
|
|
|
|
form.ShowDialog();
|
|
|
|
|
zakId = form.returnId;
|
|
|
|
|
UpdateZakDecNumLink();
|
|
|
|
|
}
|
2021-07-18 22:17:04 +05:00
|
|
|
|
|
2021-07-19 14:12:18 +05:00
|
|
|
|
private void UpdateTable(Dogovor[] arr, bool reset_cursor = false)
|
|
|
|
|
{
|
|
|
|
|
var selected = (!reset_cursor && dogGridView.SelectedRows.Count > 0) ? dogGridView.SelectedRows[0].Index : -1;
|
|
|
|
|
{
|
|
|
|
|
var r = dogGridView.Rows;
|
|
|
|
|
while (r.Count > 0)
|
|
|
|
|
r.Remove(r[0]);
|
|
|
|
|
var c = dogGridView.Columns;
|
|
|
|
|
while (c.Count > 0)
|
|
|
|
|
c.Remove(c[0]);
|
|
|
|
|
}
|
|
|
|
|
{
|
|
|
|
|
var c = dogGridView.Columns;
|
|
|
|
|
c.Add("Id", "№");
|
|
|
|
|
c["Id"].Width = 40;
|
|
|
|
|
c.Add("DogNum", "Дог. №");
|
|
|
|
|
c["DogNum"].Width = 120;
|
|
|
|
|
c.Add("ZakName", "Заказчик");
|
|
|
|
|
c["ZakName"].Width = 120;
|
|
|
|
|
c.Add("DataPost", "Дата пост.");
|
|
|
|
|
c["DataPost"].Width = 80;
|
|
|
|
|
c.Add("PrikoZap", "Приказ о зап.");
|
|
|
|
|
c["PrikoZap"].Width = 120;
|
|
|
|
|
c.Add("Garantii", "Гарантии.");
|
|
|
|
|
c["Garantii"].Width = 200;
|
|
|
|
|
c["Garantii"].DefaultCellStyle.WrapMode = DataGridViewTriState.True;
|
|
|
|
|
c.Add("Primechanie", "Примечание.");
|
|
|
|
|
c["Primechanie"].Width = 200;
|
|
|
|
|
c["Primechanie"].DefaultCellStyle.WrapMode = DataGridViewTriState.True;
|
|
|
|
|
}
|
|
|
|
|
{
|
|
|
|
|
var r = dogGridView.Rows;
|
|
|
|
|
foreach (var dog in arr)
|
|
|
|
|
r.Add(new object[] {
|
|
|
|
|
dog.Id,
|
|
|
|
|
dog.DogNum,
|
|
|
|
|
WorkDB.GetZakazchik(dog.ZakazchikId).Name,
|
|
|
|
|
dog.DataPostavky.ToString("yyyy.MM.dd"),
|
|
|
|
|
dog.PrikazZapusk,
|
|
|
|
|
dog.Garantiy,
|
|
|
|
|
dog.Primechanie
|
|
|
|
|
});
|
|
|
|
|
}
|
|
|
|
|
if (dogGridView.Rows.Count > 0)
|
|
|
|
|
dogGridView.Rows[0].Selected = true;
|
|
|
|
|
if (selected != -1 && selected < dogGridView.Rows.Count)
|
|
|
|
|
for (var i = 0; i < dogGridView.Rows.Count; i++)
|
|
|
|
|
dogGridView.Rows[i].Selected = (i == selected);
|
|
|
|
|
dogGridView_CurrentCellChanged(this, new EventArgs());
|
|
|
|
|
}
|
|
|
|
|
private void dogGridView_CurrentCellChanged(object sender, EventArgs e)
|
|
|
|
|
{
|
|
|
|
|
ClearBoxes();
|
|
|
|
|
if (dogGridView.SelectedRows.Count != 1)
|
|
|
|
|
return;
|
|
|
|
|
{
|
|
|
|
|
var dog = WorkDB.GetDogovor((int)dogGridView.SelectedRows[0].Cells[0].Value);
|
|
|
|
|
if (dog == null)
|
|
|
|
|
return;
|
|
|
|
|
idLabel.Text = dog.Id.ToString();
|
|
|
|
|
dogNumBox.Text = dog.DogNum;
|
|
|
|
|
zakId = dog.ZakazchikId;
|
|
|
|
|
UpdateZakDecNumLink();
|
|
|
|
|
datePicker.Value = dog.DataPostavky;
|
|
|
|
|
prikZapBox.Text = dog.PrikazZapusk;
|
|
|
|
|
garantiiBox.Text = dog.Garantiy;
|
|
|
|
|
primechanieBox.Text = dog.Primechanie;
|
|
|
|
|
UpdateIzdTable();
|
|
|
|
|
UpdatePlatejTable();
|
|
|
|
|
UpdatePostTable();
|
|
|
|
|
UpdateDocTable();
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
private void createButton_Click(object sender, EventArgs e)
|
|
|
|
|
{
|
|
|
|
|
if (WorkDB.ListDogovor().Where(x => x.DogNum == dogNumBox.Text).Count() > 0 ) { ShowError("Номер договора дублируется."); return; }
|
|
|
|
|
if (!zakId.HasValue) { ShowError("Заказчик не выбран."); return; }
|
|
|
|
|
var r = new Dogovor()
|
|
|
|
|
{
|
|
|
|
|
DogNum = dogNumBox.Text,
|
|
|
|
|
ZakazchikId = zakId.Value,
|
|
|
|
|
DataPostavky = datePicker.Value,
|
|
|
|
|
PrikazZapusk = prikZapBox.Text,
|
|
|
|
|
Garantiy = garantiiBox.Text,
|
|
|
|
|
Primechanie = primechanieBox.Text
|
|
|
|
|
};
|
|
|
|
|
WorkDB.AddDogovor(r);
|
|
|
|
|
UpdateTable(WorkDB.ListDogovor(searchBox.Text));
|
|
|
|
|
}
|
|
|
|
|
private void changeButton_Click(object sender, EventArgs e)
|
|
|
|
|
{
|
|
|
|
|
if (!int.TryParse(idLabel.Text, out int dogId)) { ShowError("Договор не выбран."); return; }
|
|
|
|
|
var d = WorkDB.GetDogovor(dogId);
|
|
|
|
|
if (d == null) { ShowError("Договора нет в БД."); return; }
|
|
|
|
|
if (dogNumBox.Text != d.DogNum && WorkDB.ListDogovor().Where(x => x.DogNum == dogNumBox.Text).Count() > 0) { ShowError("Номер договора дублируется."); return; }
|
|
|
|
|
if (!zakId.HasValue) { ShowError("Заказчик не выбран."); return; }
|
|
|
|
|
d.DogNum = dogNumBox.Text;
|
|
|
|
|
d.ZakazchikId = zakId.Value;
|
|
|
|
|
d.DataPostavky = datePicker.Value;
|
|
|
|
|
d.PrikazZapusk = prikZapBox.Text;
|
|
|
|
|
d.Garantiy = garantiiBox.Text;
|
|
|
|
|
d.Primechanie = primechanieBox.Text;
|
|
|
|
|
WorkDB.ChangeDogovor(d);
|
|
|
|
|
UpdateTable(WorkDB.ListDogovor(searchBox.Text));
|
|
|
|
|
}
|
|
|
|
|
private void deleteButton_Click(object sender, EventArgs e)
|
|
|
|
|
{
|
|
|
|
|
if (!int.TryParse(idLabel.Text, out int dogId)) { ShowError("Договор не выбран."); return; }
|
|
|
|
|
var d = WorkDB.GetDogovor(dogId);
|
|
|
|
|
if (d == null) { ShowError("Договора нет в БД."); return; }
|
|
|
|
|
if (WorkDB.GetIzdelieDogIzdFromDogovor(d.Id).Length > 0) { ShowError("Есть связанные изделия."); return; }
|
|
|
|
|
if (WorkDB.GetPlatejyFromDogovor(d.Id).Length > 0) { ShowError("Есть связанные платежи."); return; }
|
|
|
|
|
if (WorkDB.GetPostavkyFromDogovor(d.Id).Length > 0) { ShowError("Есть связанные поставки."); return; }
|
|
|
|
|
if (WorkDB.GetDocumentyDogDocFromDogovor(d.Id).Length > 0) { ShowError("Есть связанные документы."); return; }
|
|
|
|
|
WorkDB.DeleteDogovor(d);
|
|
|
|
|
UpdateTable(WorkDB.ListDogovor(searchBox.Text));
|
|
|
|
|
}
|
|
|
|
|
private void resetButton_Click(object sender, EventArgs e)
|
|
|
|
|
{
|
|
|
|
|
ClearBoxes();
|
|
|
|
|
}
|
|
|
|
|
private void selectButton_Click(object sender, EventArgs e)
|
|
|
|
|
{
|
|
|
|
|
if (int.TryParse(idLabel.Text, out int idRes))
|
|
|
|
|
returnId = idRes;
|
|
|
|
|
this.Close();
|
|
|
|
|
}
|
2021-07-17 22:32:53 +05:00
|
|
|
|
private void MenuItem_Click(object sender, EventArgs e)
|
|
|
|
|
{
|
|
|
|
|
object form = null;
|
|
|
|
|
if ((ToolStripMenuItem)sender == mainMenuStrip.Items[0]) { form = new DogForm(); }
|
|
|
|
|
if ((ToolStripMenuItem)sender == mainMenuStrip.Items[1]) { form = new DocForm(); }
|
|
|
|
|
if ((ToolStripMenuItem)sender == mainMenuStrip.Items[2]) { form = new IzvForm(); }
|
|
|
|
|
if ((ToolStripMenuItem)sender == mainMenuStrip.Items[3]) { form = new PostForm(); }
|
|
|
|
|
if ((ToolStripMenuItem)sender == mainMenuStrip.Items[4]) { form = new IzdForm(); }
|
|
|
|
|
if ((ToolStripMenuItem)sender == mainMenuStrip.Items[5]) { form = new ZakForm(); }
|
|
|
|
|
if ((ToolStripMenuItem)sender == mainMenuStrip.Items[6]) { form = new SetForm(); }
|
|
|
|
|
if (form != null)
|
|
|
|
|
{
|
|
|
|
|
this.Hide();
|
|
|
|
|
((Form)form).Closed += (s, args) => this.Close();
|
|
|
|
|
((Form)form).Show();
|
|
|
|
|
}
|
|
|
|
|
}
|
2021-07-18 22:17:04 +05:00
|
|
|
|
|
|
|
|
|
|
2021-07-19 14:12:18 +05:00
|
|
|
|
}
|
2021-07-17 09:33:09 +05:00
|
|
|
|
}
|