465 lines
16 KiB
C#
465 lines
16 KiB
C#
using System;
|
|
|
|
using System.Collections.Generic;
|
|
using System.ComponentModel;
|
|
using System.Data;
|
|
using System.Drawing;
|
|
using System.Text;
|
|
using System.Windows.Forms;
|
|
using DeiNiu.Wms.CE.Util;
|
|
|
|
namespace DeiNiu.Wms.CE
|
|
{
|
|
public partial class StockIn : basicForm
|
|
{
|
|
// WmsOutPickRequestClient client { get; set; }
|
|
|
|
string id = string.Empty;
|
|
int state = 1;
|
|
string location = string.Empty;
|
|
decimal count = 0m;
|
|
bool canUp;
|
|
string flowNo = string.Empty;
|
|
bool showFinished = true;
|
|
DataView dv1 =null;
|
|
string hint ="";
|
|
enumStockRecordType recType = enumStockRecordType.普通入库;
|
|
public StockIn()
|
|
{
|
|
InitializeComponent();
|
|
initialComBoxes();
|
|
setTitle();
|
|
focusOn(txtShelfId, hint);
|
|
|
|
// client = new WmsOutPickRequestClient(WcfHelp.getBasicBinding(), WcfHelp.getEndpoint("WmsOutPickRequestService"));
|
|
}
|
|
//先扫出库码,再扫货位
|
|
private void goodscode_txt_KeyUp(object sender, KeyEventArgs e)
|
|
{
|
|
if (e.KeyCode == Keys.Enter)
|
|
{
|
|
// if (state == 1) //已出库的自动清空数据,继续扫下一个出库码
|
|
//{
|
|
// clear();
|
|
// }
|
|
string barCode = barcode_txt.Text;
|
|
|
|
if (string.IsNullOrEmpty(barCode))
|
|
return;
|
|
|
|
//判断货位号是否不为空
|
|
if ((canUp) && !string.IsNullOrEmpty(locationid_lab.Text))
|
|
{
|
|
//扫描货位时,比较是否相同
|
|
if (location.ToUpper().Equals((barCode + "x").ToUpper()))
|
|
{
|
|
Cursor.Current = System.Windows.Forms.Cursors.WaitCursor;
|
|
enumRepResult result ;
|
|
try
|
|
{
|
|
|
|
result = (enumRepResult)client.finishUpShelfItem(flowNo, Convert.ToInt32(id), count,
|
|
barCode.ToUpper(), "", LoginInfo.UserId, LoginInfo.Token);
|
|
|
|
Cursor.Current = System.Windows.Forms.Cursors.Default;
|
|
|
|
if (result != enumRepResult.成功)
|
|
{
|
|
|
|
MessageBox.Show("入库失败:" + result);
|
|
barcode_txt.Text = "";
|
|
// return ;
|
|
}
|
|
getTasks(flowNo);
|
|
barcode_txt.Text = "";
|
|
//MessageBox.Show("!");
|
|
if (dv1!=null && dv1.Count == 1)
|
|
{
|
|
this.GetGoodsData(dg1[0, 8].ToString());
|
|
|
|
}else
|
|
clear();
|
|
|
|
}
|
|
catch(Exception er)
|
|
{
|
|
|
|
showErrorMsg(er, "上架失败!");
|
|
Cursor.Current = System.Windows.Forms.Cursors.Default;
|
|
}
|
|
|
|
|
|
|
|
}
|
|
else
|
|
{
|
|
barcode_txt.Text = "";
|
|
MessageBox.Show("货位不符合");
|
|
}
|
|
|
|
}
|
|
else//为空,说明是扫描的出库码
|
|
{
|
|
barcode_txt.Text = "";
|
|
//条件扫描的条码值 获取货位、商品信息
|
|
GetGoodsData(barCode);
|
|
}
|
|
|
|
focusOn(barcode_txt, hint);
|
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
|
|
private void GetGoodsData(string portId)
|
|
{
|
|
try
|
|
{
|
|
Convert.ToInt32(portId);
|
|
}
|
|
catch
|
|
{
|
|
MessageBox.Show("请先扫描输入上架流水号");
|
|
|
|
return;
|
|
}
|
|
try
|
|
{
|
|
Cursor.Current = System.Windows.Forms.Cursors.WaitCursor;
|
|
DataTable dt = client.getStockInPortDetail(Convert.ToInt32(portId));
|
|
Cursor.Current = System.Windows.Forms.Cursors.Default;
|
|
|
|
|
|
if (dt.Rows.Count > 0)
|
|
{
|
|
name_lab.Text = dt.Rows[0]["goodsName"].ToString();
|
|
spec_lab.Text = dt.Rows[0]["spec"].ToString();
|
|
unit_lab.Text = dt.Rows[0]["unit"].ToString();
|
|
PCompany_lab.Text = dt.Rows[0]["manufacturer"].ToString();
|
|
owner.Text = dt.Rows[0]["owner"].ToString();
|
|
Stocknum_lab.Text = ""+(Convert.ToInt32(dt.Rows[0]["count"].ToString()) - Convert.ToInt32(dt.Rows[0]["upCount"].ToString()));
|
|
count = Convert.ToDecimal(Stocknum_lab.Text);
|
|
locationid_lab.Text = dt.Rows[0]["locationId"].ToString();
|
|
location = locationid_lab.Text + "x";
|
|
batch_lab.Text = dt.Rows[0]["batch"].ToString();
|
|
product_date_lab.Text = dt.Rows[0]["productdate"].ToString();
|
|
save_date_lab.Text = dt.Rows[0]["validDate"].ToString();
|
|
order_id_lab.Text = dt.Rows[0]["orderNo"].ToString();
|
|
lbVender.Text = dt.Rows[0]["vender"].ToString();
|
|
id = dt.Rows[0]["id"].ToString();
|
|
state = Convert.ToInt16(dt.Rows[0]["state"].ToString());
|
|
enumInStockDetailStatus status = (enumInStockDetailStatus)state;
|
|
|
|
recType = (enumStockRecordType)Convert.ToInt16(dt.Rows[0]["recType"].ToString());
|
|
|
|
|
|
|
|
// label12.Text = state == 1 ? "待上架" : state == 5 ? "已上架" : state == 6 ? "部分上架" :"其它";
|
|
|
|
bigcount_lab.Text = dt.Rows[0]["bigcount"].ToString();
|
|
// double intnum = Convert.ToDouble(Convert.ToDouble(dt.Rows[0]["count"].ToString()) / Convert.ToDouble(dt.Rows[0]["bigcount"].ToString()));
|
|
// int_lab.Text = intnum.ToString();
|
|
int_lab.Text = dt.Rows[0]["box"].ToString();
|
|
canUp = status == enumInStockDetailStatus.部分上架 || status == enumInStockDetailStatus.已分配货位;
|
|
if (recType == enumStockRecordType.补零入库)
|
|
{
|
|
canUp = true;
|
|
status = enumInStockDetailStatus.已分配货位;
|
|
}
|
|
label12.Text = status + "";
|
|
barcode_txt.Enabled = canUp;
|
|
|
|
txt_loc.Text = "";
|
|
if (canUp)
|
|
{
|
|
tabControl1.SelectedIndex = 1;
|
|
}
|
|
|
|
lbRecommand.Text = locationid_lab.Text;
|
|
lbstatus.Text = label12.Text;
|
|
btnUp.Enabled = canUp;
|
|
txtCount.Text = count+"";
|
|
}
|
|
|
|
else
|
|
{
|
|
clear();
|
|
//code = "";
|
|
//row_lab.Text = "";
|
|
barcode_txt.Focus();
|
|
}
|
|
#if DEBUG
|
|
barcode_txt.Text = locationid_lab.Text;
|
|
#endif
|
|
|
|
}
|
|
|
|
catch (Exception er)
|
|
{
|
|
showErrorMsg(er, "获取数据失败!");
|
|
// MessageBox.Show("获取数据失败!" + er.Message);
|
|
}
|
|
}
|
|
/// <summary>
|
|
/// 清除界面数据
|
|
/// </summary>
|
|
private void clear()
|
|
{
|
|
name_lab.Text =
|
|
spec_lab.Text =
|
|
unit_lab.Text =
|
|
PCompany_lab.Text =
|
|
owner.Text =
|
|
Stocknum_lab.Text =
|
|
locationid_lab.Text =
|
|
batch_lab.Text =
|
|
product_date_lab.Text =
|
|
save_date_lab.Text =
|
|
int_lab.Text =
|
|
order_id_lab.Text =
|
|
bigcount_lab.Text =
|
|
id = "";
|
|
state = 1;
|
|
label12.Text = "";
|
|
location = "";
|
|
this.comboBox1.SelectedIndex = 0;
|
|
txt_loc.Text = "";
|
|
txtCount.Text = "";
|
|
lbVender.Text = "";
|
|
lbstatus.Text = "无";
|
|
lbRecommand.Text = "";
|
|
btnUp.Enabled = barcode_txt.Enabled = false;
|
|
chkNotfinished.Checked = showFinished;
|
|
}
|
|
|
|
private void initialComBoxes()
|
|
{
|
|
Utils.buildCombox(5003, this.comboBox1);
|
|
|
|
}
|
|
|
|
private void button1_Click(object sender, EventArgs e)
|
|
{
|
|
try
|
|
{
|
|
|
|
string locID = this.txt_loc.Text.ToString();
|
|
if (String.IsNullOrEmpty(locID))
|
|
{
|
|
MessageBox.Show("请输入货位!");
|
|
txt_loc.Focus();
|
|
return;
|
|
}
|
|
decimal count = 0m;
|
|
try
|
|
{
|
|
count = Convert.ToDecimal(txtCount.Text.ToString());
|
|
}
|
|
catch
|
|
{
|
|
MessageBox.Show("请输入数量!");
|
|
txtCount.Focus();
|
|
return;
|
|
}
|
|
|
|
|
|
if (this.comboBox1.SelectedIndex == 0)
|
|
{
|
|
MessageBox.Show("请选择原因!");
|
|
comboBox1.Focus();
|
|
return;
|
|
}
|
|
|
|
|
|
|
|
Cursor.Current = System.Windows.Forms.Cursors.WaitCursor;
|
|
enumRepResult result ;
|
|
try
|
|
{
|
|
|
|
result = (enumRepResult)client.finishUpShelfItem(flowNo, Convert.ToInt32(id), count, locID, this.comboBox1.Text, LoginInfo.UserId, LoginInfo.Token);
|
|
Cursor.Current = System.Windows.Forms.Cursors.Default;
|
|
|
|
if (result != enumRepResult.成功)
|
|
{
|
|
Cursor.Current = System.Windows.Forms.Cursors.Default;
|
|
|
|
MessageBox.Show( result.ToString());
|
|
Cursor.Current = System.Windows.Forms.Cursors.Default;
|
|
return ;
|
|
}else
|
|
{
|
|
getTasks(flowNo);
|
|
|
|
if (dv1 != null && dv1.Count == 1)
|
|
{
|
|
this.GetGoodsData(dg1[0, 8].ToString());
|
|
|
|
}
|
|
else
|
|
clear();
|
|
}
|
|
|
|
}
|
|
catch (Exception er)
|
|
{
|
|
showErrorMsg(er, "上架失败!");
|
|
//MessageBox.Show("上架失败!" + er.Message);
|
|
}
|
|
|
|
Cursor.Current = System.Windows.Forms.Cursors.Default;
|
|
}
|
|
catch (Exception er)
|
|
{
|
|
showErrorMsg(er, "出错了");
|
|
|
|
}
|
|
Cursor.Current = System.Windows.Forms.Cursors.Default;
|
|
}
|
|
|
|
private void dg1_DoubleClick(object sender, EventArgs e)
|
|
{
|
|
|
|
}
|
|
|
|
private void dg1_CurrentCellChanged(object sender, EventArgs e)
|
|
{
|
|
|
|
}
|
|
|
|
private void txtShelfId_KeyUp(object sender, KeyEventArgs e)
|
|
{
|
|
|
|
|
|
if (e.KeyCode == Keys.Enter)
|
|
{
|
|
|
|
string barCode = this.txtShelfId .Text;
|
|
|
|
if (string.IsNullOrEmpty(barCode))
|
|
{
|
|
// return;
|
|
}
|
|
try
|
|
{
|
|
flowNo = barCode ;
|
|
|
|
getTasks( flowNo);
|
|
}
|
|
catch (Exception er)
|
|
{
|
|
MessageBox.Show("请输入正确的上架流水号");
|
|
txtShelfId.SelectAll();
|
|
txtShelfId.Focus();
|
|
return;
|
|
|
|
}
|
|
}
|
|
}
|
|
|
|
void getTasks(string flowNo)
|
|
{
|
|
//判断货位号是否不为空
|
|
Cursor.Current = System.Windows.Forms.Cursors.WaitCursor;
|
|
|
|
try
|
|
{
|
|
|
|
DataTable dt;
|
|
bool canSeePartsTasks = WmsConstants.auths.Contains(WmsConstants.SPECIAL_ALL_PARTION_TASKS);
|
|
dt = client.getPreValidResult("", flowNo, LoginInfo.UserId, LoginInfo.Token, canSeePartsTasks);
|
|
dv1 = dt.DefaultView;
|
|
// dv1.RowFilter = "diffCount>0";
|
|
setRowfilter();
|
|
dv1.Sort = "diffCount desc";
|
|
dg1.DataSource = dv1;
|
|
|
|
// DataView dv2 = dt.DefaultView;
|
|
// dv2.RowFilter = "diffCount=0";
|
|
// dg2.DataSource = dv2;
|
|
|
|
|
|
|
|
Cursor.Current = System.Windows.Forms.Cursors.Default;
|
|
|
|
dg1.TableStyles.Clear();
|
|
DataGridTableStyle ts = new DataGridTableStyle();
|
|
ts.MappingName = dt.TableName;
|
|
dg1.TableStyles.Add(ts);
|
|
// dg2. TableStyles.Add(ts);
|
|
// [商品名称] [上架数量] ,[预到数量] ,[验收数量] ,[温度],[车牌] ,[运单] ,[电话]
|
|
ts.GridColumnStyles[0].Width = 40;
|
|
ts.GridColumnStyles[1].Width = 65;
|
|
ts.GridColumnStyles[2].Width = 85;
|
|
ts.GridColumnStyles[3].Width = 35;
|
|
ts.GridColumnStyles[4].Width = 35;
|
|
ts.GridColumnStyles[5].Width = 0;
|
|
ts.GridColumnStyles[6].Width = 0;
|
|
ts.GridColumnStyles[7].Width = 0;
|
|
ts.GridColumnStyles[8].Width = 0;
|
|
clear();
|
|
tabControl1.SelectedIndex = 0;
|
|
// if (dv1.Count == 1)
|
|
{
|
|
// this.GetGoodsData(dg1[0, 8].ToString());
|
|
|
|
}
|
|
|
|
}
|
|
catch (Exception er)
|
|
{
|
|
showErrorMsg(er);
|
|
}
|
|
|
|
Cursor.Current = System.Windows.Forms.Cursors.Default;
|
|
|
|
}
|
|
|
|
private void dg1_DoubleClick_1(object sender, EventArgs e)
|
|
{
|
|
if (dg1.DataSource == null || dg1.CurrentRowIndex < 0)
|
|
{
|
|
return;
|
|
}
|
|
this.GetGoodsData(dg1[dg1.CurrentRowIndex, 9].ToString());
|
|
this.tabControl1.SelectedIndex = 1;
|
|
}
|
|
|
|
private void tabControl1_SelectedIndexChanged(object sender, EventArgs e)
|
|
{
|
|
if (tabControl1.SelectedIndex == 0)
|
|
{
|
|
txtShelfId.SelectAll();
|
|
txtShelfId.Focus();
|
|
}
|
|
else if (tabControl1.SelectedIndex == 1)
|
|
{
|
|
barcode_txt.SelectAll();
|
|
barcode_txt.Focus();
|
|
}
|
|
else if (tabControl1.SelectedIndex == 2)
|
|
{
|
|
txt_loc.SelectAll();
|
|
txt_loc.Focus();
|
|
|
|
}
|
|
}
|
|
|
|
private void chkNotfinished_Click(object sender, EventArgs e)
|
|
{
|
|
showFinished = chkNotfinished.Checked;
|
|
setRowfilter();
|
|
}
|
|
|
|
void setRowfilter()
|
|
{
|
|
if (dv1 != null)
|
|
{
|
|
dv1.RowFilter = showFinished ? "diffCount>0" : "";
|
|
}
|
|
}
|
|
|
|
}
|
|
} |