using FarPoint.Excel.EntityClassLibrary.DrawingEx; using FCM0000.Mail; using FCOMMON; using FEQ0000.Purchase; 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 FEQ0000 { public partial class fPurchase_Add : Form { BindingSource bsManu; BindingSource bsModel; dsPurchase.PurchaseRow dr; public Boolean repeatAdd = false; Boolean binit = false; string sidchk1 = string.Empty; string dbchk1 = string.Empty; public fPurchase_Add(dsPurchase.PurchaseRow dr_) { InitializeComponent(); Properties.Settings.Default["gwcs"] = FCOMMON.info.CS; Properties.Settings.Default["EEEntities"] = FCOMMON.info.CS; this.bs.DataSource = dr_; bsManu = new BindingSource(); bsModel = new BindingSource(); this.dr = dr_; this.KeyPreview = true; this.StartPosition = FormStartPosition.CenterScreen; this.KeyDown += (s1, e1) => { if (e1.KeyCode == Keys.Escape) this.Close(); }; this.tbPumName.Leave += tbPumName_Leave; this.tbSupply.Leave += tbSupply_Leave; this.tbProject.Leave += tbProject_Leave; foreach (Control ctl in groupBox1.Controls) { if (ctl.GetType() == typeof(TextBox) || ctl.GetType() == typeof(ComboBox)) { ctl.KeyDown += ctl_KeyDown; } } //필수로 if(FCOMMON.info.Login.gcode == "K4PM") { tbCostCenter.BackColor = Color.FromArgb(255, 255, 192); tbLineCode.BackColor = Color.FromArgb(255, 255, 192); tbManager.BackColor = Color.FromArgb(255, 255, 192); } this.tbPumPrice.Validated += (s1, e1) => { if(tbPumPrice.Tag != null && tbPumPrice.Tag.ToString().Equals(tbPumPrice.Text)) { } else { tbPumPrice.Tag = tbPumPrice.Text; if (decimal.TryParse(tbPumPrice.Text.Replace(",", ""), out decimal value)) { tbPumPrice.Text = value.ToString("N0"); } } }; } Boolean advInput = false; private void __Load(object sender, EventArgs e) { advInput = FCOMMON.Util.getBit(FCOMMON.info.Login.gpermission, (int)FCOMMON.eGroupPermission.purchase_adv); tbPumName.ImeMode = ImeMode.Alpha; //상태 var stateList = FCOMMON.DBM.getCodeTable("04"); this.cmbState.DisplayMember = "Value"; this.cmbState.ValueMember = "Value"; this.cmbState.DataSource = stateList; //costcenter var LstCost = FCOMMON.DBM.getCodeTable("68"); this.tbCostCenter.DisplayMember = "Value"; this.tbCostCenter.ValueMember = "Value"; this.tbCostCenter.DataSource = LstCost; //line var LstLine = FCOMMON.DBM.getCodeTable("67"); this.tbLineCode.DisplayMember = "Value"; this.tbLineCode.ValueMember = "Value"; this.tbLineCode.DataSource = LstLine; //구매-담당 var LstMan = FCOMMON.DBM.getCodeTable("65"); this.tbManager.DisplayMember = "Value"; this.tbManager.ValueMember = "Value"; this.tbManager.DataSource = LstMan; ////구매-승인 //var LstAdm = FCOMMON.DBM.getCodeTable("66"); //this.tbAdmin.DisplayMember = "Value"; //this.tbAdmin.ValueMember = "Value"; //this.tbAdmin.DataSource = LstAdm; //통화 var LstCur = FCOMMON.DBM.getCodeTable("69"); this.cmbCurrency.DisplayMember = "Value"; this.cmbCurrency.ValueMember = "Value"; this.cmbCurrency.DataSource = LstCur; //구매자비고 var LstRemark = FCOMMON.DBM.getCodeList("70"); this.cmbRemark.Items.Clear(); this.cmbRemark.Items.Add("-- 선택 안함 --"); foreach (var item in LstRemark) { cmbRemark.Items.Add(item.Value); } this.cmbRemark.SelectedIndexChanged += (s1, e1) => { if (cmbRemark.SelectedIndex > 0) { tbBigo.Text = cmbRemark.Text.Replace(@"\n",Environment.NewLine) + tbBigo.Text.Trim(); } }; cmbRemark.SelectedIndex = 0; //담당자목록 var userList = FCOMMON.DBM.getUserList(); //.getGroupList("name", "Users", "[level] > 0 and [level] < 10"); foreach (var user in userList) { this.cmbReceive.Items.Add(string.Format("[{0}] {1}", user.Key, user.Value)); this.cmbRequest.Items.Add(string.Format("[{0}] {1}", user.Key, user.Value)); } dtPdate.Value = DateTime.Parse(dr.pdate); if (dr.IsindateNull() || dr.indate.isEmpty()) { this.chkInDate.Checked = false; } else { this.chkInDate.Checked = true; dtInDate.Value = DateTime.Parse(dr.indate); } if (dr.IsedateNull() || dr.edate.isEmpty()) { this.chkExp.Checked = false; } else { this.chkExp.Checked = true; dtExpDate.Value = DateTime.Parse(dr.edate); } ///입력된 데이터를 적용한다. if (cmbRequest.Items.Count > 0) { for (int i = 0; i < cmbRequest.Items.Count; i++) { if (cmbRequest.Items[i].ToString().StartsWith("[" + dr.request + "]")) { cmbRequest.SelectedIndex = i; break; } } } else cmbRequest.Text = dr.request; if (cmbReceive.Items.Count > 0) { for (int i = 0; i < cmbReceive.Items.Count; i++) { if (cmbReceive.Items[i].ToString().StartsWith("[" + dr.receive + "]")) { cmbReceive.SelectedIndex = i; break; } } } else cmbReceive.Text = dr.receive; tbSID.Text = dr.sid; tbSID.Tag = tbSID.Text; //230728 if (dr.IscostcenterNull() == false) tbCostCenter.Text = dr.costcenter; else tbCostCenter.Text = string.Empty; if (dr.IslinecodeNull() == false) tbLineCode.Text = dr.linecode; else tbLineCode.Text = string.Empty; if (dr.IsmanuprocNull() == false) btManuProc.Text = dr.manuproc; else btManuProc.Text = string.Empty; //if (dr.manuproc == "") btManuProc.SelectedIndex = -1; //else btManuProc.Text = dr.manuproc; //190106 if (dr.IsdeptNull() == false) btEQManu.Text = dr.dept; else btEQManu.Text = string.Empty; if (btEQManu.Text.isEmpty()) { if (dr.asset != "") FCOMMON.Util.MsgE( string.Format("장비 모델 명({0})이 있지만 해당 제조사가 없으므로 모델명이 제거 됩니다. 모델을 다시 지정 하세요", dr.asset)); btEQModel.Text = string.Empty; } else btEQModel.Text = dr.asset; //제조모델명 cmbCurrency.Text = dr.currency; tbPumName.Text = dr.pumname; tbPumName.Tag = tbPumName.Text; tbPumModel.Text = dr.pumscale; if (dr.IspumqtyNull()) tbQtyReal.Text = "0"; //230817 else tbQtyReal.Text = dr.pumqty.ToString(); if (dr.IspumqtyReqNull()) tbQtyReq.Text = "0"; //230817 else tbQtyReq.Text = dr.pumqtyReq.ToString(); if (dr.IspumidxNull()) tbPumIDX.Text = "-1"; else tbPumIDX.Text = dr.pumidx.ToString(); tbPumPrice.Text = dr.pumprice.ToString("N0"); tbPumPriceD.Text = dr.pumpriceD.ToString("N0"); tbPumAmt.Text = dr.pumamt.ToString("N0"); //천단위 구분기호 추가 181222 tbPumUnit.Text = dr.pumunit; tbSupply.Text = dr.supply; tbSupply.Tag = tbSupply.Text; tbSupplyIndex.Text = dr.supplyidx.ToString(); tbProject.Text = dr.project; tbProject.Tag = tbProject.Text; tbProjectIndex.Text = dr.projectidx.ToString(); cmbState.Text = dr.state; if (dr.IsprocessNull() == false) btProcess.Text = dr.process; else btProcess.Text = string.Empty; if (btProcess.Text.isEmpty()) { //181203 - 이 사용자가 마지막으로 사용한 공정값을 사용한다. var lastprocess = FCOMMON.DBM.getFirstValue("process", "purchase", "request like '%" + this.cmbRequest.Text + "%'", "pdate desc"); if (lastprocess != "") btProcess.Text = lastprocess; } chk1.Checked = dr.chk1; chk2.Checked = dr.chk2; tbManager.Text = dr.purchase_manager; // tbAdmin.Text = dr.purchase_admin; tbSC.Text = dr.sc; tbPO.Text = dr.po; tbOrderNo.Text = dr.orderno; tbBigo.Text = dr.bigo; if (dr.IschkremarkNull()) tbBigoChk.Text = string.Empty; else tbBigoChk.Text = dr.chkremark; dtInDate.Text = dr.indate; dtExpDate.Text = dr.edate; if (dr.IsinqtyNull() == false) tbInQty.Text = dr.inqty.ToString(); //else tbInQty.Text = "0"; //chkInDate.Checked = !dr.IsindateNull(); //chkExp.Checked = !dr.IsedateNull(); this.dtExpDate.Enabled = chkExp.Checked; this.dtInDate.Enabled = chkInDate.Checked; //일반사용자의경우에는 상태를 변경하지 못한다. int curLevel = Math.Max(FCOMMON.info.Login.level, FCOMMON.DBM.getAuth(FCOMMON.DBM.eAuthType.purchase)); if (curLevel < 5) { if (dr.RowState == DataRowState.Detached || dr.RowState == DataRowState.Added) cmbReceive.Enabled = false; cmbState.Enabled = false; if (cmbRequest.Text != "") cmbRequest.Enabled = false; //데이터가 편집 상태인데 요청자가 내가 아닌경우에도 편집 불가 Boolean enb = true; if (dr.RowState == DataRowState.Unchanged && dr.request != FCOMMON.info.Login.no) enb = false; if (tbSC.Text.Trim() != "") enb = false; if (enb == false) //일반 사용자는 쇼핑, 카드 잇으면 수정 불가 { btSave.Enabled = false; btSaveAdd.Enabled = false; groupBox1.Enabled = false; groupBox2.Enabled = false; } tbBigoChk.Enabled = false; tbQtyReal.Enabled = false; } else { tbBigoChk.Enabled = true; tbQtyReal.Enabled = true; } if (advInput == false) { this.Width = 528; // this.linkLabel7.Enabled = false; this.tbProject.Enabled = false; this.tbProjectIndex.Enabled = false; } this.Show(); Application.DoEvents(); tbPumName.Focus(); //이미지를 불러온다. if (dr.RowState != DataRowState.Detached && dr.RowState != DataRowState.Deleted && dr.RowState != DataRowState.Added) { if (dr.IspumidxNull() == false && dr.pumidx != -1) { var img = FCOMMON.DBM.GetImageData("Items", "image", dr.pumidx); if (img != null) { this.pictureBox1.Image = img; } } } binit = true; if (dr.RowState == DataRowState.Detached || dr.RowState == DataRowState.Added) { sidchk1 = string.Empty; dbchk1 = string.Empty; //복사된 자료는 isd가 잇으면 sid가 잇다면 자동 처리해준다. if (tbSID.Text.StartsWith("10") && tbSID.TextLength == 9) { //sidchk1 = tbSID.Text; dbchk1 = tbPumName.Text.Trim(); } } else { sidchk1 = tbSID.Text.Trim(); dbchk1 = tbPumName.Text.Trim(); } timer1.Start(); } string sidTrim(string sid) { return sid.Replace(" ", "").Replace("-", "").Replace("_", "").Trim(); } void ctl_KeyDown(object sender, KeyEventArgs e) { if (e.KeyCode == Keys.Enter) { Control ctl = sender as Control; string nm = ctl.Name.ToLower(); string search = ctl.Text.Trim(); Console.WriteLine("inner keydown " + nm + ":" + search); switch (nm) { case "cmbrequest": //요청자가 마지막으로 입력한 자료의 process 를 찾아서 기입해준다. var lastprocess = FCOMMON.DBM.getFirstValue("process", "purchase", "request like '%" + this.cmbRequest.Text + "%'", "pdate desc"); if (lastprocess != "") btProcess.Text = lastprocess; tbSID.Focus(); break; case "tbpumname": Lov_Item(search, false); break; case "tbproject": Lov_Project(search, false); break; case "tbsupply": Lov_Supply(search, false); break; default: SendKeys.Send("{TAB}"); break; } } } private void linkLabel5_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e) { Lov_Item("", true); } void Lov_Item(string search, Boolean allowAll) { if (search == "" && allowAll == false) { dbchk1 = string.Empty; sidchk1 = string.Empty; FCOMMON.Util.MsgE("품명은 필수 값 입니다"); tbPumName.Focus(); return; } else if (search.ToLower() != tbPumName.Tag.ToString().ToLower() || tbPumIDX.Text == "-1" || tbPumIDX.Text == "") //값이 바뀌엇다면 검색을 해준다. { var f = new FCM0000.fLovItem(search); if (f.ShowDialog() == System.Windows.Forms.DialogResult.OK) { dbchk1 = f.itemName; sidchk1 = string.Empty; //인덱스값이 다르면 모델 및 가격을 업데이트 한다. tbPumName.Text = f.itemName; tbPumName.Tag = f.itemName; this.tbPumIDX.Text = f.item.ToString(); this.tbPumModel.Text = f.itemmodel; this.tbPumPrice.Text = f.itemprice.ToString("N0"); this.tbPumPriceD.Text = f.itempriceD.ToString("N0"); this.tbSID.Text = f.SID; this.tbSID.Tag = f.SID; this.tbPumUnit.Text = f.itemUnit; //181214 this.tbStorage.Text = f.Storage; this.tbPumModel.Enabled = this.tbPumModel.Text.isEmpty(); this.tbPumUnit.Enabled = false; if (tbSID.Text != "") tbSID.Enabled = false; else tbSID.Enabled = true; //제품을 찾앗다면 suppy 등을 업데이트 해준다. var pcInfo = FCOMMON.DBM.getLastPurchaseInfo(f.item); if (pcInfo.idx != -1) { tbSupply.Text = pcInfo.supply; tbSupplyIndex.Text = pcInfo.supplyidx.ToString(); if (pcInfo.project != "" && tbProject.Text == "") tbProject.Text = pcInfo.project; } else { tbSupply.Text = f.itemSupply; tbSupplyIndex.Text = f.itemSupplyidx.ToString(); } //display image var image = FCOMMON.DBM.GetImageData("Items", "image", int.Parse(tbPumIDX.Text)); var oimage = this.pictureBox1.Image; this.pictureBox1.Image = image; if (oimage != null) oimage.Dispose(); } } if (tbPumModel.Enabled) tbPumModel.Focus(); else this.tbQtyReq.Focus(); } void Lov_Project(string search, Boolean allowAll) { if (search != "" || allowAll == true) { var f = new FCM0000.fLovProject(search); if (f.ShowDialog() == System.Windows.Forms.DialogResult.OK) { this.tbProject.Text = f.Title; this.tbProject.Tag = f.Title; this.tbProjectIndex.Text = f.Index.ToString(); btSave.Focus(); } else { tbProject.SelectAll(); tbProject.Focus(); } } else this.btSave.Focus(); } void Lov_Supply(string search, Boolean allowAll) { if (search != "" || allowAll == true) { FCM0000.fLovSupply f = new FCM0000.fLovSupply(search); if (f.ShowDialog() == System.Windows.Forms.DialogResult.OK) { tbSupply.Text = f.Title; tbSupply.Tag = f.Title; tbSupplyIndex.Text = f.Index.ToString(); if (advInput) this.tbProject.Focus(); else this.tbBigo.Focus(); } else { tbSupply.Focus(); tbSupply.SelectAll(); } } else { if (advInput) this.tbProject.Focus(); else this.tbBigo.Focus(); } } private bool saveData() { this.Validate(); bs.EndEdit(); tbSID.Text = sidTrim(tbSID.Text); if (dbchk1.isEmpty()) { Util.MsgE("품목 검사가 진행되지 않았습니다\n품명을 입력한 후 엔터를 누르거나 [품명] 버튼을 눌러서 검색을 수행한 후 다시 시도하세요"); tbPumName.Focus(); Lov_Item(tbPumName.Text, true); return false; } //시드검사한 자료와 현재 입력된 시드가 다르면 검사를 다시 하게 한다 if (this.tbPumName.Text.Trim().Equals(this.dbchk1.Trim()) == false) { Util.MsgE("품명검사 자료가 변경되었습니다. 다시 검사 하세요"); Lov_Item("", true); dbchk1 = string.Empty; return false; } if (tbSID.Text.Equals("신규") || tbSID.Text.isEmpty()) { //FCOMMON.Util.MsgI($"신규 SID로 인해 SID 검사를 진행하지 않습니다"); } else { if (string.IsNullOrWhiteSpace(this.sidchk1)) { FCOMMON.Util.MsgE("SID검사가 필요합니다.\n상단의 검사 버튼을 눌러 SPR/NR 재고 여부를 확인 하세요"); btSIDChk.Focus(); return false; } //시드검사한 자료와 현재 입력된 시드가 다르면 검사를 다시 하게 한다 if (this.tbSID.Text.Trim().Equals(this.sidchk1) == false) { Util.MsgE("SID검사 자료가 변경되었습니다. 다시 검사 하세요"); sidchk1 = string.Empty; return false; } } if (FCOMMON.info.Login.gcode == "K4PM") { if(tbCostCenter.Text.isEmpty()) { FCOMMON.Util.MsgE("CostCenter 를 입력하세요"); tbCostCenter.Focus(); return false; } if (tbLineCode.Text.isEmpty()) { FCOMMON.Util.MsgE("LineCode 를 입력하세요"); tbLineCode.Focus(); return false; } if (tbManager.Text.isEmpty()) { FCOMMON.Util.MsgE("구매담당자 를 입력하세요"); tbManager.Focus(); return false; } } //if (cbProcess.Text.Trim() == "") //{ // FCOMMON.Util.MsgE("추가정보내의 [공정]을 선택하세요."); // cbProcess.Focus(); // return false; //} if (tbPumName.Text.isEmpty()) { FCOMMON.Util.MsgE("품명이 없습니다."); tbPumName.Focus(); return false; } //if (tbPumModel.Text == "") //{ // FCOMMON.Util.MsgE("제품 규격을 입력하세요."); // tbPumModel.Focus(); // return false; //} if (tbQtyReq.Text == "") { FCOMMON.Util.MsgE("수량(요청)을 입력하세요."); tbQtyReq.Focus(); return false; } //실수량은 구매담당자만 입력한다 if (tbBigoChk.Enabled && (cmbState.Text == "PO" || cmbState.Text == "PR")) { var qtycnv = int.TryParse(tbQtyReal.Text.Replace(",", ""), out int qtyreq); if (qtycnv == false || qtyreq < 1) { FCOMMON.Util.MsgE("수량(실 구매)을 입력하세요."); tbQtyReal.Focus(); return false; } } if (advInput == true) { if (tbOrderNo.Text.isEmpty() == false && tbProjectIndex.Text != "-1") { FCOMMON.Util.MsgI("구매경고\n" + "프로젝트가 할당 되어있으며 CR/CF값이 입력되어있습니다.\n" + "CR/CF 구매의 경우 프로젝트 파트리스트를 통해서 구매 신청 하세요\n" + "이 화면은 NR구매요청 입니다"); } if (tbProject.Text == "") { //프로젝트명에 입력이 안되있다 if (tbProjectIndex.Text != "-1") this.tbProjectIndex.Text = "-1"; } else { //프로젝트에 뭔가를 입력했다 if (tbProjectIndex.Text == "-1") { FCOMMON.Util.MsgE("프로젝트가 선택되지 않았습니다. 직접입력은 허용되지 않습니다.\n" + "프로젝트 명을 입력하고 Enter 키를 눌러서 관련 프로젝트를 선택하세요\n" + "프로젝트가 없는 경우에는 비고란에 해당 내용을 기입하세요"); tbProject.Focus(); tbProject.SelectAll(); return false; } } } if (tbStorage.Text.Equals("SPR")) { if (FCOMMON.Util.MsgQ("SPR 항목입니다. 저장할까요?") != DialogResult.Yes) return false; } if (chkInDate.Checked) { if (int.TryParse(tbInQty.Text.Replace(",", ""), out int qty) == false) { if (FCOMMON.Util.MsgQ("입고 정보가 설정되어 있지만 입고 수량값이 없습니다") != DialogResult.Yes) { tbInQty.Focus(); tbInQty.SelectAll(); return false; } } } var overtime = DateTime.Now - DateTime.Parse("2019-01-09 00:00:00"); if (overtime.TotalSeconds > 0 && FCOMMON.info.Login.gcode != "K4PM") { if (advInput == true && this.btProcess.Text.Trim() == "") { if (FCOMMON.info.Login.level >= 5) { var dlg = FCOMMON.Util.MsgQ("[공정]을 입력하지 않고 진행 하시겠습니까?\n\n" + "선택 대상이 없는 경우 문의 바랍니다.\n\n"); if (dlg != System.Windows.Forms.DialogResult.Yes) { btProcess.Focus(); return false; } } else { FCOMMON.Util.MsgE("[공정]을 선택하세요\n\n" + "선택 대상이 없는 경우 문의 바랍니다.\n\n"); btProcess.Focus(); return false; } } if (advInput == true && btManuProc.Text.Trim() == "") { if (FCOMMON.info.Login.level >= 5) { var dlg = FCOMMON.Util.MsgQ("[제조공정]을 입력하지 않고 진행 하시겠습니까?\n\n" + "선택 대상이 없는 경우 문의 바랍니다.\n\n"); if (dlg != System.Windows.Forms.DialogResult.Yes) { btManuProc.Focus(); return false; } } else { FCOMMON.Util.MsgE("[제조공정]을 선택하세요\n\n" + "선택 대상이 없는 경우 문의 바랍니다.\n\n"); btManuProc.Focus(); return false; } } if (advInput == true && this.btEQManu.Text.Trim() == "") { if (FCOMMON.info.Login.level >= 5) { var dlg = FCOMMON.Util.MsgQ("[장비제조사]를 입력하지 않고 진행 하시겠습니까?\n\n" + "선택 대상이 없는 경우 문의 바랍니다.\n\n"); if (dlg != System.Windows.Forms.DialogResult.Yes) { btEQManu.Focus(); return false; } } else { FCOMMON.Util.MsgE("[장비제조사]를 선택하세요.\n\n" + "선택 대상이 없는 경우 문의 바랍니다.\n\n"); btEQManu.Focus(); return false; } } } //프로젝트명이 업다면 사유가 반드시 입력되어ㅑㅇ 하낟. if (tbProject.Text.isEmpty() && tbBigo.Text.isEmpty()) { Util.MsgE("구매자 비고(=구매사유)를 입력하세요\n프로젝트가 없다면 사유가 입력되어야 합니다"); tbBigo.Focus(); return false; } //if (dr.RowState != DataRowState.Detached && dr.RowState != DataRowState.Added) //{ // if (dr.sc != tbSC.Text.Trim() && tbSC.Text != "") // { // //dtPdate.Value = DateTime.Now; // this.cmbState.SelectedValue = "Approving"; // //if (dr.state == "00") dr.state = "01"; //approv 변경 // } //} //품목정보에 없는 데이터이므로 자료를 추가한다. if (tbPumIDX.Text == "-1") { var newidx = FCOMMON.DBM.addItem(tbPumName.Text, tbSID.Text, tbPumModel.Text.Trim(), decimal.Parse(tbPumPrice.Text.Replace(",","")), tbSupply.Text.Trim(), int.Parse(tbSupplyIndex.Text), null); if (newidx > 0) tbPumIDX.Text = newidx.ToString(); } else if (tbSID.Text != "" && tbSID.Text != tbSID.Tag.ToString()) { //SID가 변경되었으므로 업데이트 해주낟. FCOMMON.DBM.UpdateItemSID(int.Parse(tbPumIDX.Text), tbSID.Text); } //수령을 했는데. 현재 상태가 04 미만이면 04(수령)으로 변경 한다. if (chkInDate.Checked) { var curState = this.cmbState.Text.Trim(); if (curState.ToLower() == "po" || curState.ToLower() == "pr" || curState.ToLower() == "approving") { this.cmbState.SelectedValue = "Received"; } } //단가가없는경우 생성한다. if (decimal.TryParse(tbPumPrice.Text.Replace(",",""), out decimal vprice) == false) { if (decimal.TryParse(tbPumPriceD.Text.Replace(",", ""), out decimal vpriced) == true) { applyDollerToWon(); } } if (int.TryParse(tbQtyReq.Text.Replace(",", ""), out int vqtyreq) == false) tbQtyReq.Text = "0"; if (int.TryParse(tbQtyReal.Text.Replace(",", ""), out int vqtyreal) == false) tbQtyReal.Text = "0"; if (decimal.TryParse(tbPumPrice.Text.Replace(",", ""), out decimal vpumprice) == false) tbPumPrice.Text = "0"; //요청 구매 수량이 다를경우 비고 입력이 필요함 if (vqtyreal > 0 && vqtyreq > 0 && vqtyreq != vqtyreal) { if (tbBigoChk.Text.isEmpty()) { Util.MsgE("구매 요청/실 수량이 서로 다릅니다\n구매자 비고에 해당 사유를 입력하세요"); tbBigoChk.Focus(); return false; } } dr.pumqty = vqtyreal;// int.Parse(tbPumQty.Text); dr.pumqtyReq = vqtyreq;// int.Parse(tbpumqtyReq.Text); dr.pumprice = vpumprice;// decimal.Parse(tbPumPrice.Text); dr.currency = cmbCurrency.Text.Trim(); if (decimal.TryParse(tbPumPriceD.Text.Replace(",", ""), out decimal priced)) { dr.pumpriceD = priced; } else dr.SetpumpriceDNull(); if (vqtyreal > 0) dr.pumamt = dr.pumqty * dr.pumprice; else dr.pumamt = dr.pumqtyReq * dr.pumprice; if (tbPumIDX.Text == "" || tbPumIDX.Text == "-1") dr.SetpumidxNull(); else dr.pumidx = int.Parse(tbPumIDX.Text); dr.sid = tbSID.Text.Trim(); if (chkExp.Checked) dr.edate = this.dtExpDate.Value.ToShortDateString(); else dr.SetedateNull(); if (chkInDate.Checked) dr.indate = this.dtInDate.Value.ToShortDateString(); else dr.SetindateNull(); dr.pdate = this.dtPdate.Value.ToShortDateString(); dr.gcode = FCOMMON.info.Login.gcode; if (cmbRequest.Text.IndexOf("]") != -1) dr.request = cmbRequest.Text.Substring(1, cmbRequest.Text.IndexOf("]") - 1); else dr.request = cmbRequest.Text.Trim(); dr.sid = tbSID.Text; dr.asset = btEQModel.Text; dr.dept = btEQManu.Text; dr.manuproc = btManuProc.Text; dr.pumname = tbPumName.Text; dr.pumname = dr.pumname.Replace("*", "x"); //181031 dr.pumscale = tbPumModel.Text; dr.pumscale = dr.pumscale.Replace("*", "x"); //181031 dr.pumunit = tbPumUnit.Text; dr.supply = tbSupply.Text; dr.place = tbStorage.Text; dr.costcenter = tbCostCenter.Text; dr.linecode = tbLineCode.Text; dr.purchase_manager = tbManager.Text; // dr.purchase_admin = tbAdmin.Text; if (tbSupplyIndex.Text == "") dr.SetsupplyidxNull(); else dr.supplyidx = int.Parse(tbSupplyIndex.Text); dr.project = tbProject.Text; if (tbProjectIndex.Text == "") dr.SetprojectidxNull(); else dr.projectidx = int.Parse(tbProjectIndex.Text); dr.state = cmbState.Text.Trim(); if (cmbReceive.Text.IndexOf("]") != -1) dr.receive = cmbReceive.Text.Substring(1, cmbReceive.Text.IndexOf("]") - 1); else dr.receive = cmbReceive.Text.Trim(); dr.process = btProcess.Text; dr.sc = tbSC.Text; dr.po = tbPO.Text; dr.orderno = tbOrderNo.Text; dr.bigo = tbBigo.Text; dr.chkremark = tbBigoChk.Text; if (chkInDate.Checked) dr.inqty = int.Parse(tbInQty.Text.Replace(",", "")); else dr.SetinqtyNull(); //품정보가 업데이트 되어있으면 해당 데이터의 이미지를 업데이트 한다.(크기비교) //품정보가 없다면 그대로 생성을 해준다. if (tbPumIDX.Text == "" || tbPumIDX.Text == "-1") { //아이템을 추가해야하낟. byte[] pic = null; if (this.pictureBox1.Image != null && this.pictureBox1.Tag.ToString() == "U") { //이미지를 변경해줘야 한다. pic = FCOMMON.DBM.getImagByteArray(this.pictureBox1.Image); } var newidx = FCOMMON.DBM.addItem(dr.pumname, dr.sid, dr.pumscale, dr.pumprice, dr.supply, dr.supplyidx, pic); if (newidx != -1) { dr.pumidx = newidx; Console.WriteLine("new pumidx set = " + dr.pumidx.ToString()); } } else { //아이템을 추가해야한다(변경된 이름은 if (this.pictureBox1.Image != null && this.pictureBox1.Tag.ToString() == "U") { //이미지를 변경해줘야 한다. FCOMMON.DBM.setImageData(this.pictureBox1.Image, "Items", "image", dr.pumidx); } } dr.EndEdit(); return true; } private void button1_Click(object sender, EventArgs e) { if (!saveData()) return; DialogResult = System.Windows.Forms.DialogResult.OK; } private void chkInDate_CheckedChanged(object sender, EventArgs e) { this.dtInDate.Enabled = chkInDate.Checked; } private void chkExp_CheckedChanged(object sender, EventArgs e) { this.dtExpDate.Enabled = chkExp.Checked; } private void comboBox1_SelectedIndexChanged(object sender, EventArgs e) { //string code = ""; //if (cmbState.SelectedIndex < 0) label3.Text = "--"; //else //{ // //var value = cmbState.DataSource as BindingSource; // //var list = value.DataSource as Dictionary; // //var item = list.Values // if (cmbState.Text.StartsWith("[") == false) return; // code = cmbState.Text.ToString().Substring(1, 2); // var desc = FCOMMON.DBM.getCodeSavlue("04", code); // label3.Text = desc; //} //switch (code) //{ // case "01": // label3.BackColor = Color.LightBlue; // break; // case "02": // label3.BackColor = Color.SkyBlue; // break; // case "03": // label3.BackColor = Color.Yellow; // break; // case "04": // label3.BackColor = Color.Green; // break; // case "06": // case "05": // label3.BackColor = Color.Red; // break; // case "07": // label3.BackColor = Color.Magenta; // break; // default: // label3.BackColor = Color.LightGray; // break; //} } private void button2_Click(object sender, EventArgs e) { if (!saveData()) return; this.repeatAdd = true; DialogResult = System.Windows.Forms.DialogResult.OK; } private void tbPumQty_TextChanged(object sender, EventArgs e) { var b1 = int.TryParse(tbQtyReal.Text.Replace(",", ""), out int qtyreal); var b2 = int.TryParse(tbQtyReq.Text.Replace(",", ""), out int qtyreq); var amtstr = tbPumPrice.Text.Replace("\\", "").Replace(",", "").Replace("₩",""); var b3 = double.TryParse(amtstr, out double price); double amt = 0; //실구매수량이 잇으면 그걸로한다 if (qtyreal > 0) amt = qtyreal * price; else amt = qtyreq * price; tbPumAmt.Text = amt.ToString("N0"); //label18.Text = Util.Number2Hangle((long)price) + "원"; } private void linkLabel1_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e) { } private void linkLabel2_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e) { } private void linkLabel6_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e) { } private void linkLabel7_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e) { } void tbProject_Leave(object sender, EventArgs e) { //커서를 빠져나갈떄 사용자가 이름만 변경했다면 선택 idx를 제거해준다. var tb = sender as TextBox; if (tb.Text == "") tbProjectIndex.Text = "-1"; else if (tb.Text != tb.Tag.ToString()) tbProjectIndex.Text = "-1"; } void tbSupply_Leave(object sender, EventArgs e) { //커서를 빠져나갈떄 사용자가 이름만 변경했다면 선택 idx를 제거해준다.\ var tb = sender as TextBox; if (tb.Text == "") tbSupplyIndex.Text = "-1"; else if (tb.Text != tb.Tag.ToString()) tbSupplyIndex.Text = "-1"; } void tbPumName_Leave(object sender, EventArgs e) { //커서를 빠져나갈떄 사용자가 이름만 변경했다면 선택 idx를 제거해준다. var tb = sender as TextBox; if (tb.Text == "") tbPumIDX.Text = "-1"; else if (tb.Text != tb.Tag.ToString()) tbPumIDX.Text = "-1"; if (tbPumIDX.Text == "-1") { tbPumModel.Enabled = true; tbPumUnit.Enabled = true; } } private void tbPumName_Click(object sender, EventArgs e) { //Lov_Item("", true); } private void tbPumName_TextChanged(object sender, EventArgs e) { } private void button1_Click_1(object sender, EventArgs e) { Lov_Item(tbPumName.Text, true); } private void button2_Click_1(object sender, EventArgs e) { //lov 공급처 Lov_Supply("", true); } private void button3_Click(object sender, EventArgs e) { //lov 프로젝트 Lov_Project("", true); } private void button4_Click(object sender, EventArgs e) { if (!Clipboard.ContainsImage()) { FCOMMON.Util.MsgE("이미지를 먼저 클립보드에 복사 하세요."); return; } var image = Clipboard.GetImage(); var oimage = this.pictureBox1.Image; this.pictureBox1.Image = image; this.pictureBox1.Tag = "U"; if (oimage != null) oimage.Dispose(); } private void button5_Click(object sender, EventArgs e) { //FCOMMON.fWebCamera f = new FCOMMON.fWebCamera(FCOMMON.info.camIndex); //if (f.ShowDialog() == System.Windows.Forms.DialogResult.OK) //{ // var bmp = f.bmp.Clone(); // Application.DoEvents(); // var oimag = this.pictureBox1.Image; // this.pictureBox1.Image = (Image)bmp; // if (oimag != null) oimag.Dispose(); //} } private void button6_Click(object sender, EventArgs e) { OpenFileDialog od = new OpenFileDialog(); if (od.ShowDialog() != System.Windows.Forms.DialogResult.OK) return; var image = Image.FromFile(od.FileName); var oimage = this.pictureBox1.Image; this.pictureBox1.Image = image; this.pictureBox1.SizeMode = PictureBoxSizeMode.Zoom; this.pictureBox1.Tag = "U"; if (oimage != null) oimage.Dispose(); } private void button7_Click(object sender, EventArgs e) { var datapath = FCOMMON.DBM.getCodeSvalue("55", "02"); if (datapath.isEmpty()) { FCOMMON.Util.MsgE("견적서 기본폴더 공용코드 55-02 값을 입력하세요"); return; } string path = System.IO.Path.Combine(datapath, DateTime.Now.Year.ToString("0000") + "년");// "\\\\k4fs3201n\\ee1t$\\1. 장비기술1파트\\24_Project & Overhaul 예산 사용 실적\\구매 견적서\\" + DateTime.Now.Year.ToString("0000") + "년"; if (System.IO.Directory.Exists(path) == false) FCOMMON.Util.RunExplorer(datapath); else FCOMMON.Util.RunExplorer(path); } private void tbDolloerPrice_TextChanged(object sender, EventArgs e) { //단가에 금액이 없는경우에는 환율을 곱해준다. //if ( decimal.TryParse(tbPumPrice.Text, out decimal result) == false || result == 0) if (binit) { if (decimal.TryParse(tbPumPriceD.Text.Replace(",", ""), out decimal priced) == true) { applyDollerToWon(); } else { //달러입력값도 이상하니 처리 못함 tbPumPrice.Text = "0"; } } } void applyDollerToWon() { if (decimal.TryParse(tbPumPriceD.Text.Replace(",", ""), out decimal priced)) { var price = FCOMMON.info.dollertowon * (double)priced; tbPumPrice.Text = (Math.Ceiling(price)).ToString(); } else tbPumPrice.Text = "0"; } private void btSIDChk_Click(object sender, EventArgs e) { var sid = tbSID.Text.Trim(); if (sid.Equals("신규") || sid.isEmpty()) { Util.MsgI($"신규SID는 검사를 진행하지 않습니다"); return; } if (sid.Length != 9) { FCOMMON.Util.MsgE("검색 할 SID를 입력하세요"); tbSID.Focus(); tbSID.SelectAll(); return; } var dt = Amkor.RestfulService.SPMSIDSearch(sid); if (dt.Complete) { var f = new fSIDListSelect(sid, dt.Result); if (f.ShowDialog() == DialogResult.OK) { dr.chk1 = true; this.sidchk1 = sid; } else { Util.MsgE("목록표시 창에서 '확인' 버튼을 눌러야 SID검색이 완료됩니다."); } } else { Util.MsgI("SPM/NR 에서 검색된 정보가 없습니다\n저장이 가능 합니다"); this.sidchk1 = sid; } } private void timer1_Tick(object sender, EventArgs e) { if (tbSID.TextLength != 9) { if (tbSID.Text.Equals("신규") || tbSID.Text.isEmpty()) { btSIDChk.BackColor = Color.Gray; } else { if (btSIDChk.BackColor == Color.Gray) btSIDChk.BackColor = Color.Tomato; else btSIDChk.BackColor = Color.Gray; } } else { if (string.IsNullOrWhiteSpace(sidchk1)) { if (btSIDChk.BackColor == Color.Lime) btSIDChk.BackColor = Color.White; else btSIDChk.BackColor = Color.Lime; } else btSIDChk.BackColor = SystemColors.Control; } } private void processLabel_Click(object sender, EventArgs e) { //var f = new FCM0000.fCode("09"); //var dlg = f.ShowDialog(); //if (dlg == DialogResult.OK) //{ // //장비기술공정 // var dt = FCOMMON.DBM.getCodeTable("09"); // this.cbProcess.DataSource = dt; // cbProcess.Text = f.SelectedTitle;// cbProcess.SelectedIndex = -1; //} } private void groupBox1_Enter(object sender, EventArgs e) { } private void btProcess_Click(object sender, EventArgs e) { var bt = sender as Button; var guun = bt.Tag.ToString(); var f = new FCM0000.fCode(guun); var dlg = f.ShowDialog(); if (dlg == DialogResult.OK) { //장비기술공정; bt.Text = f.SelectedTitle;// cbProcess.SelectedIndex = -1; } } private void tbSC_TextChanged(object sender, EventArgs e) { } private void cbEQModel_SelectedIndexChanged(object sender, EventArgs e) { } private void cbEQManu_SelectedIndexChanged(object sender, EventArgs e) { } private void button8_Click_1(object sender, EventArgs e) { if (btEQManu.Text.isEmpty()) { Util.MsgE("장비 제조사가 선택되지 않았습니다"); btEQManu.Focus(); return; } string filter = "svalue='" + btEQManu.Text.Replace("'", "''") + "'"; var bt = sender as Button; var guun = bt.Tag.ToString(); var f = new FCM0000.fCode(guun, filter); var dlg = f.ShowDialog(); if (dlg == DialogResult.OK) { //장비기술공정; bt.Text = f.SelectedTitle;// cbProcess.SelectedIndex = -1; } } private void tbCostCenter_SelectedIndexChanged(object sender, EventArgs e) { if (tbCostCenter.SelectedIndex < 0) return; //선택된 개체의 Svalue 값이 있따면 그것을 라인코드에 넣는다. var selvalue = tbCostCenter.SelectedItem as DataRowView; var svalue = selvalue["SValue"]; if(svalue != null) { if(tbLineCode.Text.isEmpty()) tbLineCode.Text = svalue.ToString(); } } } }