348 lines
		
	
	
		
			13 KiB
		
	
	
	
		
			C#
		
	
	
	
	
	
			
		
		
	
	
			348 lines
		
	
	
		
			13 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 FCM0000
 | |
| {
 | |
|     public partial class finventoryAdd : Form
 | |
|     {
 | |
|         BindingSource bsManu;
 | |
|         BindingSource bsModel;
 | |
|         DSInventory.vInventoryRow dr;
 | |
|         public Boolean repeatAdd = false;
 | |
| 
 | |
|         public finventoryAdd(DSInventory.vInventoryRow dr_)
 | |
|         {
 | |
|             InitializeComponent();
 | |
|             Properties.Settings.Default["gwcs"] = FCOMMON.info.CS;
 | |
|             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.tbProject.Leave += tbProject_Leave;
 | |
|             foreach (Control ctl in groupBox1.Controls)
 | |
|             {
 | |
|                 if (ctl.GetType() == typeof(TextBox) || ctl.GetType() == typeof(ComboBox))
 | |
|                 {
 | |
|                     ctl.KeyDown += ctl_KeyDown;
 | |
|                 }
 | |
|             }
 | |
|         }
 | |
| 
 | |
|         private void __Load(object sender, EventArgs e)
 | |
|         {
 | |
|             //담당자목록
 | |
|             var userList = FCOMMON.DBM.getUserList();//.getGroupList("name", "Users", "[level] > 0 and [level] < 10");
 | |
|             foreach (var user in userList)
 | |
|             {
 | |
|                 this.cmbRequest.Items.Add(string.Format("[{0}] {1}",user.Key,user.Value));
 | |
|             }
 | |
| 
 | |
|             //보관소 목록업데이트
 | |
|             var ListStorage = FCOMMON.DBM.getCodeList("60");
 | |
|             cmbStorage.Items.Clear();
 | |
|             foreach (var item in ListStorage)
 | |
|                 cmbStorage.Items.Add(item.Value);
 | |
| 
 | |
|             //박스 목록업데이트
 | |
|             var ListBox = FCOMMON.DBM.getCodeList("61");
 | |
|             cmbBox.Items.Clear();
 | |
|             foreach (var item in ListBox)
 | |
|                 cmbBox.Items.Add(item.Value);
 | |
| 
 | |
|             //사현재사용자의 데이터를 찾는다.
 | |
|             if (cmbRequest.Items.Count > 0)
 | |
|             {
 | |
|                 for (int i = 0; i < cmbRequest.Items.Count; i++)
 | |
|                 {
 | |
|                     if (cmbRequest.Items[i].ToString().StartsWith("[" + dr.uid + "]"))
 | |
|                     {
 | |
|                         cmbRequest.SelectedIndex = i;
 | |
|                         break;
 | |
|                     }
 | |
|                 }
 | |
|             }
 | |
|             else cmbRequest.Text = dr.uid;
 | |
| 
 | |
| 
 | |
|             ///입력된 데이터를 적용한다.
 | |
|             if (dr.pdate == "") dr.pdate = DateTime.Now.ToShortDateString();
 | |
|             dtPdate.Value = DateTime.Parse(dr.pdate);            
 | |
|             dtPdate.Value = DateTime.Parse(dr.pdate);
 | |
|             // cmbRequest.Text = dr.userName;
 | |
|             tbPumIDX.Text = dr.item.ToString();
 | |
|             tbSID.Text = dr.sid;
 | |
|             tbSID.Tag = tbSID.Text;
 | |
|             tbPumIDX.Text = dr.item.ToString();
 | |
|             tbPumName.Text = dr.itemName;
 | |
|             tbPumName.Tag = tbPumName.Text;
 | |
|             tbPumModel.Text = dr.itemModel;
 | |
|             tbPumQty.Text = dr.dr_qty.ToString("N0");
 | |
|             if (dr.dr_qty == 0 || dr.dr_amt == 0) tbPumPrice.Text = "0";
 | |
|             else tbPumPrice.Text = string.Format("{0}",dr.dr_amt / dr.dr_qty);
 | |
|             tbPumAmt.Text = dr.dr_amt.ToString("N0");
 | |
| 
 | |
|             tbSN.Text = dr.serial;
 | |
|             cmbStorage.Text = dr.place;
 | |
|             cmbBox.Text = dr.box;
 | |
|             tbProject.Text = dr.projectName;
 | |
|             tbProject.Tag = tbProject.Text;
 | |
|             tbProjectIndex.Text = dr.project.ToString();
 | |
| 
 | |
|             cmbState.Text = dr.invtype; //입고/출고/정정
 | |
|             tbBigo.Text = dr.memo;
 | |
| 
 | |
|             //프로젝트 비활성화
 | |
|             if(FCOMMON.info.Login.gcode == "ENV")
 | |
|             {
 | |
|                 tbProject.Enabled = false;
 | |
|                 tbProjectIndex.Enabled = false;
 | |
|                 linkLabel7.Enabled = false;
 | |
|             }
 | |
| 
 | |
|             this.Show();
 | |
|             Application.DoEvents();
 | |
|             tbPumName.Focus();
 | |
|         }
 | |
| 
 | |
|         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":
 | |
|                         tbSID.Focus();
 | |
|                         break;
 | |
|                     case "tbpumname":
 | |
|                         Lov_Item(search, false);
 | |
|                         break;
 | |
|                     case "tbproject":
 | |
|                         Lov_Project(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)
 | |
|             {
 | |
|                 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)
 | |
|                 {
 | |
|                     //인덱스값이 다르면 모델 및 가격을 업데이트 한다.
 | |
|                     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();
 | |
|                     this.tbSID.Text = f.SID;
 | |
|                     this.tbSID.Tag = f.SID;
 | |
|                     this.tbPumModel.Enabled = false;
 | |
|                     if (tbSID.Text != "") tbSID.Enabled = false;
 | |
|                     else tbSID.Enabled = true;
 | |
|                 }
 | |
|             }
 | |
|             this.tbPumQty.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();
 | |
|         }
 | |
|    
 | |
|         private Boolean saveData()
 | |
|         {
 | |
|             this.Validate();
 | |
| 
 | |
|             tbSID.Text = sidTrim(tbSID.Text);
 | |
| 
 | |
|             if (tbPumName.Text.isEmpty())
 | |
|             {
 | |
|                 FCOMMON.Util.MsgE("품명이 없습니다.");
 | |
|                 tbPumName.Focus();
 | |
|                 return false;
 | |
|             }
 | |
| 
 | |
|             //비활성화된 상태에서는 입력하지 않아도 동작하게 함
 | |
|             if ( tbPumModel.Enabled=true && tbPumModel.Text == "")
 | |
|             {
 | |
|                 FCOMMON.Util.MsgE("제품 규격을 입력하세요.");
 | |
|                 tbPumModel.Focus();
 | |
|                 return false;
 | |
|             }
 | |
|             if (tbPumQty.Text == "")
 | |
|             {
 | |
|                 FCOMMON.Util.MsgE("수량을 입력하세요.");
 | |
|                 tbPumQty.Focus();
 | |
|                 return false;
 | |
|             }
 | |
|            
 | |
|             //품목정보에 없는 데이터이므로 자료를 추가한다.
 | |
|             if(tbPumIDX.Text == "-1")
 | |
|             {
 | |
|                 var newidx = FCOMMON.DBM.addItem(tbPumName.Text, tbSID.Text, tbPumModel.Text.Trim(), decimal.Parse(tbPumPrice.Text), "", -1, 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);
 | |
|             }
 | |
| 
 | |
|             if(cmbStorage.Text.Trim() == "")
 | |
|             {
 | |
|                 FCOMMON.Util.MsgE("보관소를 입력하세요");
 | |
|                 cmbStorage.Focus();
 | |
|                 return false;
 | |
|             }
 | |
| 
 | |
|             dr.itemName = tbPumName.Text;
 | |
|             dr.itemModel = tbPumModel.Text;
 | |
|             dr.item = int.Parse( tbPumIDX.Text   );
 | |
|             dr.place = cmbStorage.Text;
 | |
|             dr.box = cmbBox.Text;
 | |
|             dr.serial = tbSN.Text;
 | |
|             if (tbPumQty.Text.isEmpty()) tbPumQty.Text = "0";
 | |
|             if (tbPumPrice.Text.isEmpty()) tbPumPrice.Text = "0";
 | |
|             dr.dr_qty = int.Parse(tbPumQty.Text);
 | |
|             dr.dr_amt = dr.dr_qty * int.Parse(tbPumPrice.Text);
 | |
|             if (tbPumIDX.Text == "" || tbPumIDX.Text == "-1") dr.SetitemNull();
 | |
|             else dr.item = int.Parse(tbPumIDX.Text);
 | |
|             dr.sid = tbSID.Text.Trim(); 
 | |
|             dr.pdate = this.dtPdate.Value.ToShortDateString();
 | |
|             dr.gcode = FCOMMON.info.Login.gcode;
 | |
|             if (cmbRequest.Text.IndexOf("]") != -1)
 | |
|             {
 | |
|                 dr.uid = cmbRequest.Text.Substring(1, cmbRequest.Text.IndexOf("]") - 1);
 | |
|                 dr.userName = cmbRequest.Text.Substring(cmbRequest.Text.IndexOf("]") + 2);
 | |
|             }   
 | |
|             else
 | |
|             {
 | |
|                 dr.uid = cmbRequest.Text;
 | |
|                 dr.userName = string.Empty;
 | |
|             }
 | |
|             dr.sid = tbSID.Text;
 | |
|             dr.projectName = tbProject.Text;
 | |
|             if (tbProjectIndex.Text == "") dr.SetprojectNull();
 | |
|             else dr.project = int.Parse(tbProjectIndex.Text);
 | |
|             dr.invtype = cmbState.Text.Trim();
 | |
|             dr.memo = tbBigo.Text.Trim();
 | |
|             if(cmbState.Text == "입고")
 | |
|             {
 | |
|                 if (dr.dr_qty < 0) dr.dr_qty *= -1;
 | |
|                 if (dr.dr_amt < 0) dr.dr_amt *= -1;
 | |
|             } else  if(cmbState.Text =="출고")
 | |
|             {
 | |
|                 if (dr.dr_qty > 0) dr.dr_qty *= -1;
 | |
|                 if (dr.dr_amt > 0) dr.dr_amt *= -1;
 | |
|             }
 | |
|             dr.EndEdit();
 | |
|             return true;
 | |
|         }
 | |
| 
 | |
|         private void button1_Click(object sender, EventArgs e)
 | |
|         {
 | |
|             if (!saveData()) return;
 | |
|             DialogResult = System.Windows.Forms.DialogResult.OK;
 | |
|         }
 | |
| 
 | |
|         private void comboBox1_SelectedIndexChanged(object sender, EventArgs e)
 | |
|         {
 | |
|         }
 | |
| 
 | |
|         private void tbPumQty_TextChanged(object sender, EventArgs e)
 | |
|         {
 | |
|             var strQty = this.tbPumQty.Text;
 | |
|             var strPrice = this.tbPumPrice.Text;
 | |
| 
 | |
|             int qty = 0;
 | |
|             double price = 0;
 | |
|             if (strQty.IsNumeric()) qty = int.Parse(strQty);
 | |
|             if (strPrice.IsNumeric()) price = double.Parse(strPrice);
 | |
|             double amt = price * qty;
 | |
|             tbPumAmt.Text = amt.ToString("N0");
 | |
|         }
 | |
| 
 | |
| 
 | |
|         private void linkLabel7_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e)
 | |
|         {
 | |
|             //lov 프로젝트
 | |
|             Lov_Project("", true);
 | |
|         }
 | |
| 
 | |
|         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 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;
 | |
|             }
 | |
|         }
 | |
|     }
 | |
| }
 | 
