317 lines
		
	
	
		
			12 KiB
		
	
	
	
		
			C#
		
	
	
	
	
	
			
		
		
	
	
			317 lines
		
	
	
		
			12 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 fProjectPartToPurchase : Form
 | |
|     {
 | |
|         BindingSource bsModel;
 | |
|         int ProjectIndex = -1;
 | |
|         public fProjectPartToPurchase(int pidx)
 | |
|         {
 | |
|             InitializeComponent();
 | |
|             this.ProjectIndex = pidx;
 | |
|             this.KeyPreview = true;
 | |
|             this.StartPosition = FormStartPosition.CenterScreen;
 | |
|             this.KeyDown += (s1, e1) =>
 | |
|             {
 | |
|                 if (e1.KeyCode == Keys.Escape) this.Close();
 | |
|             };
 | |
|         }
 | |
|         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.tbProject.Text = drPrj.name;
 | |
|             this.tbCr.Text = drPrj.orderno;
 | |
|             this.tbOrderNo.Text = drPrj.orderno;
 | |
| 
 | |
|             //파트리스트 합계금액
 | |
|             var dtPart = taPart.GetData(this.ProjectIndex);
 | |
|             var sumAmt = dtPart.Sum(t => t.amt);
 | |
|             this.tbSum.Text = sumAmt.ToString("N0");
 | |
| 
 | |
|             //상태
 | |
|             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 users" +
 | |
|                             " where gcode='{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 = "PO";
 | |
| 
 | |
| 
 | |
|             this.Show();
 | |
|             Application.DoEvents();
 | |
|         }
 | |
| 
 | |
| 
 | |
|         private bool saveData()
 | |
|         {
 | |
|             this.Validate();
 | |
| 
 | |
| 
 | |
| 
 | |
|             if (cbProcess.Text.Trim() == "")
 | |
|             {
 | |
|                 FCOMMON.Util.MsgE("프로세스를 선택하세요.");
 | |
|                 cbProcess.Focus();
 | |
|                 return false;
 | |
|             }
 | |
| 
 | |
|             if (tbProject.Text == "")
 | |
|             {
 | |
|                 FCOMMON.Util.MsgE("프로젝트 정보를 입력하세요.");
 | |
|                 tbProject.Focus();
 | |
|                 return false;
 | |
|             }
 | |
| 
 | |
|             var overtime = DateTime.Now - DateTime.Parse("2019-01-09 00:00:00");
 | |
|             if (overtime.TotalSeconds > 0)
 | |
|             {
 | |
|                 if (this.cbProcess.SelectedIndex == -1)
 | |
|                 {
 | |
|                     if (FCOMMON.info.Login.level >= 5)
 | |
|                     {
 | |
|                         var dlg = FCOMMON.Util.MsgQ("[공정]을 입력하지 않고 진행 하시겠습니까?\n\n" +
 | |
|                        "선택 대상이 없는 경우 문의 바랍니다.\n\n" +
 | |
|                        "BongSeok Jung(T.7191)\n" +
 | |
|                        "BongSeok.Jung@amkor.co.kr");
 | |
|                         if (dlg != System.Windows.Forms.DialogResult.Yes)
 | |
|                         {
 | |
|                             cbProcess.Focus();
 | |
|                             return false;
 | |
|                         }
 | |
|                     }
 | |
|                     else
 | |
|                     {
 | |
|                         FCOMMON.Util.MsgE("[공정]을 선택하세요\n\n" +
 | |
|                         "선택 대상이 없는 경우 문의 바랍니다.\n\n" +
 | |
|                         "BongSeok Jung(T.7191)\n" +
 | |
|                         "BongSeok.Jung@amkor.co.kr");
 | |
| 
 | |
|                         cbProcess.Focus();
 | |
|                         return false;
 | |
|                     }
 | |
|                 }
 | |
|                 if (cbManuProc.SelectedIndex == -1)
 | |
|                 {
 | |
|                     if (FCOMMON.info.Login.level >= 5)
 | |
|                     {
 | |
|                         var dlg = FCOMMON.Util.MsgQ("제조공정을 입력하지 않고 진행 하시겠습니까?\n\n" +
 | |
|                        "선택 대상이 없는 경우 문의 바랍니다.\n\n" +
 | |
|                        "BongSeok Jung(T.7191)\n" +
 | |
|                        "BongSeok.Jung@amkor.co.kr");
 | |
|                         if (dlg != System.Windows.Forms.DialogResult.Yes)
 | |
|                         {
 | |
|                             cbManuProc.Focus();
 | |
|                             return false;
 | |
|                         }
 | |
|                     }
 | |
|                     else
 | |
|                     {
 | |
|                         FCOMMON.Util.MsgE("제조공정을 선택하세요\n\n" +
 | |
|                         "선택 대상이 없는 경우 문의 바랍니다.\n\n" +
 | |
|                         "BongSeok Jung(T.7191)\n" +
 | |
|                         "BongSeok.Jung@amkor.co.kr");
 | |
| 
 | |
|                         cbManuProc.Focus();
 | |
|                         return false;
 | |
|                     }
 | |
|                 }
 | |
|                 if (this.cbEQManu.SelectedIndex == -1)
 | |
|                 {
 | |
|                     if (FCOMMON.info.Login.level >= 5)
 | |
|                     {
 | |
|                         var dlg = FCOMMON.Util.MsgQ("장비제조사를 입력하지 않고 진행 하시겠습니까?\n\n" +
 | |
|                         "선택 대상이 없는 경우 문의 바랍니다.\n\n" +
 | |
|                         "BongSeok Jung(T.7191)\n" +
 | |
|                         "BongSeok.Jung@amkor.co.kr");
 | |
|                         if (dlg != System.Windows.Forms.DialogResult.Yes)
 | |
|                         {
 | |
|                             cbEQManu.Focus();
 | |
|                             return false;
 | |
|                         }
 | |
|                     }
 | |
|                     else
 | |
|                     {
 | |
|                         FCOMMON.Util.MsgE("장비 제조사를 선택하세요.\n\n" +
 | |
|                         "선택 대상이 없는 경우 문의 바랍니다.\n\n" +
 | |
|                         "BongSeok Jung(T.7191)\n" +
 | |
|                         "BongSeok.Jung@amkor.co.kr");
 | |
|                         cbEQManu.Focus();
 | |
|                         return false;
 | |
|                     }
 | |
|                 }
 | |
| 
 | |
| 
 | |
| 
 | |
|             }
 | |
| 
 | |
|             //part 목록을 조회해서 NR에 등록해줘야 함
 | |
|             var dlg2 = FCOMMON.Util.MsgQ("해당 파트리스트룰 NR구매 목록에 등록하시겠습니까?");
 | |
|             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 Purchase" +
 | |
|                 " where import = 1" +
 | |
|                 " and gcode = '" + FCOMMON.info.Login.gcode + "' and pdate = '{0}'" +
 | |
|                 " 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 Purchase" +
 | |
|                   " where import = 1" +
 | |
|                   " and gcode = '" + FCOMMON.info.Login.gcode + "' and pdate = '{0}'" +
 | |
|                   " and projectidx = {1}";
 | |
|                     SQLExist = string.Format(SQLExist, dtPdate.Value.ToShortDateString(), this.ProjectIndex.ToString());
 | |
|                     var delCnt = FCOMMON.DBM.ExecuteNonQuery(SQLExist);
 | |
|                     Console.WriteLine(delCnt.ToString() + "건의 기존 입력된 자료가 삭제됨");
 | |
|                 }
 | |
|             }
 | |
| 
 | |
|             //insert query
 | |
|             var SQL =
 | |
|                 " insert into purchase(asset,dept,manuproc,gcode,pdate,state,process,request,sid,pumname,pumidx,pumscale,pumunit," +
 | |
|                 " pumqty,pumprice,pumamt,supply,supplyidx,project,projectidx,bigo,import,wuid,wdate,orderno)" +
 | |
|                 " select '{8}','{9}','{10}','{11}', '{0}' as pdate,'{1}','{2}' as process ,'{3}' as request,ItemSid," +
 | |
|                 " ItemName,Item,ItemModel,ItemUnit,qty,price,amt,ItemSupply,ItemSupplyidx,'{4}',Project," +
 | |
|                 " memo,1 as import,'{5}' as wuid, getdate() as wdate,'{6}' as orderno" +
 | |
|                 " from ProjectsPart" +
 | |
|                 " where Project = {7}";
 | |
| 
 | |
|             SQL = string.Format(SQL,
 | |
|                 dtPdate.Value.ToShortDateString(),
 | |
|                 cmbState.Text.Trim(),
 | |
|                 cbProcess.Text.Trim(),
 | |
|                 userNo.Trim(),
 | |
|                 tbProject.Text.Trim(),
 | |
|                 FCOMMON.info.Login.no,
 | |
|                 tbOrderNo.Text.Trim(),
 | |
|                 this.ProjectIndex.ToString(),
 | |
|                 this.cbEQModel.Text,
 | |
|                 this.cbEQManu.Text,
 | |
|                 this.cbManuProc.Text,
 | |
|                 FCOMMON.info.Login.gcode
 | |
|                 );
 | |
| 
 | |
|             // Console.WriteLine(SQL);
 | |
| 
 | |
|             var cnt = FCOMMON.DBM.ExecuteNonQuery(SQL);
 | |
|             FCOMMON.Util.MsgI(string.Format("{0}건의 자료가 생성 되었습니다.\n\n구매등록 화면에서 내용을 확인하세요.", cnt));
 | |
| 
 | |
|             return true;
 | |
|         }
 | |
| 
 | |
|         private void button1_Click(object sender, EventArgs e)
 | |
|         {
 | |
|             if (!saveData()) return;
 | |
|             DialogResult = System.Windows.Forms.DialogResult.OK;
 | |
|         }
 | |
| 
 | |
|         private void cbEQManu_SelectedIndexChanged(object sender, EventArgs e)
 | |
|         {
 | |
|             if (bsModel == null) return;
 | |
|             string 원본모델 = cbEQModel.Text;
 | |
| 
 | |
|             //장비모델 필터를 변경해준다.
 | |
|             if (cbEQManu.SelectedIndex < 0)
 | |
|             {
 | |
|                 cbEQModel.SelectedIndex = -1;
 | |
|                 return;
 | |
|             }
 | |
| 
 | |
|             string filter = "svalue='" + cbEQManu.Text.Replace("'", "''") + "'";
 | |
|             bsModel.Filter = filter;
 | |
|             if (원본모델 != "") cbEQModel.Text = 원본모델;
 | |
|             else cbEQModel.SelectedIndex = -1;
 | |
|         }
 | |
| 
 | |
|     }
 | |
| }
 | 
