ldj/wince/bak/DeiNiuWmsWINCE - 副本/forms/RepStockIn.cs

565 lines
16 KiB
C#
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using System.Threading;
namespace DeiNiu.Wms.CE
{
public partial class RepStockIn : basicForm
{
// // WmsOutPickRequestClient client { get; set; }
// WmsInRequestClient client { get; set; }
//v_stockOutBatchPickOrder4Wince
//v_stockOutBatchPickDetail4Wince
public RepStockIn()
{
setTitle();
InitializeComponent();
// client = new WmsOutPickRequestClient(WcfHelp.getBasicBinding(), WcfHelp.getEndpoint("WmsOutPickRequestService"));
// client = new WmsInRequestClient(WcfHelp.getBasicBinding(), WcfHelp.getEndpoint("WmsInRequestService"));
}
bool isAuto =false;
string goodsId = "";
string goodsName = "";
string batch = "";
int skuId = 0;
string goodsType = "";
decimal count = 0m;
DataTable dtIns;
DataTable dtLocs;
int id;
string orderNo = "";
private void RepStockIn_Load(object sender, EventArgs e)
{
isAuto = rbAuto.Checked;
bindBg1();
}
private void dg1_DoubleClick(object sender, EventArgs e)
{
clear();
if (dg1.DataSource==null)
{
return;
}
if(dg1.CurrentRowIndex<0)
{
return;
}
//string sale_order = dg1[dg1.CurrentRowIndex, 0].ToString();
//string custor_name = dg1[dg1.CurrentRowIndex, 1].ToString();
lbGoods.Text = dg1[dg1.CurrentRowIndex, 3].ToString();
lbCount.Text = dg1[dg1.CurrentRowIndex, 0].ToString();
tb1.SelectedIndex = 1;
}
private void tb1_SelectedIndexChanged(object sender, EventArgs e)
{
if (tb1.SelectedIndex == 0)
{
bindBg1();
/*
dg1.TableStyles[0].GridColumnStyles["出库单"].Width = 80;
dg1.TableStyles[0].GridColumnStyles["客户"].Width = 140;
dg1.TableStyles[0].GridColumnStyles["状态"].Width = 60;
*/
}
else
{
setDetail();
}
}
private void dg1_CurrentCellChanged(object sender, EventArgs e)
{
}
private void bindBg1()
{
textBoxGoods.Text = "";
Cursor.Current = System.Windows.Forms.Cursors.WaitCursor;
try
{
dtIns = client.repTodayDetails4In();
}
catch (Exception er)
{
Cursor.Current = System.Windows.Forms.Cursors.Default;
MessageBox.Show("发生错误:" + er.Message);
}
Cursor.Current = System.Windows.Forms.Cursors.Default;
DataGridTableStyle dgts = new DataGridTableStyle();
dgts.MappingName = dtIns.TableName;// dt.TableName; // 必须用 ds.TableName, dt.TableSpace 不行!!!!
dg1.DataSource = dtIns;
/*
for (int i = 0; i < dtIns.Columns.Count; i++)
{
DataGridColumnStyle ColStyle = new DataGridTextBoxColumn();
ColStyle.MappingName = dtIns.Columns[i].ColumnName.ToString();
ColStyle.HeaderText = dtIns.Columns[i].ColumnName.ToString();
ColStyle.Width = dtIns.Rows[0][i].ToString().Length * 7 - 1;
if (ColStyle.Width <25)
{
ColStyle.Width = 25;//设置列宽
}
if (i >= 7) //如果某个条件满足就执行该列是否隐藏
{
// ColStyle.Width = 0;//当宽度等于0的时候就可以隐藏这列
}
dgts.GridColumnStyles.Add(ColStyle);
}
*/
dg1.TableStyles.Clear();
dg1.TableStyles.Add(dgts);
dg1.TableStyles[0].GridColumnStyles["商品"].Width = 80;
dg1.TableStyles[0].GridColumnStyles["数量"].Width = 30;
dg1.TableStyles[0].GridColumnStyles["件"].Width = 20;
dg1.TableStyles[0].GridColumnStyles["商品类别"].Width = 50;
// dg1.TableStyles[0].GridColumnStyles["状态"].Width = 0;
// dg1.TableStyles[0].GridColumnStyles["货位"].Width = 0;
dgts = null;
GC.Collect();
}
private void bindBg2()
{
if (string.IsNullOrEmpty(goodsId))
{
return;
}
Cursor.Current = Cursors.WaitCursor;
try
{
dtLocs = client.getLocations( skuId,"",goodsId, batch, count);
}
catch (Exception e)
{
Cursor.Current = Cursors.Default;
MessageBox.Show("出错了:" +e.Message);
return;
}
Cursor.Current = Cursors.Default;
if (dtLocs.Rows.Count == 0)
{
MessageBox.Show("没有发现空货位");
return;
}
DataGridTableStyle dgts = new DataGridTableStyle();
dgts.MappingName = dtLocs.TableName;// dt.TableName; // 必须用 ds.TableName, dt.TableSpace 不行!!!!
for (int i = 0; i < dtLocs.Columns.Count; i++)
{
DataGridColumnStyle ColStyle = new DataGridTextBoxColumn();
ColStyle.MappingName = dtLocs.Columns[i].ColumnName.ToString();
ColStyle.HeaderText = dtLocs.Columns[i].ColumnName.ToString();
ColStyle.Width = dtLocs.Rows[0][i].ToString().Length * 7 - 1;
if (ColStyle.Width < 50)
{
ColStyle.Width = 50;//设置列宽
}
if (i == 1) //如果某个条件满足就执行该列是否隐藏
{
// ColStyle.Width = 0;//当宽度等于0的时候就可以隐藏这列
}
dgts.GridColumnStyles.Add(ColStyle);
}
dg2.TableStyles.Clear();
dg2.TableStyles.Add(dgts);
dg2.DataSource = dtLocs;
dgts = null;
GC.Collect();
//dgts.GridColumnStyles[0].Width = 100;
//dgts.GridColumnStyles[1].Width = 100;
}
private void rbAuto_CheckedChanged(object sender, EventArgs e)
{
setAuto();
}
void setAuto()
{
if (string.IsNullOrEmpty(goodsId))
{
return;
}
isAuto = rbAuto.Checked;
textBoxNum.Enabled = !isAuto;
btnOkay.Enabled = !isAuto;
textBoxNum.Text = "";
if (isAuto)
{
bindBg2();
}
else
{
textBoxNum.Text = count + "";
dg2.DataSource = null;
}
}
private void dg1_DoubleClick_1(object sender, EventArgs e)
{
// setDetail();
tb1.SelectedIndex = 1;
}
void setDetail()
{
clear();
if (dg1.DataSource == null)
{
return;
}
if (dg1.CurrentRowIndex < 0)
{
return;
}
orderNo = dtIns.Rows[dg1.CurrentRowIndex]["pickOrderNo"].ToString();
goodsId = dtIns.Rows[dg1.CurrentRowIndex]["goodsId"].ToString();// dg1[dg1.CurrentRowIndex, 14].ToString();
goodsName = dtIns.Rows[dg1.CurrentRowIndex]["商品"].ToString();// dg1[dg1.CurrentRowIndex, 0].ToString();
batch = dtIns.Rows[dg1.CurrentRowIndex]["批号"].ToString();// dg1[dg1.CurrentRowIndex, 4].ToString();
skuId =Convert.ToInt16( dtIns.Rows[dg1.CurrentRowIndex]["skuId"].ToString());
count = Convert.ToDecimal(dtIns.Rows[dg1.CurrentRowIndex]["数量"].ToString()); //Convert.ToDecimal(dg1[dg1.CurrentRowIndex, 1].ToString());
goodsType = dtIns.Rows[dg1.CurrentRowIndex]["商品类别"].ToString(); //dg1[dg1.CurrentRowIndex, 6].ToString();
lbGoods.Text = goodsName;
lbBatch.Text = batch;
lbCount.Text = count+"";
lbType.Text = goodsType;
id = Convert.ToInt32(dtIns.Rows[dg1.CurrentRowIndex]["id"].ToString());
textBox1.Text = "";
textBox1.Focus();
}
void clear()
{
orderNo =
goodsId =
batch = "";
goodsName = "";
skuId = 0;
count = 0;
lbGoods.Text = goodsId;
lbBatch.Text = batch;
lbCount.Text = "";
dg2.DataSource = null;
rbAuto.Checked = false;
radioButton2.Checked = true;
}
private void radioButton2_CheckedChanged(object sender, EventArgs e)
{
setAuto();
}
private void btnOkay_Click(object sender, EventArgs e)
{
repIn();
}
void repIn()
{
decimal inCount = 0;
try
{
inCount = Convert.ToDecimal(textBoxNum.Text.Trim());
if (inCount > count)
{
throw new Exception();
}
}
catch
{
MessageBox.Show("请输入正确的上架数量");
textBoxNum.Focus();
return;
}
string locId = textBox1.Text;
if (string.IsNullOrEmpty(locId))
{
MessageBox.Show("请扫描货架条码");
textBox1.Focus();
return;
}
if (putIn(locId, skuId,goodsId, batch, inCount, id))
{
count -= inCount;
if (count <= 0)
{
tb1.SelectedIndex = 0;
return;
}
lbCount.Text = count + "";
// setDetail();
textBox1.Text = "";
textBoxNum.Text = "";
}
textBox1.Focus();
}
bool putIn(string locId, int skuId, string goodsId, string batch, decimal count, int portId)
{
if (string.IsNullOrEmpty(goodsId) || string.IsNullOrEmpty(locId) || string.IsNullOrEmpty(batch) || count <= 0 || portId <= 0)
{
MessageBox.Show("条件不符,不能入库");
textBox1.Focus();
return false;
}
enumRepResult result = enumRepResult.;
Cursor.Current = Cursors.WaitCursor;
try
{
result = (enumRepResult)client.repItemIn(locId, goodsId,skuId, batch, count, portId, LoginInfo.UserId, LoginInfo.Token);
}
catch (Exception e)
{
Cursor.Current = Cursors.Default;
MessageBox.Show(e.Message);
return false;
}
Cursor.Current = Cursors.Default;
if (result != enumRepResult.)
{
MessageBox.Show("入库失败:" + result);
textBox1.Focus();
return false;
}
return true;
}
private void textBox1_KeyUp(object sender, KeyEventArgs e)
{
if (!isAuto)
{
return;
}
if (e.KeyCode == Keys.Enter)
{
string locId = textBox1.Text;
DataView dv = dtLocs.DefaultView;
dv.RowFilter = string.Format("推荐货位='{0}'", locId);
bool result = false;
decimal inCount = 0m;
if (dv.Count > 0)
{
foreach (DataRowView dr in dv)
{
inCount = Convert.ToDecimal(dr[1].ToString());
result = putIn(locId, skuId,goodsId, batch, inCount, id);
break;
}
}
else
{
MessageBox.Show(locId + "不是推荐货位或改货位已经扫描入库了,请扫描其它货位");
dv.RowFilter ="";
textBox1.SelectAll();
}
if (result)
{
count -= inCount;
if (count <= 0) //入库完毕
{
tb1.SelectedIndex = 0;
return;
}
dv.RowFilter = string.Format("推荐货位<>'{0}'", locId);
dtLocs = dv.ToTable("locs");
dg2.DataSource = dtLocs;
lbCount.Text = count + "";
// bindBg2();
}
}
}
private void dg2_DoubleClick(object sender, EventArgs e)
{
if (dg2.DataSource == null)
{
return;
}
if (dg2.CurrentRowIndex < 0)
{
return;
}
//string sale_order = dg1[dg1.CurrentRowIndex, 0].ToString();
//string custor_name = dg1[dg1.CurrentRowIndex, 1].ToString();
textBox1.Text = dg2[dg2.CurrentRowIndex, 0].ToString();
}
private void button1_Click(object sender, EventArgs e)
{
bindBg1();
}
private void textBoxGoods_KeyUp(object sender, KeyEventArgs e)
{
string goodsBarcode = textBoxGoods.Text;
if (string.IsNullOrEmpty(goodsBarcode))
{
textBoxGoods.Focus();
return;
}
if (e.KeyCode == Keys.Enter)
{
DataView dv = dtIns.DefaultView;
dv.RowFilter = string.Format("barcode='{0}'", goodsBarcode);
if (dv.Count ==1)
{
tb1.SelectedIndex = 1;
}
dv.RowFilter = "";
textBoxGoods.Text = "";
}
}
private void btnComplete_Click(object sender, EventArgs e)
{
if (string.IsNullOrEmpty(goodsId))
{
return;
}
Message me = new Message();
me.title = "您确认此条补货已完成入库 ";
if (me.ShowDialog() == DialogResult.Cancel)
{
textBox1.Focus();
return;
}
Cursor.Current = Cursors.WaitCursor;
try
{
//int i =0;
//while(i<50){
// i++;
client.finishBatchValidateItem(orderNo, id, LoginInfo.UserId, LoginInfo.Token);
// Thread.CurrentThread.Join(10);
//}
}
catch (Exception er)
{
MessageBox.Show("出错了:" +er.Message);
}
Cursor.Current = Cursors.Default;
tb1.SelectedIndex = 0;
}
private void textBoxNum_KeyUp(object sender, KeyEventArgs e)
{
repIn();
}
private void textBoxGoods_TextChanged(object sender, EventArgs e)
{
}
}
}