Files
Groupware/SubProject/FPJ0000/Project/fProjectPartToPurchaseCR.cs
2023-03-07 00:28:55 +09:00

443 lines
17 KiB
C#

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;
namespace FPJ0000
{
public partial class fProjectPartToPurchaseCR : Form
{
int ProjectIndex = -1;
List<int> IDXList;
public fProjectPartToPurchaseCR(int pidx, List<int> idxlist)
{
InitializeComponent();
// dv1.SelectionMode = DataGridViewSelectionMode.FullRowSelect;
IDXList = idxlist;
this.ProjectIndex = pidx;
this.KeyPreview = true;
this.StartPosition = FormStartPosition.CenterScreen;
this.KeyDown += (s1, e1) =>
{
if (e1.KeyCode == Keys.Escape) this.Close();
};
dv1.CellEndEdit += Dv1_CellEndEdit;
Col_Price = dv1.Columns["dvc_price"].Index;
Col_Qty = dv1.Columns["dvc_qty"].Index;
Col_amt = dv1.Columns["dvc_amt"].Index;
}
int Col_Price = -1;
int Col_Qty = -1;
int Col_amt = -1;
private void Dv1_CellEndEdit(object sender, DataGridViewCellEventArgs e)
{
if(e.ColumnIndex == Col_Price || e.ColumnIndex == Col_Qty)
{
var o_price = dv1.Rows[e.RowIndex].Cells[Col_Price].Value;
var o_qty = dv1.Rows[e.RowIndex].Cells[Col_Qty].Value;
decimal v_price = 0;
decimal v_qty = 0;
if (o_price != null) v_price = decimal.Parse(o_price.ToString());// (decimal)o_price;
if (o_qty != null) v_qty = decimal.Parse(o_qty.ToString());//(decimal)o_qty;
var amt = v_price * v_qty;
dv1.Rows[e.RowIndex].Cells[Col_amt].Value = amt;
dv1.EndEdit();
}
//newdr.pumprice = (decimal)item.Cells["dvc_price"].Value;
//newdr.pumqty = (int)item.Cells["dvc_qty"].Value;
}
void MakeList(dsPRJ.ProjectsPartDataTable dt)
{
//this.listView1.SuspendLayout();
//this.listView1.Items.Clear();
var orderdata = dt
.OrderBy(t => string.Concat((t.bbuy ? "1" : "0"), t.ItemName));
this.dv1.Rows.Clear();
foreach (dsPRJ.ProjectsPartRow dr in orderdata)
{
if (this.IDXList.Contains(dr.idx) == false) continue;
var rowidx = this.dv1.Rows.Add();
var row = this.dv1.Rows[rowidx];
var col = 0;
row.Cells[col++].Value = dr.ItemSid;
row.Cells[col++].Value = dr.ItemName;
row.Cells[col++].Value = dr.ItemModel;
row.Cells[col++].Value = dr.price;
row.Cells[col++].Value = dr.qty;
row.Cells[col++].Value = dr.price * dr.qty;
row.Cells[col++].Value = dr.memo;
row.Tag = dr;
//var lvitem = this.listView1.Items.Add(dr.ItemGroup);
//lvitem.Tag = dr;
//lvitem.Checked = dr.bbuy ? false : true;
//lvitem.SubItems.Add(dr.option1);
//lvitem.SubItems.Add(dr.ItemSid);
//lvitem.SubItems.Add(dr.ItemName);
//lvitem.SubItems.Add(dr.ItemModel);
//lvitem.SubItems.Add(dr.qty.ToString("N0")); //실 필요 구매 수량으로 처리
//lvitem.SubItems.Add(dr.price.ToString("N0"));
//lvitem.SubItems.Add(dr.amt.ToString("N0"));
Boolean bbuy = dr.bbuy;
var supplyname = dr.ItemSupply.Trim();
//if (dr.qtybuy == dr.qty)
//{
// 동일하면 보기 편하게 표시하지 않는다.
// lvitem.SubItems.Add("--");
// lvitem.SubItems.Add("--");
//}
//else
//{
// lvitem.SubItems.Add(dr.qtybuy.ToString("N0"));
// var amt = dr.qtybuy * dr.price;
// lvitem.SubItems.Add(amt.ToString("N0"));
//}
//lvitem.SubItems.Add(string.IsNullOrEmpty(supplyname) ? "O" : "--");
//if (dr.bbuy == false) lvitem.BackColor = Color.SkyBlue;
//else if (dr.qtybuy == 0)
//{
// 구매핌ㄹ요없다.
// lvitem.BackColor = Color.LightGray;
// lvitem.Checked = false;
//}
//else if (dr.qtyin == dr.qtybuy)
//{
// 모두
// lvitem.BackColor = Color.Lime;
// lvitem.Checked = false;
//}
}
// this.listView1.ResumeLayout();
this.dv1.AutoResizeColumns();
showSummary();
}
private void __Load(object sender, EventArgs e)
{
//프로젝트정보를 찾는다.
var dtPrj = taProject.GetbyIDX(this.ProjectIndex);
var drPrj = dtPrj.Rows[0] as dsPRJ.ProjectsRow;
this.tbProjectIndex.Text = drPrj.idx.ToString();
this.textBox1.Text = drPrj.remark_ans;
this.tbProject.Text = drPrj.name;
this.tbCr.Text = drPrj.orderno;
//this.tbOrderNo.Text = drPrj.orderno;
//파트리스트 합계금액
var dtPart = taPart.GetData(this.ProjectIndex);
MakeList(dtPart);
////상태
//var stateList = FCOMMON.DBM.getCodeTable("04");
//this.cmbState.DisplayMember = "Value";
//this.cmbState.ValueMember = "Value";
//this.cmbState.DataSource = stateList;
////장비제조
//var dt_dept = FCOMMON.DBM.getCodeTable("06");
//BindingSource bsManu = new BindingSource(dt_dept, "");
//this.cbEQManu.DisplayMember = "Value";
//this.cbEQManu.ValueMember = "Value";
//this.cbEQManu.DataSource = bsManu;
////장비모델
//var dt_asset = FCOMMON.DBM.getCodeTable("07");
//bsModel = new BindingSource(dt_asset, "");
//bsModel.Filter = "svalue='그런거없다'";
//this.cbEQModel.DisplayMember = "Value";
//this.cbEQModel.ValueMember = "Value";
//this.cbEQModel.DataSource = bsModel;
////제조공정
//var dt_manuproc = FCOMMON.DBM.getCodeTable("08");
//this.cbManuProc.DisplayMember = "Value";
//this.cbManuProc.ValueMember = "Value";
//this.cbManuProc.DataSource = dt_manuproc;
////장비기술공정
//var dt_eetproc = FCOMMON.DBM.getCodeTable("09");
//this.cbProcess.DisplayMember = "Value";
//this.cbProcess.ValueMember = "Value";
//this.cbProcess.DataSource = dt_eetproc;
////processlist
//var procList = FCOMMON.DBM.getGroupTable("process", "Purchase", "process <> ''");
//this.cbProcess.DisplayMember = "Value";
//this.cbProcess.ValueMember = "Key";
//this.cbProcess.DataSource = new BindingSource(procList, "");
//담당자목록
//담당자목록 - 사용자목록으로 처리한다.
string namestr = string.Format("{0}({1})", FCOMMON.info.Login.nameK, FCOMMON.info.Login.no);
if (FCOMMON.info.Login.no == "dev") namestr = "김치균(395552)";
this.cmbRequest.Items.Clear();
this.cmbRequest.Items.Add(namestr);
try
{
var cn = FCOMMON.DBM.getCn();
cn.Open();
string sql = "select [id],[name] " +
" from vGroupUser" +
" where gcode='{1}' and isnull(useUserState,0) = 1 and id <> '{0}'" +
" order by [name]";
sql = string.Format(sql, FCOMMON.info.Login.no, FCOMMON.info.Login.gcode);
var cmd = new System.Data.SqlClient.SqlCommand(sql, cn);
var rdr = cmd.ExecuteReader();
while (rdr.Read())
{
string cmbdata = string.Format("{1}({0})", rdr[0].ToString(), rdr[1].ToString());
this.cmbRequest.Items.Add(cmbdata);
}
cmd.Dispose();
cn.Close();
cn.Dispose();
}
catch (Exception ex)
{
FCOMMON.Util.MsgE("User List Error\n\n" + ex.Message);
}
cmbRequest.Text = namestr;// FCOMMON.info.Login.nameK;
dtPdate.Value = DateTime.Now;
//cmbState.Text = "PR"; //po에서 변경 200423 - JBS요청
this.Show();
Application.DoEvents();
}
private void toolStripButton8_Click(object sender, EventArgs e)
{
//파트리스트 합계금액
var dtPart = taPart.GetData(this.ProjectIndex);
MakeList(dtPart);
}
void showSummary()
{
//모든 선택된 자료의 합계를 표시한다
decimal sumAmt = 0;
foreach (DataGridViewRow item in dv1.Rows)
{
sumAmt += (decimal)item.Cells["dvc_amt"].Value;
}
this.tbSum.Text = sumAmt.ToString("N0");
}
private bool saveData()
{
this.Validate();
if(this.dv1.Rows.Count < 1)
{
FCOMMON.Util.MsgE("자료가 없습니다");
return false;
}
if (tbProject.Text == "")
{
FCOMMON.Util.MsgE("프로젝트 정보를 입력하세요.");
tbProject.Focus();
return false;
}
if (string.IsNullOrEmpty(tbCr.Text))
{
FCOMMON.Util.MsgE("SCR/CF값이 없습니다. 프로젝트 정보를 확인하세요");
tbCr.Focus();
return false;
}
int itemCount = 0;
decimal itemAmt = 0;
foreach (DataGridViewRow item in dv1.Rows)
{
itemCount += 1;
var amt = (decimal)item.Cells["dvc_amt"].Value;
itemAmt += amt;// int.Parse(item.SubItems[7].Text.Replace(",", "").Trim());
}
//part 목록을 조회해서 NR에 등록해줘야 함
var dlg2 = FCOMMON.Util.MsgQ("해당 파트리스트를 CR구매 목록에 등록 하시겠습니까?\n" +
itemCount.ToString() + "건 " + itemAmt.ToString("N0") + "원");
if (dlg2 != System.Windows.Forms.DialogResult.Yes) return false;
string userNo = this.cmbRequest.Text.Substring(cmbRequest.Text.LastIndexOf('(') + 1);
userNo = userNo.Substring(0, userNo.Length - 1);
////기존에 등록된 자료가 있는지 체크한다.
//var SQLExist =
// " select count(*) from EETGW_PurchaseCR" +
// " where import = 1" +
// " and gcode = '" + FCOMMON.info.Login.gcode + "' and pdate = '{0}' and state in ('---','PR','')" +
// " and projectidx = {1}";
//SQLExist = string.Format(SQLExist, dtPdate.Value.ToShortDateString(), this.ProjectIndex.ToString());
//var ExistCnt = FCOMMON.DBM.ExecuteScalarI(SQLExist);
//if (ExistCnt > 0)
//{
// var dlgq = FCOMMON.Util.MsgQ(string.Format("생성된 자료가 {0}건 존재 합니다.\n\n" + "기존 자료를 삭제 하시겠습니까?", ExistCnt));
// if (dlgq == System.Windows.Forms.DialogResult.Yes)
// {
// SQLExist =
// " delete from EETGW_PurchaseCR" +
// " where import = 1" +
// " and gcode = '" + FCOMMON.info.Login.gcode + "' and pdate = '{0}' and state in ('---','PR','')" +
// " and projectidx = {1}";
// SQLExist = string.Format(SQLExist, dtPdate.Value.ToShortDateString(), this.ProjectIndex.ToString());
// var delCnt = FCOMMON.DBM.ExecuteNonQuery(SQLExist);
// Console.WriteLine(delCnt.ToString() + "건의 기존 입력된 자료가 삭제됨");
// }
//}
var fProg = new FCOMMON.fProgress();
fProg.Title = "CR구매파트 자료 등록 중";
fProg.SetProgress(0, itemCount);
fProg.Show();
fProg.Refresh();
// int iCnt = 0;
//데이터를 넣는다
var ta = new dsPurchaseTableAdapters.EETGW_PurchaseCRTableAdapter();
var dt = new dsPurchase.EETGW_PurchaseCRDataTable();
foreach (DataGridViewRow item in dv1.Rows)
{
var dr = item.Tag as dsPRJ.ProjectsPartRow;
//insert query
var newdr = dt.NewEETGW_PurchaseCRRow();
// newdr.asset = cbEQModel.Text.Trim();
// newdr.dept = cbEQModel.Text.Trim();
///newdr.manuproc = cbManuProc.Text.Trim();
newdr.gcode = FCOMMON.info.Login.gcode;
newdr.pdate = dtPdate.Value.ToShortDateString();
newdr.state = "---";// cmbState.Text.Trim();
//newdr.process = cbProcess.Text.Trim();
newdr.request = userNo.Trim();
newdr.sid = dr.ItemSid.Replace(" ", "").Trim();
newdr.pumname = dr.ItemName.Trim();
newdr.pumidx = dr.Item;
newdr.pumscale = dr.ItemModel;
newdr.pumunit = dr.ItemUnit;
var o_price = item.Cells[Col_Price].Value;
var o_qty = item.Cells[Col_Qty].Value;
decimal v_price = 0;
int v_qty = 0;
if (o_price != null) v_price = decimal.Parse(o_price.ToString());
if (o_qty != null) v_qty = int.Parse(o_qty.ToString());
newdr.pumprice = v_price;// (decimal)item.Cells[Col_Price].Value;//dr.price;
//if (radioButton1.Checked)
//
newdr.pumqty = v_qty;// (int)item.Cells[Col_Qty].Value;// dr.qty; //SQL = SQL.Replace("{qty}", dr.qty.ToString()); //일반수량이 아닌 필요수량으로
newdr.pumamt = v_price * v_qty;// (decimal)item.Cells["dvc_amt"].Value;// dr.amt; //SQL = SQL.Replace("{amt}", dr.amt.ToString());
//}
//else
//{
// //실제 구매에 필요한 수량으로 처리
// newdr.pumqty = dr.qtybuy;
// newdr.pumamt = dr.qtybuy * dr.price;
//}
newdr.supply = dr.ItemSupply.Trim();
newdr.supplyidx = dr.ItemSupplyidx;
newdr.project = tbProject.Text.Trim();
newdr.projectidx = int.Parse(tbProjectIndex.Text);
newdr.bigo = item.Cells["dvc_remark"].Value.ToString();//dr.memo.Trim();
newdr.import = true;
newdr.wuid = FCOMMON.info.Login.no;
newdr.wdate = DateTime.Now;
newdr.orderno = tbCr.Text.Trim();
newdr.EndEdit();
dt.AddEETGW_PurchaseCRRow(newdr);
// Console.WriteLine(SQL);
fProg.IncProgress();
ta.Update(dt);
}
FCOMMON.Util.MsgI(string.Format("{0}건의 자료가 생성 되었습니다.\n\n구매등록 화면에서 내용을 확인하세요.", itemCount));
fProg.Close();
fProg.Dispose();
return true;
}
private void toolStripButton2_Click(object sender, EventArgs e)
{
var dlg = FCOMMON.Util.MsgQ("현재 선택된 줄을 삭제 할까요?");
if (dlg != DialogResult.Yes) return;
var rows = this.dv1.SelectedCells;
if(rows.Count < 1)
{
FCOMMON.Util.MsgE("선택된 줄이 없습니다");
return;
}
List<int> delrows = new List<int>();
foreach(DataGridViewCell cel in rows)
{
if (delrows.Contains(cel.RowIndex) == false)
delrows.Add(cel.RowIndex);
}
if (delrows.Count < 1)
{
FCOMMON.Util.MsgE("선택된 줄이 없습니다");
return;
}
foreach(var r in delrows.OrderByDescending(t=>t))
{
this.dv1.Rows.RemoveAt(r);
}
//foreach (ListViewItem lv in this.listView1.Items)
// lv.Checked = false;
showSummary();
}
private void toolStripButton4_Click(object sender, EventArgs e)
{
this.Validate();
this.dv1.EndEdit();
if (!saveData()) return;
DialogResult = System.Windows.Forms.DialogResult.OK;
}
}
}