ldj/winform/出库/GoodsOutValidationQueryForm.cs

1256 lines
48 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.

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;
namespace DeiNiu.wms.win
{
public partial class GoodsOutValidationQueryForm : 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 dtPickOrders4Validation;
private DataTable dtPickOrdersValidated;
private DataTable dtPickDetails;
private int selectedRowIndex = -1;
private WmsOutPickDetail_tmp currentDetail;
string lastScanBarcode = "";
private int desk =1;
Thread threadPreProcess;
bool autoOrder;
string currentPickOrder = "";
public GoodsOutValidationQueryForm()
{
InitializeComponent();
initialControls();
initialBackGroundTasks();
}
#region initialControls
private void initialControls()
{
initialComboBoxes();
// initialPagerControls();
initialDataGrid();
initialQueryInput();
setValidationRule();
textEditBarcode.GotFocus += new EventHandler(textEditBarcode_GotFocus);
textEditBarcode.MouseUp += new MouseEventHandler(textEditBarcode_MouseUp);
}
private void initialBackGroundTasks()
{
swAutoOrder.IsOn = WmsConstants.AUTO_SYNC_SALE_ORDER;
autoOrder = swAutoOrder.IsOn;
// lgOutReq.UpdateUIDelegate += updateValidationList;
if (autoOrder)
{
this.getValidationOrders();
}
}
private void initialComboBoxes()
{
}
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(gridView1,false);
//setupGridView(gridView2, false,false);
//setupGridView(gridView3, false,false);
// gridviewGoodsType.PopulateColumns();
gridView1.Columns.Clear();
// gridviewGoodsType.Columns.Remove(gridviewGoodsType.Columns["DealerPrice"]);
GridColumn myCol0 = new GridColumn() { Caption = "ID", Visible = true, FieldName = "id" };
myCol0.Visible = false;
this.gridView1.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.gridView1.Columns.Add(myCol1);
// this.gridView1.Columns.Add(myCol6);
// this.gridView1.Columns.Add(myCol3);
this.gridView1.Columns.Add(myCol4);
this.gridView1.Columns.Add(myCol5);
//to show bottom scroll bar
gridView1.OptionsView.ColumnAutoWidth = false;
gridView1.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 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 = WmsOutPickDetail_error.fields.orderNo.ToString() };
GridColumn myCol26 = new GridColumn() { Caption = "条码", Visible = true, FieldName = "barCode" };
if (gridview == gridViewSaleOrders)
{
gridview.Columns.Add(myCol25);
}
else
{
gridview.Columns.Add(myCol26);
}
gridview.Columns.Add(myCol2);
gridview.Columns.Add(myCol14);
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();
}
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 myCol20 = new GridColumn() { Caption = "波次", Visible = true, FieldName = WmsOutPickLable.fields.waveOrder.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.orderNo.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(myCol5);
gridview.Columns.Add(myCol17);
gridview.Columns.Add(myCol24);
gridview.Columns.Add(myCol7);
gridview.Columns.Add(myCol3);
gridview.Columns.Add(myCol15);
gridview.Columns.Add(myCol16);
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(myCol12);
gridview.Columns.Add(myCol1);
gridview.Columns.Add(myCol18);
*/
//to show bottom scroll bar
gridview.OptionsView.ColumnAutoWidth = false;
gridview.BestFitColumns();
// gridView2.Focus();
}
#endregion
/// <summary>
/// 预处理,按客户分拆订单,生成分拣单,并出库
/// </summary>
private void getValidationOrders()
{
threadPreProcess = new Thread(this.getPickOrders4Validation);
threadPreProcess.IsBackground = true;
threadPreProcess.Start();
}
private void getPickOrders4Validation()
{
dsPickOrders = lgt.getPickRequest4BulkValidate(desk);
dtPickOrders = dsPickOrders.Tables[1];
dtPickOrdersDetail = dsPickOrders.Tables[0];
dtPickOrdersDetail.PrimaryKey = new DataColumn[] { dtPickOrdersDetail.Columns["id"] };
updateValidationList();
}
//完成任务时需要调用
delegate void loadNewPickOrders();
private void updateValidationList()
{
//还可以进行其他的一些完任务完成之后的逻辑处理
if (InvokeRequired)
{
this.Invoke(new loadNewPickOrders(delegate()
{
swAutoOrder.Enabled = true;
btnPickOrders.Enabled = !autoOrder;
this.loadPickOrders();
}));
}
else
{
swAutoOrder.Enabled = true;
btnPickOrders.Enabled = !autoOrder;
this.loadPickOrders();
}
if (autoOrder)
{
Int32 milseconds = Convert.ToInt32( 1000*spinOrder.Value * 60);
Thread.CurrentThread.Join(milseconds);
//继续后台处理
getValidationOrders();
}
}
/// <summary>
/// 更新拣选明细
/// </summary>
private void updatePickDetails() {
gridPickDetails.DataSource = null;
Thread threadPickdetail = new Thread(this.getPickOrdersPickDetail);
threadPickdetail.IsBackground = true;
threadPickdetail.Start();
}
private void getPickOrdersPickDetail()
{
dtPickDetails = lgt.getWmsOutPickRequest. getPickDetailByPickOrderNo(this.currentPickOrder).Tables[0];
if (InvokeRequired)
{
this.Invoke(new loadNewPickOrders(delegate()
{
bindPickDetails();
}));
}
else
{
bindPickDetails();
}
}
private void bindPickDetails()
{
gridPickDetails.DataSource = dtPickDetails;
initialGridView3Columns(gridViewPickDetails);
}
/// <summary>
/// loading waiting pick orders
/// </summary>
private int pagerQuery()
{
// initialRequestOrders();
//this.gridviewGoodsType.DataSource = lgt.GetAllActiveData().Tables[0].DefaultView;
showWaitForm();
try
{
// this.splashScreenManager1.ShowWaitForm();
string query = string.Format("{0} =#'{1}';", WmsOutRequest.fields.orderType.ToString(), (int)enumOutOrderType.);
query += string.Format("{0} =#'{1}';", WmsOutRequest.fields.state.ToString(), (int) enumOutStockRequestStatus. );
bool isQueryNotChanged = lastQuery.Equals(query);
this.pager1.PageCurrent = isQueryNotChanged ? this.pager1.PageCurrent : 1; //根据查询条件的变化给pager赋值
int start = (pager1.PageSize * (pager1.PageCurrent - 1) + 1);
int end = (pager1.PageSize * pager1.PageCurrent);
lastQuery = query;
DataSet ds = lgt.Query(query, start, end);
dtPickOrders = ds.Tables[0];
int cnt = Convert.ToInt32(ds.Tables[1].Rows[0][0].ToString());
//dt = lgt.Query(query, start, end); //string.IsNullOrEmpty(query) ? lgt.GetGoodType.getAllData(start, end) : lgt.g;
dtPickOrders.PrimaryKey = new DataColumn[] { dtPickOrders.Columns["pickOrderNo"] };
bool firstLoad = !isQueryNotChanged || this.gridControl1.DataSource == null;
this.gridControl1.DataSource = dtPickOrders.DefaultView;
initialDataGridColumns();
//update selected row index to the last updated one.
if (false && !string.IsNullOrEmpty( currentPickOrder))
{
selectedRowIndex = -1;
DataRow dr = dtPickOrders.Rows.Find(currentPickOrder);
if (dr != null)
{
selectedRowIndex = dtPickOrders.Rows.IndexOf(dr);
}
if (selectedRowIndex >= 0 && dtPickOrders.Rows.Count > selectedRowIndex)
{
// gridView1.SelectRow(selectedRowIndex);
gridView1.FocusedRowHandle = selectedRowIndex;
// gridView1.MakeRowVisible(selectedRowIndex);
}
//gridView1.FocusedRowHandle = selectedRowIndex;
}else
// if (firstLoad)
{
gridView1.FocusedRowHandle = 0;
gridView1.SelectRow(0);
setCurrentRequestDetail();
}
closeWaitForm();
return cnt;
}
catch (Exception e)
{
showErrorMsg(e.Message);
}
closeWaitForm();
return 0;// lgt.getRowCount(query);
// return lgt.GetGoodType.QueryCount();
}
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;
}
/// <summary>
/// 分页控件产生的事件
/// </summary>
private int pager_EventPaging(DeiNiu.Controls.pager.EventPagingArg e)
{
selectedRowIndex = 0; //reset currentRowIndex
return pagerQuery();
}
private void initialPagerControls()
{
pager1.MaximumSize = new Size(0, 20);
pager1.EventPaging += new DeiNiu.Controls.pager.EventPagingHandler(pager_EventPaging);
#region DataGridView与Pager控件绑定
this.pager1.PageCurrent = 1;//当前页为第一页
pager1.PageSize = 200;//每页行数
this.pager1.Bind();//绑定
#endregion
}
private void gridView1_FocusedRowObjectChanged(object sender, FocusedRowObjectChangedEventArgs e)
{
if (gridView1.FocusedRowHandle < 0 || gridView1.FocusedRowHandle == selectedRowIndex || isDataSourceChanged && selectedRowIndex >0)
{
if (gridView1.IsGroupRow(e.RowHandle)) //set first row of group selected
{
selectedRowIndex = gridView1.GetChildRowHandle(e.RowHandle, 0);
setCurrentRequestDetail();
}
isDataSourceChanged = false;
return; ;
}
isDataSourceChanged = false;
selectedRowIndex = gridView1.FocusedRowHandle;
// showErrorMsg("selection:"+ selectedRowIndex);
setCurrentRequestDetail();
}
private void clearInputs()
{
}
bool isDataSourceChanged = false;
private void gridView1_DataSourceChanged(object sender, EventArgs e)
{
isDataSourceChanged = true;
if (selectedRowIndex >= 0 && dtPickOrders.Rows.Count > selectedRowIndex)
{
gridView1.FocusedRowHandle = selectedRowIndex;
gridView1.MakeRowVisible(selectedRowIndex);
}
}
private void btnDelete_Click(object sender, EventArgs e)
{
}
protected void query()
{
// pager1.Bind();
}
private void loadPickOrders()
{
// showWaitForm();
try
{
gridControl1.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"] };
bool firstLoad = this.gridControl1.DataSource == null;
this.gridControl1.DataSource = dtPickOrders.DefaultView;
initialDataGridColumns();
//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);
}
if (selectedRowIndex >= 0 && dtPickOrders.Rows.Count > selectedRowIndex)
{
// gridView1.SelectRow(selectedRowIndex);
gridView1.FocusedRowHandle = selectedRowIndex;
// gridView1.MakeRowVisible(selectedRowIndex);
}
//gridView1.FocusedRowHandle = selectedRowIndex;
}
else
// if (firstLoad)
{
gridView1.FocusedRowHandle = 0;
gridView1.SelectRow(0);
setCurrentRequestDetail();
}
}
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.Message);
}
finally
{
// WaitFormService.Close();
closeWaitForm();
}
}
private bool getCurrentObject()
{
if (selectedRowIndex <0 || selectedRowIndex >= dtPickOrders.Rows.Count)
{
return false;
}
// DataRow currentRow = dtPickOrders.Rows[selectedRowIndex];
DataRowView currentRow = (DataRowView)(GetGridViewFilteredAndSortedData(gridView1)[selectedRowIndex]);
// selectedRequest = new WmsOutPickRequest(currentRow);
currentPickOrder = currentRow["pickOrderNo"].ToString();
lbPickOrderNo.Text = currentPickOrder;
lbCustmer.Text = currentRow["customerName"].ToString();
return true;
}
private void btnQuery_Click(object sender, EventArgs e)
{
loadPickOrders();
}
private void gridView1_SelectionChanged(object sender, DevExpress.Data.SelectionChangedEventArgs e)
{
if (gridView1.FocusedRowHandle <0 || gridView1.FocusedRowHandle == selectedRowIndex)
{
return;
}
selectedRowIndex = gridView1.FocusedRowHandle;
// showErrorMsg("selection:"+ selectedRowIndex);
setCurrentRequestDetail();
}
private void initialDataGrid()
{
gridView1.OptionsSelection.MultiSelect = false;//按shift / control 多选
this.gridView1.OptionsBehavior.AutoPopulateColumns = false;
this.gridView1.FocusRectStyle = DevExpress.XtraGrid.Views.Grid.DrawFocusRectStyle.RowFocus;
this.gridView1.FocusRectStyle = DevExpress.XtraGrid.Views.Grid.DrawFocusRectStyle.CellFocus;
this.gridView1.OptionsBehavior.Editable = false;
this.gridView1.OptionsSelection.EnableAppearanceFocusedCell = false;
this.gridView1.FocusedRowObjectChanged += new DevExpress.XtraGrid.Views.Base.FocusedRowObjectChangedEventHandler(this.gridView1_FocusedRowObjectChanged);
this.gridView1.DataSourceChanged += new System.EventHandler(this.gridView1_DataSourceChanged);
//show line number
this.gridView1.IndicatorWidth = 40;
this.gridView1.CustomDrawRowIndicator += new DevExpress.XtraGrid.Views.Grid.RowIndicatorCustomDrawEventHandler(gridView_CustomDrawRowIndicator);
this.gridViewValidated.IndicatorWidth = 40;
this.gridViewValidated.CustomDrawRowIndicator += new DevExpress.XtraGrid.Views.Grid.RowIndicatorCustomDrawEventHandler(gridView_CustomDrawRowIndicator);
this.gridViewSaleOrders .IndicatorWidth = 40;
this.gridViewSaleOrders.CustomDrawRowIndicator += new DevExpress.XtraGrid.Views.Grid.RowIndicatorCustomDrawEventHandler(gridView_CustomDrawRowIndicator);
gridViewSaleOrders.OptionsSelection.EnableAppearanceFocusedCell = false;
this.gridViewPickDetails.IndicatorWidth = 40;
this.gridViewPickDetails.CustomDrawRowIndicator += new DevExpress.XtraGrid.Views.Grid.RowIndicatorCustomDrawEventHandler(gridView_CustomDrawRowIndicator);
gridViewPickDetails.OptionsSelection.MultiSelect = false;
gridViewPickDetails.OptionsSelection.EnableAppearanceFocusedCell = false;
this.gridView4Valid.IndicatorWidth = 40;
this.gridView4Valid.CustomDrawRowIndicator += new DevExpress.XtraGrid.Views.Grid.RowIndicatorCustomDrawEventHandler(gridView_CustomDrawRowIndicator);
this.gridView4Valid.FocusedRowObjectChanged += new DevExpress.XtraGrid.Views.Base.FocusedRowObjectChangedEventHandler(this.gridView4Validation_FocusedRowObjectChanged);
gridView4Valid.OptionsSelection.MultiSelect = false;
gridView4Valid.FocusRectStyle = DevExpress.XtraGrid.Views.Grid.DrawFocusRectStyle.RowFocus;
gridView4Valid.OptionsSelection.EnableAppearanceFocusedCell = false;
this.gridViewValidated.FocusRectStyle = DevExpress.XtraGrid.Views.Grid.DrawFocusRectStyle.RowFocus;
gridViewValidated.OptionsSelection.EnableAppearanceFocusedCell = false;
gridViewValidated.OptionsSelection.MultiSelect = false;
gridViewValidated.RowCellStyle += gridView_RowCellStyle;
gridView1.RowCellStyle += gridView_RowCellStyle;
}
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.ToInt16(e.DisplayText);
e.DisplayText = pickDetailStatus[display];
}
catch
{
return;
}
}
// e.DisplayText = pickDetailStatus.ContainsKey(display) ? pickDetailStatus[display] : display+"";
}
}
}
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")
{
string a = e.CellValue.ToString();
string b = e.DisplayText;
if (b.Equals("未分配货位"))
{
e.Appearance.ForeColor = Color.Red;
e.Appearance.DrawString(e.Cache, e.DisplayText, r);
e.Handled = true;
}
}
}
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)["state"].ToString().Trim();
if (state == "0")
{
return;
}
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 alert = new DevExpress.Utils.AppearanceDefault(Color.Red, Color.White );
DevExpress.Utils.AppearanceDefault passedFocus = new DevExpress.Utils.AppearanceDefault(Color.White, Color.Gray);
DevExpress.Utils.AppearanceDefault passed = new DevExpress.Utils.AppearanceDefault(Color.Gray,Color.White);
if (state == "1")
{
rowStyle = isFocused ? passedFocus : passed;
}
else if (state == "2")
{
rowStyle = isFocused ? alertFocus : alert;
}
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
{
DataView dv = dtPickOrdersDetail.DefaultView;
dv.Sort = "orderNo ASC";
dv.RowFilter = string.Format("pickOrderNo ='{0}'", currentPickOrder);
this.gridSaleOrders.DataSource = dv;
initialGridView2Columns(gridViewSaleOrders);
bindValidationTables();
//set pick details
updatePickDetails();
}
catch (Exception e)
{
showErrorMsg(e.Message);
}
// closeWaitForm();
}
private void bindValidationTables()
{
resetValidationDetails();
//set sales order details
DataView dv = dtPickOrdersDetail.DefaultView;
dv.Sort = "orderNo ASC";
dv.RowFilter = string.Format("pickOrderNo ='{0}'", currentPickOrder);
dtPickOrders4Validation = dv.ToTable();
// dtPickOrders4Validation.PrimaryKey = new DataColumn[] { dtPickOrders4Validation.Columns["barCode"] };
DataView dv1 = dtPickOrders4Validation.DefaultView;
dv1.RowFilter = string.Format("bulkCount>0 and state <{0}", (int)enumOutStockDetailStatus.);
this.grid4Valid.DataSource = dv1;
initialGridView2Columns(gridView4Valid);
dtPickOrders4Validation = dv1.ToTable();
dtPickOrders4Validation.PrimaryKey = new DataColumn[] { dtPickOrders4Validation.Columns["id"] };
btnPrint .Enabled = dtPickOrders4Validation.Rows.Count == 0;
dtPickOrdersValidated = dv.ToTable();
DataView dv2 = dtPickOrdersValidated.DefaultView;
dv2.RowFilter = string.Format("bulkCount>0 and state >={0}", (int)enumOutStockDetailStatus.);
this.gridValidated.DataSource = dv2;
gridViewValidated.FocusedRowHandle = -1;
gridViewValidated.SelectRow(-1);
dtPickOrdersValidated = dv2.ToTable();
dtPickOrdersValidated.PrimaryKey = new DataColumn[] { dtPickOrdersValidated.Columns["id"] };
initialGridView2Columns(gridViewValidated);
}
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 ribbon_Click(object sender, EventArgs e)
{
}
private void gridView1_FocusedRowChanged(object sender, FocusedRowChangedEventArgs e)
{
}
private void resetValidationDetails()
{
lastScanBarcode = "";
selectedValidationItem = -1;
currentDetail = null;
lbGoodsName.Text ="";
this.lbBatch.Text = ""; ;
this.lbManufacturer.Text = "";
this.lbPickCount.Text = "";
this.lbSaleCount.Text = "";
this.textEditValidCount.Text = "";
this.textEditValidtionRemark.Text = "";
// this.comValidException.SelectedIndex = Convert.ToInt16( dr[WmsOutPickDetail.fields.validReason.ToString()].ToString());
this.lbProductDate.Text = "";
this.lbValidDate.Text = "";
this.lbType.Text = "";
this.lbUnit.Text = "";
this.checkEditPass.Checked = false;
textEditBarcode.Text = "";
this.btnValidateItem.Enabled = false;
}
// gridview4validate
int selectedValidationItem = -1;
private void gridView4Validation_FocusedRowObjectChanged(object sender, FocusedRowObjectChangedEventArgs e)
{
if (this.gridView4Valid.FocusedRowHandle < 0 || gridView4Valid.FocusedRowHandle == selectedValidationItem)
{
if (gridView4Valid.IsGroupRow(e.RowHandle)) //set first row of group selected
{
selectedValidationItem = gridView4Valid.GetChildRowHandle(e.RowHandle, 0);
setCurrentValidationDetail();
gridViewValidated.FocusedRowHandle = -1;
gridViewValidated.SelectRow(-1);
}
return;
}
selectedValidationItem = gridView4Valid.FocusedRowHandle;
setCurrentValidationDetail();
gridViewValidated .FocusedRowHandle = -1;
gridViewValidated.SelectRow(-1);
}
private void setCurrentValidationDetail()
{
if (selectedValidationItem < 0 || selectedValidationItem >= dtPickOrders4Validation.Rows.Count)
{
return;
}
// DataRow dr = dtPickOrders4Validation.Rows[selectedValidationItem];
DataRowView dr = (DataRowView)(GetGridViewFilteredAndSortedData(gridView4Valid)[selectedValidationItem]);
currentDetail = new WmsOutPickDetail_tmp(dr.Row);
lbGoodsName.Text = dr[WmsGoods.exfields.goodsName.ToString()].ToString(); ;
this.lbBatch .Text = dr["batch"].ToString(); ;
this.lbManufacturer.Text = dr[WmsGoods.exfields.manufacturer.ToString()].ToString();
this.lbPickCount.Text = dr[WmsOutPickDetail.fields.bulkCount.ToString()].ToString();
this.lbSaleCount.Text = dr[WmsOutPickDetail.fields.bulkCount.ToString()].ToString();
this.textEditValidCount.Text = dr[WmsOutPickDetail.fields.bulkCount.ToString()].ToString();
this.textEditValidtionRemark.Text = dr[WmsOutPickDetail.fields.validRemark.ToString()].ToString();
// this.comValidException.SelectedIndex = Convert.ToInt16( dr[WmsOutPickDetail.fields.validReason.ToString()].ToString());
this.lbProductDate.Text = dr[WmsOutPickDetail.fields.productDate.ToString()].ToString();
this.lbValidDate.Text = dr[WmsOutPickDetail.fields.validDate.ToString()].ToString();
this.lbType.Text = dr[WmsGoods.exfields.type.ToString()].ToString();
this.lbUnit.Text = dr[WmsGoods.exfields.unit.ToString()].ToString();
this.checkEditPass.Checked = true;
enumOutStockPickStatus state = (enumOutStockPickStatus)Convert.ToInt16(dr["bulkPickState"].ToString());
if(state == enumOutStockPickStatus.){
this.checkEditPass.Checked = false;
}
textEditBarcode.Text = dr[WmsGoods.exfields.barcode.ToString()].ToString();
//textEditBarcode.SelectedText = textEditBarcode.Text;
//textEditBarcode.SelectionLength = textEditBarcode.Text.Length;
textEditBarcode.Focus();
textEditBarcode.SelectAll();
this.btnValidateItem.Enabled = true;
}
private void textEditBarcode_EditValueChanged(object sender, EventArgs e)
{
}
private void btnValidateItem_Click(object sender, EventArgs e)
{
validation();
}
private void validation()
{
if (currentDetail == null)
{
return;
}
currentDetail.bulkPickState = checkEditPass.Checked ? (int)enumOutStockPickStatus. : (int)enumOutStockPickStatus.;
currentDetail.validRemark = textEditValidtionRemark.Text.Trim();
currentDetail.validReason = comValidException.SelectedIndex;
currentDetail.confirmedCount = Convert.ToDecimal(textEditValidCount.Text.Trim());
Thread updateValidation = new Thread(updateValidationItem);
updateValidation.IsBackground = true;
updateValidation.Start();
DataRow dr = this.dtPickOrdersDetail.Rows.Find(currentDetail.ID);
if (dr != null)
{
dr["state"] = currentDetail.state;
}
bindValidationTables();
}
private void updateValidationItem()
{
if (currentDetail == null)
{
return;
}
currentDetail.Update();
}
private void gridView4Valid_KeyDown(object sender, KeyEventArgs e)
{
if(e.KeyCode == Keys.Enter){
validation();
}
}
private void textEditBarcode_Properties_Enter(object sender, EventArgs e)
{
textEditBarcode.SelectAll();
}
void textEditBarcode_MouseUp(object sender, MouseEventArgs e)
{
//如果鼠标左键操作并且标记存在,则执行全选
if (e.Button == MouseButtons.Left && (bool)textEditBarcode.Tag == true)
{
textEditBarcode.SelectAll();
}
//取消全选标记
textEditBarcode.Tag = false;
}
void textEditBarcode_GotFocus(object sender, EventArgs e)
{
textEditBarcode.Tag = true; //设置标记
textEditBarcode.SelectAll(); //注意1
}
private void textEditBarcode_KeyDown(object sender, KeyEventArgs e)
{
if (e.KeyCode != Keys.Enter)
{
return;
}
string barcode = textEditBarcode.Text;
if (string.IsNullOrEmpty(barcode))
{
return;
}
if(lastScanBarcode.Equals(barcode)){
validation();
}
lastScanBarcode = barcode;
DataRow[] drs = dtPickOrders4Validation.Select(string.Format("barcode ='{0}'", barcode)); ;
if (drs.Length == 0)
{
setCurrentValidationDetail();
return;
}
textEditBarcode.BackColor = textEditValidCount.BackColor; ;
if (drs.Length > 1)
{
textEditBarcode.BackColor = Color.OrangeRed;
}
DataRow dr = drs[0];
if (drs != null)
{
selectedValidationItem = dtPickOrders4Validation.Rows.IndexOf(dr);
}
if (selectedValidationItem >= 0 && dtPickOrders4Validation.Rows.Count > selectedValidationItem)
{
this.gridView4Valid.FocusedRowHandle = selectedValidationItem;
}
setCurrentValidationDetail();
}
private void btnPrint_Click(object sender, EventArgs e)
{
//save the box/bag info
//handle tran system
//print
//close current order
Thread completeThread = new Thread(completeValidation);
completeThread.IsBackground = true;
completeThread.Start();
//remove the order from pickorder list
if (dtPickOrders.Rows.Count < 2)
{
showWaitForm();
try
{
getPickOrders4Validation();
}
catch (Exception ee)
{
LogHelper.WriteLog(typeof(GoodsOutValidationForm), ee);
closeWaitForm();
}
closeWaitForm();
}
else
{
DataRow dr = dtPickOrders.Rows.Find(currentPickOrder);
dtPickOrders.Rows.Remove(dr);
loadPickOrders();
}
}
void completeValidation()
{
}
}
}