pmp 재고 조회 기능 추가
This commit is contained in:
@@ -32,8 +32,8 @@ namespace FPJ0000
|
||||
InitializeComponent();
|
||||
fn_fpcolsize = util.MakeFilePath(util.CurrentPath, "formSetting", "fp_" + this.Name + ".ini");
|
||||
this.ProjectIndex = idx_;
|
||||
this.FormClosed += fPartList_FormClosed;
|
||||
this.KeyPreview = true;
|
||||
this.FormClosed += fPartList_FormClosed;
|
||||
this.KeyDown += fPartList_KeyDown;
|
||||
this.dsPRJ.ProjectsPart.TableNewRow += ProjectsPart_TableNewRow;
|
||||
}
|
||||
@@ -48,10 +48,16 @@ namespace FPJ0000
|
||||
void fPartList_KeyDown(object sender, KeyEventArgs e)
|
||||
{
|
||||
if (e.KeyCode == Keys.Escape) this.Close();
|
||||
else if (e.KeyCode == Keys.F5) searchpmp();
|
||||
}
|
||||
|
||||
void fPartList_FormClosed(object sender, FormClosedEventArgs e)
|
||||
{
|
||||
this.FormClosed -= fPartList_FormClosed;
|
||||
this.KeyDown -= fPartList_KeyDown;
|
||||
this.dsPRJ.ProjectsPart.TableNewRow -= ProjectsPart_TableNewRow;
|
||||
|
||||
|
||||
//정렬방식 저장값 저장하기
|
||||
var SetFile = util.CurrentPath + "FormSetting.xml";
|
||||
arUtil.XMLHelper xml = new arUtil.XMLHelper(SetFile);
|
||||
@@ -341,7 +347,12 @@ namespace FPJ0000
|
||||
|
||||
private void toolStripButton4_Click(object sender, EventArgs e)
|
||||
{
|
||||
|
||||
var chg = this.dsPRJ.ProjectsPart.GetChanges();
|
||||
if (chg != null)
|
||||
{
|
||||
FCOMMON.Util.MsgE("변경된 자료가 있습니다. \n 해당 자료를 먼저 저장하세요");
|
||||
return;
|
||||
}
|
||||
|
||||
var f = new fProjectPartToPurchase(ProjectIndex);
|
||||
f.ShowDialog();
|
||||
@@ -395,5 +406,140 @@ namespace FPJ0000
|
||||
{
|
||||
RefreshData();
|
||||
}
|
||||
|
||||
private void toolStripButton5_Click_1(object sender, EventArgs e)
|
||||
{
|
||||
var dlg = FCOMMON.Util.MsgQ("재고 확인을 실행하시겠습니까?\n재고 확인 완료 후에는 구매수량값이 업데이트 됩니다");
|
||||
if (dlg != DialogResult.Yes) return;
|
||||
|
||||
//pmp데이터에서 모두 업데이트 한다
|
||||
//컬럼명 qty, qty_pmp, qty_buy
|
||||
|
||||
List<DatabaseManager.sPMPdata> retval = new List<DatabaseManager.sPMPdata>();
|
||||
var cn = DatabaseManager.getCn();
|
||||
try
|
||||
{
|
||||
cn.Open();
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
util.MsgE("데이터베이스 연결 실패\n" + ex.Message);
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
System.Data.SqlClient.SqlDataReader rdr = null;
|
||||
System.Data.SqlClient.SqlCommand cmd = null;
|
||||
var basesql1 = "select isnull(SIDNo,'') ,isnull(PartName,'') ,isnull(PartNo,'') , isnull(CurrentQty,0) from SPMaster where SIDNo = '{0}' and Division like '장비기술%'";
|
||||
var basesql2 = "select isnull(SIDNo,'') ,isnull(PartName,'') ,isnull(PartNo,'') , isnull(CurrentQty,0) from SPMaster where PartNo = '{0}' and Division like '장비기술%'";
|
||||
cmd = new System.Data.SqlClient.SqlCommand("", cn);
|
||||
|
||||
var cnt_ok = 0;
|
||||
var cnt_no = 0;
|
||||
var cnt_ng = 0;
|
||||
var cnt_reduce = 0;
|
||||
foreach (dsPRJ.ProjectsPartRow dr in this.dsPRJ.ProjectsPart.Rows)
|
||||
{
|
||||
if (dr.RowState == DataRowState.Detached || dr.RowState == DataRowState.Deleted) continue;
|
||||
|
||||
var qty = dr.qty; //파트리스트수량
|
||||
var model = string.IsNullOrEmpty(dr.ItemModel) ? dr.ItemName : dr.ItemModel;
|
||||
|
||||
//검색 sql 생성
|
||||
string sql = "";
|
||||
if (string.IsNullOrEmpty(dr.ItemSid) == true) sql = string.Format(basesql2, model);
|
||||
else sql = string.Format(basesql1, dr.ItemSid);
|
||||
cmd.CommandText = sql;
|
||||
|
||||
rdr = cmd.ExecuteReader();
|
||||
List<DatabaseManager.sPMPdata> db = new List<DatabaseManager.sPMPdata>();
|
||||
while (rdr.Read())
|
||||
{
|
||||
//데이터를 가져온다
|
||||
var v_sidno = rdr[0];
|
||||
var v_name = rdr[1];
|
||||
var v_no = rdr[2];
|
||||
var v_qty = rdr[3];
|
||||
|
||||
var newdr = new DatabaseManager.sPMPdata();
|
||||
if (v_sidno != DBNull.Value) newdr.sid = v_sidno.ToString();
|
||||
if (v_name != DBNull.Value) newdr.partname = v_name.ToString();
|
||||
if (v_no != DBNull.Value) newdr.partno = v_no.ToString();
|
||||
if (v_qty != DBNull.Value) newdr.qty = int.Parse(v_qty.ToString());
|
||||
db.Add(newdr);
|
||||
}
|
||||
rdr.Close();
|
||||
|
||||
//데이터가 여러개있다면 해당 데이터를 표시한다
|
||||
if (db.Count > 1)
|
||||
{
|
||||
cnt_ng += 1;
|
||||
dr.qtyjago = "{" + db.Count.ToString() + "}";
|
||||
dr.qtybuy = qty;
|
||||
}
|
||||
else if (db.Count == 1)
|
||||
{
|
||||
cnt_ok += 1;
|
||||
dr.qtyjago = db[0].qty.ToString(); //재고수량
|
||||
dr.qtybuy = Math.Max(qty - db[0].qty, 0);
|
||||
cnt_reduce += (qty - dr.qtybuy);
|
||||
}
|
||||
else
|
||||
{
|
||||
//pmp에 자료 없다
|
||||
cnt_no += 1;
|
||||
dr.qtyjago = "--";
|
||||
dr.qtybuy = qty;
|
||||
}
|
||||
dr.EndEdit();
|
||||
}
|
||||
|
||||
|
||||
if (cmd != null) cmd.Dispose();
|
||||
if (rdr != null) rdr.Close();
|
||||
|
||||
cn.Close();
|
||||
cn.Dispose();
|
||||
|
||||
var msg = string.Format("PMP 검색결과 현황\n" +
|
||||
"검색완료 : {0}\n" +
|
||||
"복수확인 : {1}\n" +
|
||||
"확인불가 : {2}\n" +
|
||||
"신규 구매 감소 : {3}", cnt_ok, cnt_ng, cnt_no, cnt_reduce);
|
||||
FCOMMON.Util.MsgI(msg);
|
||||
}
|
||||
|
||||
void searchpmp()
|
||||
{
|
||||
//PMP조회
|
||||
var drv = this.bsPart.Current as DataRowView;
|
||||
if (drv == null) return;
|
||||
var dr = drv.Row as dsPRJ.ProjectsPartRow;
|
||||
|
||||
//검색어
|
||||
var title = string.IsNullOrEmpty(dr.ItemModel) ? dr.ItemName : dr.ItemModel;
|
||||
if (string.IsNullOrEmpty(dr.ItemSid) == false) title = dr.ItemSid;
|
||||
|
||||
var f = new fSPMaster(title);
|
||||
if (f.ShowDialog() == DialogResult.OK)
|
||||
{
|
||||
var pmp = f.qty; //pmp재고
|
||||
var req = f.qty;
|
||||
var buy = Math.Max(req - pmp, 0);
|
||||
dr.qtyjago = pmp.ToString();
|
||||
dr.qtybuy = buy;
|
||||
dr.EndEdit();
|
||||
}
|
||||
}
|
||||
private void pMP조회ToolStripMenuItem_Click(object sender, EventArgs e)
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
private void toolStripButton7_Click(object sender, EventArgs e)
|
||||
{
|
||||
searchpmp();
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user