ldj/winform/出库/零货复核/GoodsOutSeedsPackForm.cs

1329 lines
49 KiB
C#
Raw Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

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.Linq;
using System.Windows.Forms;
using DevExpress.XtraBars;
using DevExpress.XtraGrid.Views.Base;
//using DeiNiu.wms.Logical;
using DeiNiu.wms.Data;
using DevExpress.XtraGrid.Columns;
using System.Threading;
using DevExpress.XtraGrid.Views.Grid;
using DevExpress.XtraEditors.DXErrorProvider;
using DeiNiu.wms.Data.Model;
using DevExpress.XtraEditors;
using DevExpress.XtraEditors.Controls;
using DeiNiu.Utils;
using DeiNiu.wms.win.ServiceReferenceStockOutPickRequest;
using System.ServiceModel;
using DeiNiu.wms.win.utils.print;
namespace DeiNiu.wms.win
{
public partial class GoodsOutSeedsPackForm : BasicRibbonForm
{
// lWmsStock ls = new lWmsStock();
//lWmsOutPickRequest lgt = new lWmsOutPickRequest();
//lWmsOutRequest lgOutReq = new lWmsOutRequest();
// lWmsOutPickRequest outPickRequest = new lWmsOutPickRequest();
private string lastQuery = "";
DataSet dsPickOrders;
private DataTable dtPickOrders;
private DataTable dtPickOrdersDetail;
private DataTable dtGoods;
private int selectedRowIndex = -1;
// private WmsOutPickDetail_tmp currentDetail;
string lastScanBarcode = "";
// Thread threadPreProcess;
bool autoOrder;
string currentPickOrder = "";
string currentWaveNo = "";
public GoodsOutSeedsPackForm()
{
InitializeComponent();
initialControls();
initialBackGroundTasks();
// initialTimer();
}
#region initialControls
private void initialControls()
{
initialComboBoxes();
// initialPagerControls();
initialDataGrid();
initialQueryInput();
setValidationRule();
textEditPickOrderNo.GotFocus += new EventHandler(textEditBarcode_GotFocus);
textEditPickOrderNo.MouseUp += new MouseEventHandler(textEditBarcode_MouseUp);
}
private void initialBackGroundTasks()
{
swAutoOrder.IsOn = WmsConstants.AUTO_PICK_BULK_VALIDATION_ORDER;
autoOrder = swAutoOrder.IsOn;
// lgOutReq.UpdateUIDelegate += updateValidationList;
if (autoOrder)
{
this.getValidationOrders();
}
}
string oldDesk = "-1";
private int desk
{
get
{
if (combColors.SelectedIndex == -1)
{
showErrorMsg(null, "请选择控制台");
combColors.Focus();
return -1;
}
// return Convert.ToInt32( ((Node)combColors.SelectedItem).name);
if (oldDesk != combColors.Text)
{
writeConfig("Desk", combColors.Text);
}
return Convert.ToInt32(combColors.Text);
}
}
private void initialComboBoxes()
{
DataTable dtDesk = pickClient.getDeskList((int)enumDeskType.);
List<string> desks = new List<string>();
foreach (DataRow dr in dtDesk.Rows)
{
desks.Add(dr["color"].ToString());
}
initialComboBoxs(this.combColors, desks.ToArray());
oldDesk = System.Configuration.ConfigurationManager.AppSettings["Desk"];
try
{
int i = 0;
foreach (string desk in desks)
{
if (!string.IsNullOrEmpty(oldDesk) && oldDesk == desk)
{
combColors.SelectedIndex = i;
}
i++;
}
}
catch
{
}
}
private void setValidationRule()
{
// dxValidationProvider.SetValidationRule(comWarehouse, ValidationRules.notEmptyValidationRule);
//txtGoodType.Properties.MaxLength = 40;
//txtGoodDesc.Properties.MaxLength = 250;
//textEdit1.Properties.MaxLength = txtGoodType.Properties.MaxLength;
}
private void initialQueryInput()
{
}
private void initialDataGridColumns()
{
setupGridView(gridViewPickOrders,false);
//setupGridView(gridView2, false,false);
//setupGridView(gridView3, false,false);
// gridviewGoodsType.PopulateColumns();
gridViewPickOrders.Columns.Clear();
// gridviewGoodsType.Columns.Remove(gridviewGoodsType.Columns["DealerPrice"]);
GridColumn myCol0 = new GridColumn() { Caption = "ID", Visible = true, FieldName = "id" };
myCol0.Visible = false;
this.gridViewPickOrders.Columns.Add(myCol0);
GridColumn myCol1 = new GridColumn() { Caption = "单号", Visible = true, FieldName = WmsOutPickRequest.fields.pickOrderNo.ToString() };
// GridColumn myCol2 = new GridColumn() { Caption = "类别", Visible = true, FieldName = WmsOutPickRequest.fields.orderTypeName.ToString() };
GridColumn myCol3 = new GridColumn() { Caption = "分播状态", Visible = true, FieldName = "orderState" };
GridColumn myCol4 = new GridColumn() { Caption = "客户", Visible = true, FieldName = WmsOutPickRequest.fields.customerName. ToString() };
GridColumn myCol5 = new GridColumn() { Caption = "备注", Visible = true, FieldName = WmsOutPickRequest.fields.description.ToString() };
//GridColumn myCol6 = new GridColumn() { Caption = "日期", Visible = true, FieldName = WmsOutPickRequest.fields.orderDate.ToString() };
this.gridViewPickOrders.Columns.Add(myCol1);
// this.gridView1.Columns.Add(myCol6);
this.gridViewPickOrders.Columns.Add(myCol3);
this.gridViewPickOrders.Columns.Add(myCol4);
this.gridViewPickOrders.Columns.Add(myCol5);
//to show bottom scroll bar
gridViewPickOrders.OptionsView.ColumnAutoWidth = false;
gridViewPickOrders.BestFitColumns();
// gridView1.Focus();
// initialGridView2Columns();
//gridControl2.DataSource = null;
}
private void initialGridView2Columns(GridView gridview)
{
setupGridView(gridview, false, true, false);
gridview.FocusRectStyle = DrawFocusRectStyle.None;
// gridviewGoodsType.PopulateColumns();
gridview.Columns.Clear();
// gridviewGoodsType.Columns.Remove(gridviewGoodsType.Columns["DealerPrice"]);
GridColumn myCol0 = new GridColumn() { Caption = "ID", Visible = true, FieldName = "id" };
myCol0.Visible = false;
gridview.Columns.Add(myCol0);
GridColumn myCol1 = new GridColumn() { Caption = "商品编码", Visible = true, FieldName = WmsGoods.fields.goodsId.ToString() };
GridColumn myCol2 = new GridColumn() { Caption = "商品名称", Visible = true, FieldName = WmsGoods.exfields.goodsName.ToString() };
GridColumn myCol3 = new GridColumn() { Caption = "厂家", Visible = true, FieldName = WmsGoods.exfields.manufacturer.ToString() };
GridColumn myCol4 = new GridColumn() { Caption = "规格", Visible = true, FieldName = WmsGoods.exfields.spec.ToString() };
GridColumn myCol5 = new GridColumn() { Caption = "单位", Visible = true, FieldName = WmsGoods.exfields.unit.ToString() };
GridColumn myCol6 = new GridColumn() { Caption = "大包装数量", Visible = true, FieldName = WmsGoods.exfields.bigCount.ToString() };
GridColumn myCol7 = new GridColumn() { Caption = "剂型", Visible = true, FieldName = WmsGoods.exfields.type.ToString() };
GridColumn myCol8 = new GridColumn() { Caption = "商品类型", Visible = true, FieldName = WmsGoods.exfields.goodsTypeName.ToString() };
// GridColumn myCol9 = new GridColumn() { Caption = "大零", Visible = true, FieldName = WmsGoods.fields.bulkMax.ToString() };
// GridColumn myCol10 = new GridColumn() { Caption = "小整", Visible = true, FieldName = WmsGoods.fields.batchMax1.ToString() };
// GridColumn myCol11 = new GridColumn() { Caption = "大整", Visible = true, FieldName = WmsGoods.fields.batchMax2.ToString() };
GridColumn myCol12 = new GridColumn() { Caption = "国药准字", Visible = true, FieldName = WmsGoods.exfields.regeditCode.ToString() };
GridColumn myCol100 = new GridColumn() { Caption = "数量", Visible = true, FieldName = WmsOutDetail.fields.count.ToString() };
GridColumn myCol101 = new GridColumn() { Caption = "零货", Visible = true, FieldName = WmsOutDetail.fields.bulkCount.ToString() };
// GridColumn myCol102 = new GridColumn() { Caption = "小整", Visible = true, FieldName = WmsOutDetail.fields.batch1Count.ToString() };
// GridColumn myCol103 = new GridColumn() { Caption = "大整", Visible = true, FieldName = WmsOutDetail.fields.batch2Count.ToString() };
// GridColumn myCol104 = new GridColumn() { Caption = "箱", Visible = true, FieldName = WmsOutDetail.fields.boxcnt.ToString() };
GridColumn myCol14 = new GridColumn() { Caption = "批号", Visible = true, FieldName = WmsOutDetail.fields.batch.ToString() };
GridColumn myCol15 = new GridColumn() { Caption = "生产日期", Visible = true, FieldName = WmsOutDetail.fields.productDate.ToString() };
GridColumn myCol16 = new GridColumn() { Caption = "有效期", Visible = true, FieldName = WmsOutDetail.fields.validDate.ToString() };
GridColumn myCol161 = new GridColumn() { Caption = "分播状态", Visible = true, FieldName = "orderState" };
GridColumn myCol17 = new GridColumn() { Caption = "状态", Visible = true, FieldName = WmsOutDetail.fields.state.ToString() };
GridColumn myCol18 = new GridColumn() { Caption = "说明", Visible = true, FieldName = WmsOutDetail.fields.description.ToString() };
GridColumn myCol25 = new GridColumn() { Caption = "订单", Visible = true, FieldName = WmsOutRequest.fields.orderNo.ToString() };
GridColumn myCol26 = new GridColumn() { Caption = "条码", Visible = true, FieldName = "barCode" };
GridColumn myCol29 = new GridColumn() { Caption = "复核结果", Visible = true, FieldName = "validResult" };
GridColumn myCol27 = new GridColumn() { Caption = "异常回馈", Visible = true, FieldName = "solution" };
GridColumn myCol28 = new GridColumn() { Caption = "回馈说明", Visible = true, FieldName = WmsOutPickDetail.fields.solutionRemark.ToString() };
GridColumn myCol30 = new GridColumn() { Caption = "复核数量", Visible = true, FieldName = WmsOutPickDetail.fields.confirmedCount.ToString() };
if (gridview == gridViewSaleOrders)
{
gridview.Columns.Add(myCol25);
}
else
{
gridview.Columns.Add(myCol26);
gridview.Columns.Add(myCol101);
}
gridview.Columns.Add(myCol2);
gridview.Columns.Add(myCol14);
gridview.Columns.Add(myCol161);
gridview.Columns.Add(myCol100);
// gridview.Columns.Add(myCol101);
// gridview.Columns.Add(myCol102);
// gridview.Columns.Add(myCol103);
// gridview.Columns.Add(myCol104);
gridview.Columns.Add(myCol6);
gridview.Columns.Add(myCol5);
gridview.Columns.Add(myCol15);
gridview.Columns.Add(myCol16);
gridview.Columns.Add(myCol3);
gridview.Columns.Add(myCol3);
gridview.Columns.Add(myCol8);
//gridview.Columns.Add(myCol9);
gridview.Columns.Add(myCol2);
// gridview.Columns.Add(myCol6);
gridview.Columns.Add(myCol4);
gridview.Columns.Add(myCol7);
gridview.Columns.Add(myCol12);
gridview.Columns.Add(myCol1);
// gridview.Columns.Add(myCol17);
gridview.Columns.Add(myCol18);
//to show bottom scroll bar
gridview.OptionsView.ColumnAutoWidth = false;
gridview.BestFitColumns();
// gridView2.Focus();
if (dtGoods !=null && dtGoods.Rows.Count > 0)
{
switchGridViewRowSelection(gridViewGoods, true);
if (gridViewGoods.IsFocusedView)
{
return;
}
gridViewGoods.Focus();
}
}
private void initialGridView3Columns(GridView gridview)
{
setupGridView(gridview, false, true, false);
gridview.FocusRectStyle = DrawFocusRectStyle.None;
// gridviewGoodsType.PopulateColumns();
gridview.Columns.Clear();
// gridviewGoodsType.Columns.Remove(gridviewGoodsType.Columns["DealerPrice"]);
GridColumn myCol0 = new GridColumn() { Caption = "ID", Visible = true, FieldName = "id" };
myCol0.Visible = false;
gridview.Columns.Add(myCol0);
GridColumn myCol1 = new GridColumn() { Caption = "商品编码", Visible = true, FieldName = WmsGoods.fields.goodsId.ToString() };
GridColumn myCol2 = new GridColumn() { Caption = "商品名称", Visible = true, FieldName = WmsGoods.exfields.goodsName.ToString() };
GridColumn myCol3 = new GridColumn() { Caption = "厂家", Visible = true, FieldName = WmsGoods.exfields.manufacturer.ToString() };
GridColumn myCol4 = new GridColumn() { Caption = "规格", Visible = true, FieldName = WmsGoods.exfields.spec.ToString() };
GridColumn myCol5 = new GridColumn() { Caption = "单位", Visible = true, FieldName = WmsGoods.exfields.unit.ToString() };
// GridColumn myCol6 = new GridColumn() { Caption = "大包装数量", Visible = true, FieldName = WmsGoods.exfields.bigCount.ToString() };
GridColumn myCol7 = new GridColumn() { Caption = "剂型", Visible = true, FieldName = WmsGoods.exfields.type.ToString() };
GridColumn myCol8 = new GridColumn() { Caption = "商品类型", Visible = true, FieldName = WmsGoods.exfields.goodsTypeName.ToString() };
// GridColumn myCol9 = new GridColumn() { Caption = "大零", Visible = true, FieldName = WmsGoods.fields.bulkMax.ToString() };
// GridColumn myCol10 = new GridColumn() { Caption = "小整", Visible = true, FieldName = WmsGoods.fields.batchMax1.ToString() };
// GridColumn myCol11 = new GridColumn() { Caption = "大整", Visible = true, FieldName = WmsGoods.fields.batchMax2.ToString() };
GridColumn myCol12 = new GridColumn() { Caption = "国药准字", Visible = true, FieldName = WmsGoods.exfields.regeditCode.ToString() };
GridColumn myCol100 = new GridColumn() { Caption = "数量", Visible = true, FieldName = WmsOutDetail.fields.count.ToString() };
// GridColumn myCol101 = new GridColumn() { Caption = "零货", Visible = true, FieldName = WmsOutDetail.fields.count.ToString() };
// GridColumn myCol102 = new GridColumn() { Caption = "整货", Visible = true, FieldName = WmsOutDetail.fields.batch1Count.ToString() };
// GridColumn myCol103 = new GridColumn() { Caption = "大整", Visible = true, FieldName = WmsOutDetail.fields.batch2Count.ToString() };
// GridColumn myCol104 = new GridColumn() { Caption = "箱", Visible = true, FieldName = WmsOutDetail.fields.boxcnt.ToString() };
GridColumn myCol14 = new GridColumn() { Caption = "批号", Visible = true, FieldName = WmsOutDetail.fields.batch.ToString() };
GridColumn myCol15 = new GridColumn() { Caption = "生产日期", Visible = true, FieldName = WmsOutDetail.fields.productDate.ToString() };
GridColumn myCol16 = new GridColumn() { Caption = "有效期", Visible = true, FieldName = WmsOutDetail.fields.validDate.ToString() };
GridColumn myCol17 = new GridColumn() { Caption = "状态", Visible = true, FieldName = WmsOutDetail.fields.state.ToString() };
GridColumn myCol18 = new GridColumn() { Caption = "说明", Visible = true, FieldName = WmsOutDetail.fields.description.ToString() };
GridColumn myCol19 = new GridColumn() { Caption = "分拣状态", Visible = true, FieldName = WmsOutPickDetail.fields.bulkPickState.ToString() };
GridColumn myCol20 = new GridColumn() { Caption = "波次", Visible = true, FieldName = WmsOutPickLable.fields.dpsOrder.ToString() };
GridColumn myCol21 = new GridColumn() { Caption = "颜色", Visible = true, FieldName = WmsOutPickLable.fields.color.ToString() };
GridColumn myCol22 = new GridColumn() { Caption = "货位", Visible = true, FieldName = WmsOutPickLable.fields.locationId.ToString() };
GridColumn myCol23 = new GridColumn() { Caption = "标签", Visible = true, FieldName = WmsOutPickLable.fields.elabId.ToString() };
GridColumn myCol24 = new GridColumn() { Caption = "客户", Visible = true, FieldName = WmsOutPickRequest.fields.customerName.ToString() };
GridColumn myCol25 = new GridColumn() { Caption = "订单", Visible = true, FieldName = WmsOutPickDetail.fields.pickOrderNo.ToString() };
GridColumn myCol26 = new GridColumn() { Caption = "异常回馈", Visible = true, FieldName = "solution" };
GridColumn myCol27 = new GridColumn() { Caption = "回馈说明", Visible = true, FieldName = WmsOutPickDetail.fields.solutionRemark.ToString() };
// gridview.Columns.Add(myCol25);
gridview.Columns.Add(myCol2);
gridview.Columns.Add(myCol14);
// gridview.Columns.Add(myCol21);
gridview.Columns.Add(myCol100);
gridview.Columns.Add(myCol22);
gridview.Columns.Add(myCol23);
gridview.Columns.Add(myCol19);
//to show bottom scroll bar
gridview.OptionsView.ColumnAutoWidth = false;
gridview.BestFitColumns();
// gridView2.Focus();
}
#endregion
/// <summary>
/// 预处理,按客户分拆订单,生成分拣单,并出库
/// </summary>
private void getValidationOrders()
{
this.getPickOrders4Validation();
//threadPreProcess = new Thread(this.getPickOrders4Validation);
//threadPreProcess.IsBackground = true;
//threadPreProcess.Start();
}
private void getPickOrders4Validation()
{
clearDetails();
try
{
dtPickOrdersDetail = pickClient.getSeedsPackingData(desk);
closeClient();
}
catch (Exception e)
{
showErrorMsg(e.Message);
LogHelper.WriteLog(this.GetType(), e);
return;
}
DataView dv = dtPickOrdersDetail.DefaultView;
dtPickOrders = dv.ToTable(true, "pickOrderNo","customerName","orderState","bulkBox","bulkBag");
dtPickOrders.PrimaryKey = new DataColumn[] { dtPickOrders.Columns["pickOrderNo"] };
dtPickOrdersDetail.PrimaryKey = new DataColumn[] { dtPickOrdersDetail.Columns["id"] };
// updateValidationList(null,null);
if (InvokeRequired)
{
this.Invoke(new loadNewPickOrders(delegate()
{
swAutoOrder.Enabled = true;
btnPickOrders.Enabled = !autoOrder;
this.loadPickOrders();
}));
}
else
{
swAutoOrder.Enabled = true;
btnPickOrders.Enabled = !autoOrder;
this.loadPickOrders();
}
// getValidationOrders();
}
DateTime lastRefreshTime;
int refreshInterval = 5;
//完成任务时需要调用
delegate void loadNewPickOrders();
private void updateValidationList(object source, System.Timers.ElapsedEventArgs e)
{
//还可以进行其他的一些完任务完成之后的逻辑处理
closeWaitForm();
if (autoOrder)
{
TimeSpan ts = DateTime.Now - lastRefreshTime;
if ( ts.TotalSeconds < refreshInterval)
{
return;
}
lastRefreshTime = DateTime.Now;
refreshInterval = Convert.ToInt32( spinOrder.Value * 60);
getValidationOrders();
}
}
System.Timers.Timer timer = new System.Timers.Timer();//实例化Timer类
private void timeCnt()
{
timer.Start(); ;
}
private void initialTimer()
{
int intTime = 10000;
timer.Interval = intTime;//设置间隔时间,为毫秒;
timer.Elapsed += new System.Timers.ElapsedEventHandler(updateValidationList);//到达时间的时候执行事件;
timer.AutoReset = true;//设置是执行一次false还是一直执行(true)
timer.Enabled = true;//是否执行System.Timers.Timer.Elapsed事件
timer.Start();
}
private void bindDetail()
{
}
private void setDataBack()
{
}
private bool validData()
{
bool isvalid = dxValidationProvider1.Validate();
// MessageBox.Show("goodtype is " + txtGoodType.Text +", is valid ? " + isvalid);
return isvalid;
//String gdtype = txtGoodType.Text.Trim();
//if (gdtype.Length == 0)
//{
// dxValidationProvider.Validate();
// return false;
//}
//return true;
}
private void gridView1_FocusedRowObjectChanged(object sender, FocusedRowObjectChangedEventArgs e)
{
if (gridViewPickOrders.FocusedRowHandle < 0 || gridViewPickOrders.FocusedRowHandle == selectedRowIndex || isDataSourceChanged && selectedRowIndex >0)
{
if (gridViewPickOrders.IsGroupRow(e.RowHandle)) //set first row of group selected
{
selectedRowIndex = gridViewPickOrders.GetChildRowHandle(e.RowHandle, 0);
setCurrentRequestDetail();
}
isDataSourceChanged = false;
return;
}
isDataSourceChanged = false;
selectedRowIndex = gridViewPickOrders.FocusedRowHandle ;
// showErrorMsg("selection:"+ selectedRowIndex);
setCurrentRequestDetail();
}
bool isDataSourceChanged = false;
private void gridView1_DataSourceChanged(object sender, EventArgs e)
{
isDataSourceChanged = true;
if (selectedRowIndex >= 0 && dtPickOrders.Rows.Count > selectedRowIndex)
{
gridViewPickOrders.FocusedRowHandle = selectedRowIndex;
gridViewPickOrders.MakeRowVisible(selectedRowIndex);
}
}
protected void query()
{
// pager1.Bind();
}
private void loadPickOrders()
{
closeWaitForm();
// showWaitForm();
try
{
bool firstLoad = this.gridPickOrders.DataSource == null;
gridPickOrders.DataSource = dtPickOrders;
//dt = lgt.Query(query, start, end); //string.IsNullOrEmpty(query) ? lgt.GetGoodType.getAllData(start, end) : lgt.g;
dtPickOrders.PrimaryKey = new DataColumn[] { dtPickOrders.Columns["pickOrderNo"] };
// DataRow drx = dtPickOrders.Rows.Find(currentPickOrder);
this.gridPickOrders.DataSource = dtPickOrders.DefaultView;
//update selected row index to the last updated one.
if (!string.IsNullOrEmpty(currentPickOrder) )
{
selectedRowIndex = -1;
DataRow dr = dtPickOrders.Rows.Find(currentPickOrder);
if (dr != null)
{
// selectedRowIndex = dtPickOrders.Rows.IndexOf(dr);
selectedRowIndex = 0;
foreach (DataRowView drv in GetGridViewFilteredAndSortedData(gridViewPickOrders))
{
if (drv["pickOrderNo"].ToString().Equals(currentPickOrder))
{
break;
}
selectedRowIndex++;
}
}else{
selectedRowIndex = 0;
}
if (selectedRowIndex >= 0 && dtPickOrders.Rows.Count > selectedRowIndex)
{
// gridView1.SelectRow(selectedRowIndex);
gridViewPickOrders.FocusedRowHandle = selectedRowIndex;
// gridView1.MakeRowVisible(selectedRowIndex);
}
//gridView1.FocusedRowHandle = selectedRowIndex;
}
else
// if (firstLoad)
{
gridViewPickOrders.FocusedRowHandle = 0;
gridViewPickOrders.SelectRow(0);
// setCurrentRequestDetail();
}
if (firstLoad && dtPickOrders.Rows.Count > 0)
{
selectedRowIndex =0;
}
setCurrentRequestDetail();
try
{
initialDataGridColumns();
}
catch { }
if (firstLoad)
{
textEditPickOrderNo.Focus();
textEditPickOrderNo.SelectAll();
}
}
catch (Exception e)
{
showErrorMsg(e.Message);
}
finally
{
// WaitFormService.Close();
// closeWaitForm();
bbQuery.Enabled = true;
}
}
private void bbQuery_ItemClick_1(object sender, ItemClickEventArgs e)
{
this.bbQuery.Enabled = false;
loadPickOrders();
}
private void updateObjects(List<WmsGoods> goods)
{
showWaitForm();
//WaitFormService.Show(this);
try
{
// lgt.update(goods);
//get updated data
query();
}
catch (Exception e)
{
showErrorMsg(e,e.Message);
}
finally
{
// WaitFormService.Close();
closeWaitForm();
}
}
private bool getCurrentObject()
{
if (selectedRowIndex <0 || selectedRowIndex >= dtPickOrders.Rows.Count)
{
return false;
}
//clearDetails();
int cnt = GetGridViewFilteredAndSortedData(gridViewPickOrders).Count;
if (selectedRowIndex + 1 > cnt)
{
return false;
}
// DataRow currentRow = dtPickOrders.Rows[selectedRowIndex];
DataRowView currentRow = (DataRowView)(GetGridViewFilteredAndSortedData(gridViewPickOrders)[selectedRowIndex]);
// selectedRequest = new WmsOutPickRequest(currentRow);
currentPickOrder = currentRow["pickOrderNo"].ToString();
lbCustmer.Text = currentRow["customerName"].ToString();
// currentWaveNo = currentRow["dpsOrder"].ToString();
this.spinBulkBox.Text = currentRow["bulkBox"].ToString();
this.spinBulkBag.Text = currentRow["bulkBag"].ToString();
btnOk.Enabled =Convert.ToInt32( currentRow["orderState"].ToString())<(int)enumOutStockPickStatus.;
btnPrint.Enabled = !btnOk.Enabled;
return true;
}
private void btnQuery_Click(object sender, EventArgs e)
{
clearDetails();
loadPickOrders();
}
private void gridView1_SelectionChanged(object sender, DevExpress.Data.SelectionChangedEventArgs e)
{
if (gridViewPickOrders.FocusedRowHandle <0 || gridViewPickOrders.FocusedRowHandle == selectedRowIndex)
{
return;
}
selectedRowIndex = gridViewPickOrders.FocusedRowHandle;
// showErrorMsg("selection:"+ selectedRowIndex);
setCurrentRequestDetail();
}
private void initialDataGrid()
{
gridViewPickOrders.OptionsSelection.MultiSelect = false;//按shift / control 多选
this.gridViewPickOrders.OptionsBehavior.AutoPopulateColumns = false;
this.gridViewPickOrders.FocusRectStyle = DevExpress.XtraGrid.Views.Grid.DrawFocusRectStyle.RowFocus;
this.gridViewPickOrders.FocusRectStyle = DevExpress.XtraGrid.Views.Grid.DrawFocusRectStyle.CellFocus;
this.gridViewPickOrders.OptionsBehavior.Editable = false;
this.gridViewPickOrders.OptionsSelection.EnableAppearanceFocusedCell = false;
this.gridViewPickOrders.FocusedRowObjectChanged += new DevExpress.XtraGrid.Views.Base.FocusedRowObjectChangedEventHandler(this.gridView1_FocusedRowObjectChanged);
this.gridViewPickOrders.DataSourceChanged += new System.EventHandler(this.gridView1_DataSourceChanged);
//show line number
this.gridViewPickOrders.IndicatorWidth = 20;
this.gridViewPickOrders.CustomDrawRowIndicator += new DevExpress.XtraGrid.Views.Grid.RowIndicatorCustomDrawEventHandler(gridView_CustomDrawRowIndicator);
gridViewPickOrders.CustomColumnDisplayText += gridView2_CustomColumnDisplayText;
gridViewPickOrders.RowCellStyle += gridView_RowCellStyle;
this.gridViewSaleOrders .IndicatorWidth = 20;
this.gridViewSaleOrders.CustomDrawRowIndicator += new DevExpress.XtraGrid.Views.Grid.RowIndicatorCustomDrawEventHandler(gridView_CustomDrawRowIndicator);
gridViewSaleOrders.OptionsSelection.EnableAppearanceFocusedCell = false;
this.gridViewGoods.IndicatorWidth = 20;
this.gridViewGoods.CustomDrawRowIndicator += new DevExpress.XtraGrid.Views.Grid.RowIndicatorCustomDrawEventHandler(gridView_CustomDrawRowIndicator);
gridViewGoods.OptionsSelection.MultiSelect = false;
gridViewGoods.FocusRectStyle = DevExpress.XtraGrid.Views.Grid.DrawFocusRectStyle.RowFocus;
gridViewGoods.OptionsSelection.EnableAppearanceFocusedCell = false;
gridViewGoods.RowCellStyle += gridView_RowCellStyle;
gridViewGoods.CustomColumnDisplayText += gridView2_CustomColumnDisplayText;
this.gridViewGoods.CustomDrawRowIndicator += new DevExpress.XtraGrid.Views.Grid.RowIndicatorCustomDrawEventHandler(gridView_CustomDrawRowIndicator);
gridViewGoods.GotFocus += new EventHandler(gridview_GotFocus);
switchGridViewRowSelection(gridViewSaleOrders, false);
gridViewSaleOrders.LostFocus += new EventHandler(gridview_LostFocus);
gridViewSaleOrders.GotFocus += new EventHandler(gridview_GotFocus);
}
private void gridView2_CustomColumnDisplayText(object sender, DevExpress.XtraGrid.Views.Base.CustomColumnDisplayTextEventArgs e)
{
//if (sender == gridViewValidated)
{
if (e.Column.FieldName == "state" )
{
if (!pickDetailStatus.ContainsValue(e.DisplayText))
{
int display = -100;
string disTxt = e.DisplayText;
try
{
display = Convert.ToInt32(e.DisplayText);
e.DisplayText = pickDetailStatus[display];
}
catch
{
return;
}
}
}else
if (e.Column.FieldName == "bulkPickState" || e.Column.FieldName == "orderState")
{
if (!pickStatus.ContainsValue(e.DisplayText))
{
int display = -100;
string disTxt = e.DisplayText;
try
{
display = Convert.ToInt32(e.DisplayText);
e.DisplayText = pickStatus[display];
}
catch
{
return;
}
}
}
}
}
void gridView_CustomDrawCell(object sender, DevExpress.XtraGrid.Views.Base.RowCellCustomDrawEventArgs e)
{
//var currentView = sender as GridView;
//if (currentView != null && e.RowHandle == currentView.FocusedRowHandle) return;
Rectangle r = e.Bounds;
if (e.Column.FieldName == "state")
{
}
}
void gridView_RowCellStyle(object sender,DevExpress.XtraGrid.Views.Grid.RowCellStyleEventArgs e)
{
var currentView = sender as GridView;
// if( currentView != null){return;}
string state = currentView.GetDataRow(e.RowHandle)["orderState"].ToString().Trim();
if (string.IsNullOrEmpty(state))
{
return;
}
enumOutStockPickStatus status = (enumOutStockPickStatus)Convert.ToInt32(state);
bool isFocused = e.RowHandle == currentView.FocusedRowHandle;
DevExpress.Utils.AppearanceDefault rowStyle = null;
DevExpress.Utils.AppearanceDefault appBlueRed =
new DevExpress.Utils.AppearanceDefault (Color.White, Color.Red, Color.Empty, Color.Blue, System.Drawing.Drawing2D.LinearGradientMode.Horizontal);
DevExpress.Utils.AppearanceDefault appYB =
new DevExpress.Utils.AppearanceDefault(Color.White, Color.Red, Color.Green);
//DevExpress.Utils.AppearanceDefault alertFocus = new DevExpress.Utils.AppearanceDefault(Color.White, Color.Red, Color.Green, Color.Yellow);
DevExpress.Utils.AppearanceDefault alertFocus = new DevExpress.Utils.AppearanceDefault(Color.White,Color.Red);
DevExpress.Utils.AppearanceDefault alert = new DevExpress.Utils.AppearanceDefault(Color.Red, Color.White );
DevExpress.Utils.AppearanceDefault passedFocus = new DevExpress.Utils.AppearanceDefault(Color.Gray, Color.WhiteSmoke);
DevExpress.Utils.AppearanceDefault passed = new DevExpress.Utils.AppearanceDefault(Color.Gray,Color.White);
DevExpress.Utils.AppearanceDefault solutionFocus = new DevExpress.Utils.AppearanceDefault(Color.Green, Color.Yellow);
DevExpress.Utils.AppearanceDefault solution = new DevExpress.Utils.AppearanceDefault(Color.Green, Color.White);
if (status == enumOutStockPickStatus.)
{
rowStyle = isFocused ? passedFocus : passed;
}
else if (status == enumOutStockPickStatus.)
{
rowStyle = isFocused ? alertFocus : alert;
}
else if (status == enumOutStockPickStatus.)
{
rowStyle = isFocused ? solutionFocus : solution;
}
DevExpress.Utils.AppearanceHelper.Apply(e.Appearance, rowStyle);
/*
if (sender == this.gridView2)
{
if (this.gridView2.GetDataRow(e.RowHandle)["state"].ToString().Trim() == "2")
{
DevExpress.Utils.AppearanceHelper.Apply(e.Appearance, alert);
}
}else if(sender == this.gridView1){
if ( state == "2")
{
if (currentView != null && e.RowHandle == currentView.FocusedRowHandle)
{
DevExpress.Utils.AppearanceHelper.Apply(e.Appearance, alertFocus);
}
else
{
DevExpress.Utils.AppearanceHelper.Apply(e.Appearance, alert);
}
}
else if (state == "1")
{
DevExpress.Utils.AppearanceHelper.Apply(e.Appearance, passed);
}
}
*/
}
private void setCurrentRequestDetail()
{
if (!getCurrentObject() || string.IsNullOrEmpty( currentPickOrder)) 
{
return;
}
// showWaitForm();
try
{
bindGoodsDetail();
if (lgOutPickDetail.Expanded)
{
showOrderPickDetail();
}
textEditPickOrderNo.Focus();
textEditPickOrderNo.SelectAll();
}
catch (Exception e)
{
showErrorMsg(e,e.Message);
}
// closeWaitForm();
}
void showOrderPickDetail()
{
if (string.IsNullOrEmpty(currentPickOrder))
{
return;
}
try
{
this.gridSaleOrders.DataSource = pickClient.getOutRequestDetail(currentPickOrder).DefaultView;
closeClient();
}
catch (Exception ex)
{
showErrorMsg(ex.Message);
return;
}
initialGridView2Columns(gridViewSaleOrders);
//set pick details
}
private void bindGoodsDetail()
{
resetValidationDetails();
//set sales order details
DataView dv = dtPickOrdersDetail.DefaultView;
// dv.Sort = "orderNo ASC";
dv.RowFilter = string.Format("pickOrderNo ='{0}'", currentPickOrder);
dtGoods = dv.ToTable();
DataView dv1 = dtGoods.DefaultView;
dtGoods.PrimaryKey = new DataColumn[] { dtGoods.Columns["id"] };
this.gridGoods.DataSource = dv1;
initialGridView2Columns(gridViewGoods);
textEditPickOrderNo.Text = currentPickOrder;
textEditPickOrderNo.SelectAll();
}
private void clearDetails()
{
btnPrint.Enabled = btnOk.Enabled = false;
resetValidationDetails();
this.gridGoods.DataSource = null;
lbCustmer.Text = "";
spinBulkBox.Value = 0;
spinBulkBag.Value = 0;
currentPickOrder = "";
}
private void btnPickOrders_Click(object sender, EventArgs e)
{
getValidationOrders();
}
private void swAutoOrder_Toggled(object sender, EventArgs e)
{
autoOrder = swAutoOrder.IsOn;
btnPickOrders.Enabled = !autoOrder;
if (autoOrder)
{
getValidationOrders();
}
}
private void resetValidationDetails()
{
lastScanBarcode = "";
textEditPickOrderNo.Text = "";
}
private void textEditBarcode_EditValueChanged(object sender, EventArgs e)
{
}
protected new void gridview_GotFocus(object sender, EventArgs e)
{
if (sender == gridViewGoods)
{
switchGridViewRowSelection(gridViewGoods,true);
}
else
{
switchGridViewRowSelection((GridView)sender, true);
}
}
void textEditBarcode_MouseUp(object sender, MouseEventArgs e)
{
//如果鼠标左键操作并且标记存在,则执行全选
if (e.Button == MouseButtons.Left &&textEditPickOrderNo.Tag!=null&& (bool)textEditPickOrderNo.Tag == true)
{
textEditPickOrderNo.SelectAll();
}
//取消全选标记
textEditPickOrderNo.Tag = false;
}
void textEditBarcode_GotFocus(object sender, EventArgs e)
{
textEditPickOrderNo.Tag = true; //设置标记
textEditPickOrderNo.SelectAll(); //注意1
}
private void textEditBarcode_KeyDown(object sender, KeyEventArgs e)
{
if (e.KeyCode != Keys.Enter)
{
return;
}
string pickOrderNo = textEditPickOrderNo.Text;
if (string.IsNullOrEmpty(pickOrderNo))
{
return;
}
lastScanBarcode = pickOrderNo;
// textEditBarcode.BackColor = textEditValidCount.BackColor; ;
dtPickOrdersDetail = pickClient.getPackingDataByPickOrderNo(pickOrderNo);
clearDetails();
foreach(DataRow currentRow in dtPickOrdersDetail.Rows)
{
currentPickOrder = currentRow["pickOrderNo"].ToString();
lbCustmer.Text = currentRow["customerName"].ToString();
// currentWaveNo = currentRow["dpsOrder"].ToString();
this.spinBulkBox.Text = currentRow["bulkBox"].ToString();
this.spinBulkBag.Text = currentRow["bulkBag"].ToString();
btnOk.Enabled = Convert.ToInt32(currentRow["orderState"].ToString()) < (int)enumOutStockPickStatus.;
btnPrint.Enabled = !btnOk.Enabled;
break;
}
resetValidationDetails();
try
{
bindGoodsDetail();
this.gridSaleOrders.DataSource = null;
if (lgOutPickDetail.Expanded)
{
showOrderPickDetail();
}
textEditPickOrderNo.Focus();
textEditPickOrderNo.SelectAll();
}
catch (Exception er)
{
showErrorMsg(er, er.Message);
}
return;
DataRow[] drs = dtPickOrders.Select(string.Format("pickOrderNo ='{0}'", pickOrderNo));
if (drs.Length == 0)
{
return;
}
currentPickOrder = pickOrderNo;
if (!string.IsNullOrEmpty(currentPickOrder))
{
selectedRowIndex = -1;
DataRow dr = dtPickOrders.Rows.Find(currentPickOrder);
if (dr != null)
{
// selectedRowIndex = dtPickOrders.Rows.IndexOf(dr);
selectedRowIndex = 0;
foreach (DataRowView drv in GetGridViewFilteredAndSortedData(gridViewPickOrders))
{
if (drv["pickOrderNo"].ToString().Equals(currentPickOrder))
{
break;
}
selectedRowIndex++;
}
}
else
{
selectedRowIndex = 0;
}
if (selectedRowIndex >= 0 && dtPickOrders.Rows.Count > selectedRowIndex)
{
// gridView1.SelectRow(selectedRowIndex);
int i = selectedRowIndex;
selectedRowIndex = 0;
gridViewPickOrders.FocusedRowHandle = i;
// gridView1.MakeRowVisible(selectedRowIndex);
}
//gridView1.FocusedRowHandle = selectedRowIndex;
}
gridViewGoods.Focus();
}
string tmpOrder = string.Empty;
int boxcnt =0;
int bagcnt = 0;
private void btnPrint_Click(object sender, EventArgs e)
{
try
{
printCodes(currentPickOrder);
}
catch (Exception ex)
{
showErrorMsg(ex.Message);
}
}
printIn reqportPrint = new printIn();
void completeValidation()
{
try
{
//pickClient.completeBulkValidation(tmpOrder, boxcnt, bagcnt, dtGoods);
pickClient.completeSeedsPack(tmpOrder, boxcnt, bagcnt);
// closeClient();
//TODO: print bulk boxs\bags label
//t_tmsStock
printCodes(tmpOrder);
}
catch (Exception ex)
{
closeClient();
showErrorMsg(ex.Message);
}
// lgt.completeBulkValidation(currentPickOrder, dtPickOrdersValidated);
// currentPickOrder = null;
}
private void printCodes(string orderNo)
{
DataTable dt = tmsClient.getTmsStockBulkDetail(orderNo);
reqportPrint.printBulkPacking(dt);
//closeClient();
}
private void textEditValidCount_EditValueChanged(object sender, EventArgs e)
{
}
private void GoodsOutValidationForm_FormClosing(object sender, FormClosingEventArgs e)
{
timer.Stop();
timer.Close();
closeClient();
}
private void lgOutPickDetail_CustomButtonChecked(object sender, DevExpress.XtraBars.Docking2010.BaseButtonEventArgs e)
{
this.gridSaleOrders.DataSource = null;
}
private void lgOutPickDetail_CustomButtonUnchecked(object sender, DevExpress.XtraBars.Docking2010.BaseButtonEventArgs e)
{
showOrderPickDetail();
}
private void combColors_SelectedIndexChanged(object sender, EventArgs e)
{
if (oldDesk == "-1")
{
return;
}
showWaitForm();
this.refreshInterval = 0;
clearDetails();
getValidationOrders();
closeWaitForm();
}
private void spinOrder_EditValueChanged(object sender, EventArgs e)
{
refreshInterval = Convert.ToInt32(spinOrder.Value * 60);
}
private void btnOk_Click(object sender, EventArgs e)
{
boxcnt = Convert.ToInt32(spinBulkBox.Value);
bagcnt = Convert.ToInt32(spinBulkBag.Value);
if (boxcnt + bagcnt == 0)
{
showErrorMsg("请设置零货拼箱、拼袋数量");
return;
}
//save the box/bag info
//handle tran system
//print
//close current order
getCurrentObject();
tmpOrder = currentPickOrder;
Thread completeThread = new Thread(completeValidation);
completeThread.IsBackground = true;
completeThread.Start();
//remove the order from pickorder list
clearDetails();
return;
if (dtPickOrders.Rows.Count < 2)
{
showWaitForm();
try
{
getPickOrders4Validation();
}
catch (Exception ee)
{
LogHelper.WriteLog(typeof(GoodsOutSeedsPackForm), ee);
closeWaitForm();
}
closeWaitForm();
}
else
{
DataRow dr = dtPickOrders.Rows.Find(currentPickOrder);
if (dr != null)
{
dtPickOrders.Rows.Remove(dr);
}
currentPickOrder = null;
this.selectedRowIndex = 0;
loadPickOrders();
}
}
}
}