925 lines
		
	
	
		
			28 KiB
		
	
	
	
		
			C#
		
	
	
	
		
		
			
		
	
	
			925 lines
		
	
	
		
			28 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 Microsoft.Tools.ServiceModel; | |||
|  | using DeiNiu.Wms.CE.Util; | |||
|  |   | |||
|  | 
 | |||
|  | namespace DeiNiu.Wms.CE | |||
|  | { | |||
|  |     public partial class StockReceive   : basicForm  | |||
|  |     { | |||
|  | 
 | |||
|  |         string preInOrder,goodsId ,owner= ""; | |||
|  |         DataTable dtPreIn,dtBulks; | |||
|  |         decimal bigCount, maxReceiveCnt ,maxValidCnt= 0; | |||
|  |         int  expiringDays =0; | |||
|  |         bool canReceive, canValid; | |||
|  |         decimal packCount = 0, bulkCount = 0; | |||
|  |         public StockReceive() | |||
|  |         { | |||
|  |             InitializeComponent(); | |||
|  |             //client = new WmsOutPickRequestClient(WcfHelp.getBasicBinding(), WcfHelp.getEndpoint("WmsOutPickRequestService")); | |||
|  |         } | |||
|  | 
 | |||
|  | 
 | |||
|  | 
 | |||
|  |         private void StockReceive_Load(object sender, EventArgs e) | |||
|  |         { | |||
|  |             initialData(); | |||
|  |   | |||
|  |         } | |||
|  |         void setDebug() | |||
|  |         { | |||
|  |           //#if Debug | |||
|  |            // textPreInNo.Text = "PREIN2021072600000510"; | |||
|  |           //  this.txtValidGdBarcod.Text = "0000100001"; | |||
|  |           //  this.txtReceiveGdBarcod.Text = "0000100001"; | |||
|  |           // #endif | |||
|  |         } | |||
|  |          void initialData() | |||
|  |         { | |||
|  |             canReceive = WmsConstants.auths.Contains(WmsConstants.PERMISSION_RECEIVE); | |||
|  |             canValid = WmsConstants.auths.Contains(WmsConstants.PERMISSION_VALID); | |||
|  |             btnReceive.Enabled = canReceive; | |||
|  |             btnValid.Enabled = canValid; | |||
|  | 
 | |||
|  |             dtPreIn = null; | |||
|  |             initialFirstTabData(); | |||
|  |             initialSecondTabData(); | |||
|  |             initialThirdTabData(); | |||
|  |             initialFourthTabData(); | |||
|  |             textPreInNo.Focus(); | |||
|  |             //tb1.SelectedIndex = 1; | |||
|  |             dtpValidTo.Value = dtpProduct.Value.AddDays(expiringDays); | |||
|  |             setDebug(); | |||
|  |          | |||
|  |         } | |||
|  | 
 | |||
|  | 
 | |||
|  |          void initialFirstTabData() | |||
|  |          { | |||
|  | 
 | |||
|  |              textPreInNo.Focus(); | |||
|  | 
 | |||
|  |              lbvender.Text = lbVeNo.Text = lbPhone.Text = ""; | |||
|  |   | |||
|  |          } | |||
|  | 
 | |||
|  |          void initialSecondTabData() | |||
|  |          { | |||
|  |               | |||
|  |              | |||
|  |              goodsId = ""; | |||
|  |              lbPackcnt2.Text = txtReceiveGdBarcod.Text = lbGoodsName1.Text = lbPackcnt.Text = lbUnit.Text = lbArriveNum.Text = lbNotReceived.Text = txtWendu.Text = | |||
|  |                  txtReceivePkgNum.Text = txtBulkCnt.Text  = ""; | |||
|  |              chkZhitong.Checked = false; | |||
|  |              chkNoQc.Checked = false; | |||
|  |              btnReceive.Enabled = false; | |||
|  |              rdReceive.Checked = true; | |||
|  |              rdRefuse.Checked = false; | |||
|  |              txtReceiveGdBarcod.Focus(); | |||
|  |              setDebug(); | |||
|  |          } | |||
|  |          void initialThirdTabData() | |||
|  |          { | |||
|  |              packCount =   bulkCount = 0; | |||
|  |              btnValid.Enabled = false; | |||
|  |              goodsId = ""; | |||
|  |               | |||
|  |            txtValidGdBarcod.Text=  lbExpiryDays.Text = lbGoodsName2.Text = txtBatchBoxCnt.Text = | |||
|  |                  lbToValidCnt.Text = txtBatch.Text = txtSeedsNum.Text = lbSeedsCnt.Text = ""; | |||
|  |              rdValidPass.Checked = true; | |||
|  |              rdValidFaild.Checked = false; | |||
|  |              txtValidGdBarcod.SelectAll(); | |||
|  |              txtValidGdBarcod.Focus(); | |||
|  |              chkDouble.Checked = false; | |||
|  |              setDebug(); | |||
|  | 
 | |||
|  |          } | |||
|  |          void initialFourthTabData() | |||
|  |          { | |||
|  |             // btnInPlate.Enabled = false;  | |||
|  |             // txtPlateId.Focus(); | |||
|  |            //  txtSkuId.Text = txtPlateId.Text =   ""; | |||
|  |              dgResult.DataSource = null; | |||
|  | 
 | |||
|  |          } | |||
|  | 
 | |||
|  |         private void dg1_DoubleClick(object sender, EventArgs e) | |||
|  |         { | |||
|  |             if (dg1.DataSource == null || dg1.CurrentRowIndex < 0) | |||
|  |             { | |||
|  |                 return; | |||
|  |             } | |||
|  |           //  preInOrder = dg1[dg1.CurrentRowIndex, 0].ToString(); | |||
|  |           //  showTranPickRequests(); | |||
|  |         } | |||
|  | 
 | |||
|  | 
 | |||
|  |         /* | |||
|  |         void showTranPickRequests() | |||
|  |         { | |||
|  | 
 | |||
|  | 
 | |||
|  | 
 | |||
|  |             if (dg1.DataSource == null) | |||
|  |             { | |||
|  |                 return; | |||
|  |             } | |||
|  |             if (dg1.CurrentRowIndex < 0) | |||
|  |             { | |||
|  |                 return; | |||
|  |             } | |||
|  |             if (string.IsNullOrEmpty(preInOrder)) | |||
|  |             { | |||
|  |                 return; | |||
|  |             } | |||
|  | 
 | |||
|  |             lbGoodsName1.Text = preInOrder; | |||
|  |             Cursor.Current = System.Windows.Forms.Cursors.WaitCursor; | |||
|  |            | |||
|  |             try | |||
|  |             { | |||
|  |                 dtBulks = client.getTransRequestsDetail(preInOrder,0); | |||
|  |                 Cursor.Current = System.Windows.Forms.Cursors.Default; | |||
|  |             } | |||
|  |             catch (Exception er) | |||
|  |             { | |||
|  |                 Cursor.Current = System.Windows.Forms.Cursors.Default; | |||
|  |                 MessageBox.Show("发生错误:" + er.Message); | |||
|  | 
 | |||
|  |                 return; | |||
|  |             } | |||
|  | 
 | |||
|  | 
 | |||
|  |             bindBg2(dtBulks); | |||
|  | 
 | |||
|  |             tb1.SelectedIndex = 1; | |||
|  | 
 | |||
|  |             txtReceiveGdBarcod.Focus(); | |||
|  | 
 | |||
|  |             lbGoodsName1.Text = dtBulks.Rows.Count> 0 ? preInOrder :""; | |||
|  |         } | |||
|  |         */ | |||
|  | 
 | |||
|  | 
 | |||
|  | 
 | |||
|  |         private void tb1_SelectedIndexChanged(object sender, EventArgs e) | |||
|  |         { | |||
|  | 
 | |||
|  |             if (tb1.SelectedIndex == 0) | |||
|  |             { | |||
|  |                // bindBg1(); | |||
|  |                 textPreInNo.Focus(); | |||
|  |             } | |||
|  |             else if(tb1.SelectedIndex == 1) | |||
|  |             { | |||
|  |                 txtReceiveGdBarcod.Focus(); | |||
|  |             } | |||
|  |             else if (tb1.SelectedIndex == 2) | |||
|  |             { | |||
|  |                 txtShelfNo.Focus(); | |||
|  |             } | |||
|  |             else if (tb1.SelectedIndex == 3) | |||
|  |             { | |||
|  |                 queryValidResult(); | |||
|  |             } | |||
|  |         } | |||
|  | 
 | |||
|  |         void queryValidResult() | |||
|  |         { | |||
|  |             if (dtPreIn != null && !String.IsNullOrEmpty(preInOrder)) | |||
|  |             { | |||
|  |                 DataTable dt; | |||
|  |                 try | |||
|  |                 { | |||
|  |                     bool canSeePartsTasks = WmsConstants.auths.Contains(WmsConstants.SPECIAL_ALL_PARTION_TASKS); | |||
|  |                     dt = client.getPreValidResult(preInOrder, "", LoginInfo.UserId, LoginInfo.Token,canSeePartsTasks); | |||
|  |                    dgResult.DataSource = dt;   | |||
|  | 
 | |||
|  |                 } | |||
|  |                 catch (Exception er) | |||
|  |                 { | |||
|  |                     Cursor.Current = System.Windows.Forms.Cursors.Default; | |||
|  |                     | |||
|  |                     showErrorMsg(er, "发生错误"); | |||
|  |                     return; | |||
|  |                 } | |||
|  |                 Cursor.Current = System.Windows.Forms.Cursors.Default; | |||
|  | 
 | |||
|  |                 dgResult.TableStyles.Clear(); | |||
|  |                 DataGridTableStyle ts = new DataGridTableStyle(); | |||
|  |                 ts.MappingName = dt.TableName; | |||
|  |                 dgResult.TableStyles.Add(ts); | |||
|  |                  | |||
|  |                 ts.GridColumnStyles[0].Width = 65; | |||
|  |                 ts.GridColumnStyles[1].Width = 85; | |||
|  |                 ts.GridColumnStyles[2].Width = 35; | |||
|  |                 ts.GridColumnStyles[3].Width = 35; | |||
|  |                 ts.GridColumnStyles[4].Width = 0; | |||
|  |                 ts.GridColumnStyles[5].Width = 0; | |||
|  |                 ts.GridColumnStyles[6].Width = 60; | |||
|  |                 ts.GridColumnStyles[7].Width = 0; | |||
|  |                 ts.GridColumnStyles[8].Width = 0; | |||
|  |             } | |||
|  |         } | |||
|  |         private void dg1_CurrentCellChanged(object sender, EventArgs e) | |||
|  |         { | |||
|  | 
 | |||
|  |         } | |||
|  | 
 | |||
|  |         private void bindPreIn(string preInNo) | |||
|  |         { | |||
|  |       | |||
|  |             Cursor.Current = System.Windows.Forms.Cursors.WaitCursor; | |||
|  |             initialData(); | |||
|  |             try | |||
|  |             { | |||
|  |                 dtPreIn = client.getPreInDetail(preInNo,LoginInfo.UserId,LoginInfo.Token); | |||
|  |                 dg1.DataSource = dtPreIn; | |||
|  |                 if (dtPreIn.Rows.Count > 0) | |||
|  |                 { | |||
|  |                     lbvender.Text = dtPreIn.Rows[0]["供应商名称"].ToString(); | |||
|  |                     lbVeNo.Text = dtPreIn.Rows[0]["车牌"].ToString(); | |||
|  |                     lbPhone.Text = dtPreIn.Rows[0]["电话"].ToString(); | |||
|  |                 } | |||
|  |                  | |||
|  |             } | |||
|  |             catch (Exception er) | |||
|  |             { | |||
|  |                 Cursor.Current = System.Windows.Forms.Cursors.Default;  | |||
|  |                // MessageBox.Show("发生错误:" +getExceptionMsg( er)); | |||
|  |                 showErrorMsg(er, "发生错误"); | |||
|  |                 return; | |||
|  |             } | |||
|  | 
 | |||
|  |             | |||
|  |             Cursor.Current = System.Windows.Forms.Cursors.Default;  | |||
|  |            | |||
|  |             dg1.TableStyles.Clear(); | |||
|  |             DataGridTableStyle ts = new DataGridTableStyle(); | |||
|  |             ts.MappingName = dtPreIn.TableName; | |||
|  |             dg1.TableStyles.Add(ts); | |||
|  |             //  [商品名称]  [上架数量] ,[预到数量] ,[验收数量]  ,[温度],[车牌] ,[运单] ,[电话] | |||
|  |             ts.GridColumnStyles[0].Width = 55; | |||
|  |             ts.GridColumnStyles[1].Width = 35; | |||
|  |             ts.GridColumnStyles[2].Width = 35; | |||
|  |             ts.GridColumnStyles[3].Width = 35; | |||
|  |             ts.GridColumnStyles[4].Width = 35; | |||
|  |             /*ts.GridColumnStyles[5].Width = 0; | |||
|  |             ts.GridColumnStyles[6].Width = 0; | |||
|  |             ts.GridColumnStyles[9].Width = 80;   | |||
|  |             ts.GridColumnStyles[11].Width =70; | |||
|  |              * */ | |||
|  |         } | |||
|  | 
 | |||
|  |          | |||
|  | 
 | |||
|  |         | |||
|  | 
 | |||
|  |         private void textPreInNo_KeyUp(object sender, KeyEventArgs e) | |||
|  |         { | |||
|  |             preInOrder = textPreInNo.Text; | |||
|  | 
 | |||
|  | 
 | |||
|  |             if (string.IsNullOrEmpty(preInOrder)) | |||
|  |             { | |||
|  |                 textPreInNo.Focus(); | |||
|  |                 return; | |||
|  |             } | |||
|  | 
 | |||
|  |             if (e.KeyCode == Keys.Enter || e.KeyCode ==Keys.Space) | |||
|  |             { | |||
|  | 
 | |||
|  |                 bindPreIn(preInOrder);   | |||
|  |                  | |||
|  |             } | |||
|  | 
 | |||
|  |         } | |||
|  | 
 | |||
|  |         bool isPreInOrderOkay() | |||
|  |         { | |||
|  |             if (dtPreIn != null) | |||
|  |             { | |||
|  |                 return true; | |||
|  |             } | |||
|  |             else | |||
|  |             { | |||
|  |                 MessageBox.Show("请输入预到单"); | |||
|  |                 tb1.SelectedIndex = 0; | |||
|  |                 initialFirstTabData(); | |||
|  |                 return false; | |||
|  |             } | |||
|  | 
 | |||
|  |         } | |||
|  | 
 | |||
|  |         private void textGdbarcode_KeyUp(object sender, KeyEventArgs e) | |||
|  |         { | |||
|  |            string goodBarcod = txtReceiveGdBarcod.Text; | |||
|  |               | |||
|  |            if (e.KeyCode == Keys.Enter) | |||
|  |            { | |||
|  |                if (!isPreInOrderOkay()) | |||
|  |                { | |||
|  |                    return; | |||
|  |                } | |||
|  | 
 | |||
|  |                if (string.IsNullOrEmpty(goodBarcod)) | |||
|  |                { | |||
|  |                    // MessageBox.Show("请选择运单"); | |||
|  |                    txtReceiveGdBarcod.Focus(); | |||
|  |                    return; | |||
|  |                } | |||
|  |                getDataByGoodsBarcode(goodBarcod); | |||
|  | 
 | |||
|  |                 | |||
|  | 
 | |||
|  |            } | |||
|  |         } | |||
|  | 
 | |||
|  |         void getDataByGoodsBarcode(string goodsBarcod) | |||
|  |         { | |||
|  |             if (String.IsNullOrEmpty(preInOrder)) | |||
|  |             { | |||
|  |                 MessageBox.Show("请输入预到号码"); | |||
|  |                 tb1.SelectedIndex = 0; | |||
|  |                 return; | |||
|  |             } | |||
|  |             Cursor.Current = System.Windows.Forms.Cursors.WaitCursor; | |||
|  |             DataTable dtPreDetail = client.getReceiveDetailByBarcode(preInOrder,goodsBarcod); | |||
|  |             Cursor.Current = System.Windows.Forms.Cursors.Default; | |||
|  |             if (dtPreDetail.Rows.Count == 0) | |||
|  |             { | |||
|  |                 MessageBox.Show("没找到数据"); | |||
|  |                 initialSecondTabData(); | |||
|  |                 txtReceiveGdBarcod.SelectAll(); | |||
|  |                 txtReceiveGdBarcod.Focus(); | |||
|  | 
 | |||
|  |                 return; | |||
|  |             } | |||
|  |             string packQty = dtPreDetail.Rows[0]["packingQty"].ToString(); | |||
|  |             packQty = dtPreDetail.Rows[0]["bigCount"].ToString(); | |||
|  |             lbGoodsName1.Text = lbGoodsName2.Text =  dtPreDetail.Rows[0]["goodsName"].ToString(); | |||
|  |             | |||
|  |             goodsId = dtPreDetail.Rows[0]["goodsId"].ToString(); | |||
|  |             string isQc = dtPreDetail.Rows[0]["isQc"].ToString(); | |||
|  |             string isZhitong = dtPreDetail.Rows[0]["isZhitong"].ToString(); | |||
|  |             lbUnit.Text = dtPreDetail.Rows[0]["unit"].ToString(); | |||
|  |             lbArriveNum.Text = dtPreDetail.Rows[0]["newArriveCount"].ToString(); | |||
|  |             lbNotReceived.Text = dtPreDetail.Rows[0]["newCount4Receive"].ToString(); | |||
|  |             lbToValidCnt.Text = dtPreDetail.Rows[0]["newCount4Valid"].ToString(); | |||
|  |             lbExpiryDays.Text = dtPreDetail.Rows[0]["expiryDays"].ToString(); | |||
|  |             chkDouble.Checked = dtPreDetail.Rows[0]["isDouChk"].ToString()=="Y"; | |||
|  |             owner = dtPreDetail.Rows[0]["entid"].ToString(); | |||
|  |             lbOwner.Text = dtPreDetail.Rows[0]["ORGNAME"].ToString(); | |||
|  | 
 | |||
|  |             if (dtPreDetail.Rows[0]["orderType"].ToString() == "1") | |||
|  |             { | |||
|  |                 dtpProduct.Visible = false; | |||
|  |                 dtpValidTo.Visible = false; | |||
|  |                  | |||
|  | 
 | |||
|  |                 txtBatch.Text = dtPreDetail.Rows[0]["batch"].ToString(); | |||
|  |                 this.txtPrdDate.Text = dtPreDetail.Rows[0]["productDate"].ToString(); | |||
|  |                 this.txtValidDate.Text = dtPreDetail.Rows[0]["validDate"].ToString(); | |||
|  |                 txtValidDate.ReadOnly = true; | |||
|  |                 txtPrdDate.ReadOnly = true; | |||
|  |                   | |||
|  |                  | |||
|  |             } | |||
|  |             | |||
|  |             txtBatch.ReadOnly = !dtpProduct.Visible; | |||
|  |             txtPrdDate.Visible = !dtpProduct.Visible; | |||
|  |             txtValidDate.Visible = !dtpValidTo.Visible; | |||
|  |             txtSeedsNum.ReadOnly = txtBatch.ReadOnly; | |||
|  |             btnSeeds.Enabled = !txtBatch.ReadOnly; | |||
|  |             try | |||
|  |             { | |||
|  |                 chkNoQc.Checked = Convert.ToInt16(isQc) == 0; | |||
|  |                 chkZhitong.Checked = Convert.ToInt16(isZhitong) != 0; | |||
|  |                 expiringDays = Convert.ToInt16(lbExpiryDays.Text); | |||
|  |             } | |||
|  |             catch (Exception er) | |||
|  |             { | |||
|  | 
 | |||
|  |             } | |||
|  |             try | |||
|  |             { | |||
|  | 
 | |||
|  |                 bigCount = Convert.ToDecimal(packQty); | |||
|  |                 maxReceiveCnt = Convert.ToDecimal(lbNotReceived.Text); | |||
|  |                 maxValidCnt = Convert.ToDecimal(lbToValidCnt.Text); | |||
|  | 
 | |||
|  |                  | |||
|  |                 if (this.tb1.SelectedIndex == 1) | |||
|  |                 { | |||
|  |                     btnReceive.Enabled = maxReceiveCnt > 0;                    | |||
|  |                     decimal bulkCnt = maxReceiveCnt % bigCount; | |||
|  |                     decimal boxCnt =( maxReceiveCnt - bulkCnt) / bigCount; | |||
|  | 
 | |||
|  |                     txtReceivePkgNum.Text = boxCnt + ""; | |||
|  |                     txtBulkCnt.Text = bulkCnt + ""; | |||
|  |                 } | |||
|  |                 else | |||
|  |                 { | |||
|  |                     btnValid.Enabled = maxValidCnt > 0; | |||
|  |                     decimal bulkCnt = maxValidCnt % bigCount; | |||
|  |                     decimal boxCnt = (maxValidCnt - bulkCnt) / bigCount; | |||
|  | 
 | |||
|  |                     txtBatchBoxCnt.Text = boxCnt + ""; | |||
|  |                     txtBachCnt.Text = bulkCnt + ""; | |||
|  |                     | |||
|  |                 } | |||
|  |                  | |||
|  |                  | |||
|  |                lbPackcnt2.Text= lbPackcnt.Text = bigCount + ""; | |||
|  | 
 | |||
|  |             } | |||
|  |             catch (Exception er) | |||
|  |             { | |||
|  |                 bigCount = 1; | |||
|  |             } | |||
|  |         } | |||
|  | 
 | |||
|  |         decimal getReceiveCount() | |||
|  |         { | |||
|  |             string pkcnt = txtReceivePkgNum.Text.Trim();  | |||
|  |             string bulkcnt = txtBulkCnt.Text.Trim(); | |||
|  |            | |||
|  | 
 | |||
|  |             if (String.IsNullOrEmpty(pkcnt) && String.IsNullOrEmpty(bulkcnt)) | |||
|  |             { | |||
|  |                 MessageBox.Show("请输入收货数量"); | |||
|  |                 txtReceivePkgNum.Focus(); | |||
|  |                 return 0; | |||
|  |             } | |||
|  | 
 | |||
|  |             try | |||
|  |             { | |||
|  | 
 | |||
|  |                 if (!String.IsNullOrEmpty(pkcnt)) | |||
|  |                 { | |||
|  |                     packCount = Convert.ToDecimal(pkcnt); | |||
|  |                 } | |||
|  |             } | |||
|  |             catch (Exception er) | |||
|  |             { | |||
|  |                 MessageBox.Show("请输入收货数量"); | |||
|  |                 txtReceivePkgNum.SelectAll(); | |||
|  |                 txtReceivePkgNum.Focus(); | |||
|  |                 return 0; | |||
|  |             } | |||
|  |             try | |||
|  |             { | |||
|  | 
 | |||
|  |                 if (!String.IsNullOrEmpty(bulkcnt)) | |||
|  |                 { | |||
|  |                     bulkCount = Convert.ToDecimal(bulkcnt); | |||
|  |                 } | |||
|  |             } | |||
|  |             catch (Exception er) | |||
|  |             { | |||
|  |                 MessageBox.Show("请输入收货数量"); | |||
|  |                 txtBulkCnt.SelectAll(); | |||
|  |                 txtBulkCnt.Focus(); | |||
|  |                 return 0; | |||
|  |             } | |||
|  | 
 | |||
|  |              | |||
|  |             decimal count = packCount * bigCount + bulkCount; | |||
|  | 
 | |||
|  |             if (count == 0) | |||
|  |             { | |||
|  |                 MessageBox.Show("请输入收货数量"); | |||
|  |                 txtReceivePkgNum.Focus(); | |||
|  |                 return 0; | |||
|  |             } | |||
|  | 
 | |||
|  | 
 | |||
|  |             | |||
|  |             return count; | |||
|  |         } | |||
|  |         private void btnReceive_Click(object sender, EventArgs e) | |||
|  |         { | |||
|  |               | |||
|  |             string tmp = txtWendu.Text.Trim(); | |||
|  |               | |||
|  |             decimal  temperature = -100; | |||
|  |               | |||
|  |             try | |||
|  |             { | |||
|  | 
 | |||
|  |                 if (!String.IsNullOrEmpty(tmp)) | |||
|  |                 { | |||
|  |                     temperature = Convert.ToDecimal(tmp); | |||
|  |                 } | |||
|  |             } | |||
|  |             catch (Exception er) | |||
|  |             { | |||
|  |                 MessageBox.Show("请输入温度"); | |||
|  |                 txtWendu.SelectAll(); | |||
|  |                 txtWendu.Focus(); | |||
|  |                 return; | |||
|  |             } | |||
|  | 
 | |||
|  |             decimal count = getReceiveCount(); | |||
|  | 
 | |||
|  |             if (count > maxReceiveCnt) | |||
|  |             { | |||
|  |                 MessageBox.Show("超过最大应收数量:" + maxReceiveCnt); | |||
|  |                 txtReceivePkgNum.SelectAll(); | |||
|  |                 txtReceivePkgNum.Focus(); | |||
|  |                 return; | |||
|  |             } | |||
|  | 
 | |||
|  |             if (count <= 0) { return; } | |||
|  |             try | |||
|  |             { | |||
|  |                 Cursor.Current = System.Windows.Forms.Cursors.WaitCursor; | |||
|  |                 | |||
|  |                  | |||
|  |                 decimal arriveCnt = Convert.ToDecimal(lbArriveNum.Text); | |||
|  |                 int intype = rdReceive.Checked?0:1;//pass | |||
|  |                 bool rt = client.receiveDetail(preInOrder, goodsId, arriveCnt, count, intype, "", temperature, chkZhitong.Checked, 0, LoginInfo.UserId, LoginInfo.Token); | |||
|  |                 Cursor.Current = System.Windows.Forms.Cursors.Default; | |||
|  |               if (rt) | |||
|  |               { | |||
|  |                   MessageBox.Show("收货成功!"); | |||
|  |                   initialSecondTabData(); | |||
|  | 
 | |||
|  |                   if (chkValid.Checked) | |||
|  |                   { | |||
|  |                       tb1.SelectedIndex = 2;//验收 | |||
|  | 
 | |||
|  |                       txtValidGdBarcod.Text = txtReceiveGdBarcod.Text; | |||
|  |                       lbGoodsName2.Text = lbGoodsName1.Text; | |||
|  | 
 | |||
|  | 
 | |||
|  |                   } | |||
|  |               } | |||
|  |             } | |||
|  |             catch (Exception er) | |||
|  |             { | |||
|  |                 //MessageBox.Show("收货失败!"); | |||
|  |                 showErrorMsg(er, "收货失败"); | |||
|  |                 Cursor.Current = System.Windows.Forms.Cursors.Default; | |||
|  |             } | |||
|  | 
 | |||
|  |         } | |||
|  | 
 | |||
|  |         private void txtValidGdBarcod_KeyUp(object sender, KeyEventArgs e) | |||
|  |         { | |||
|  |             string goodBarcod = txtValidGdBarcod.Text; | |||
|  | 
 | |||
|  |             if (e.KeyCode == Keys.Enter) | |||
|  |             { | |||
|  |                 if (!isPreInOrderOkay()) | |||
|  |                 { | |||
|  |                     return; | |||
|  |                 } | |||
|  | 
 | |||
|  | 
 | |||
|  |                 if (string.IsNullOrEmpty(goodBarcod)) | |||
|  |                 { | |||
|  |                     // MessageBox.Show("请选择运单"); | |||
|  |                     txtValidGdBarcod.Focus(); | |||
|  |                     return; | |||
|  |                 } | |||
|  |                 getDataByGoodsBarcode(goodBarcod); | |||
|  | 
 | |||
|  |                 dtpValidTo.Value = dtpProduct.Value.AddDays(expiringDays); | |||
|  |                   | |||
|  |                // txtBatchBoxCnt.Text = maxValidCnt+""; | |||
|  | 
 | |||
|  |                // txtBatchBoxCnt.Focus(); | |||
|  | 
 | |||
|  |             } | |||
|  |         } | |||
|  | 
 | |||
|  |         private void btnSeeds_Click(object sender, EventArgs e) | |||
|  |         { | |||
|  |             decimal batchCnt =   getValidCount();; | |||
|  |             if(batchCnt<=0){ | |||
|  |                 return; | |||
|  |             } | |||
|  |             Cursor.Current = System.Windows.Forms.Cursors.WaitCursor; | |||
|  |             decimal seedsNum = client.getValidSeedsCnt(goodsId,batchCnt ); | |||
|  |             Cursor.Current = System.Windows.Forms.Cursors.Default; | |||
|  |             lbSeedsCnt.Text = seedsNum + ""; | |||
|  |             txtSeedsNum.Text = seedsNum+""; | |||
|  | 
 | |||
|  |         } | |||
|  | 
 | |||
|  |         decimal getValidCount() | |||
|  |         { | |||
|  |             string batchBoxCnt = txtBatchBoxCnt.Text.Trim(); | |||
|  |             | |||
|  |             string batchCnt = txtBachCnt.Text.Trim(); | |||
|  |            | |||
|  |              | |||
|  |             decimal packCount=0, bulkCount=0 ; | |||
|  | 
 | |||
|  |             if (String.IsNullOrEmpty(batchBoxCnt) && String.IsNullOrEmpty(batchCnt)) | |||
|  |             { | |||
|  |                 MessageBox.Show("请输入验收数量"); | |||
|  |                 txtBatchBoxCnt.Focus(); | |||
|  |                 return 0; | |||
|  |             } | |||
|  | 
 | |||
|  |             try | |||
|  |             { | |||
|  | 
 | |||
|  |                 if (!String.IsNullOrEmpty(batchBoxCnt)) | |||
|  |                 { | |||
|  |                     packCount = Convert.ToDecimal(batchBoxCnt); | |||
|  |                 } | |||
|  |             } | |||
|  |             catch (Exception er) | |||
|  |             { | |||
|  | 
 | |||
|  |                  MessageBox.Show("请输入验收数量"); | |||
|  |                 txtBatchBoxCnt.Focus(); | |||
|  |                 return 0; | |||
|  |             } | |||
|  | 
 | |||
|  |             try | |||
|  |             { | |||
|  | 
 | |||
|  |                 if (!String.IsNullOrEmpty(batchCnt)) | |||
|  |                 { | |||
|  |                     bulkCount = Convert.ToDecimal(batchCnt); | |||
|  |                 } | |||
|  |             } | |||
|  |             catch (Exception er) | |||
|  |             { | |||
|  |                 MessageBox.Show("请输入验收数量"); | |||
|  |                 txtBachCnt.Focus(); | |||
|  |                 return 0; | |||
|  |             } | |||
|  | 
 | |||
|  |              | |||
|  | 
 | |||
|  |             decimal count = packCount * bigCount + bulkCount; | |||
|  | 
 | |||
|  |             if (count == 0) | |||
|  |             { | |||
|  |                 MessageBox.Show("请输入验收数量"); | |||
|  |                 txtReceivePkgNum.Focus(); | |||
|  |                 return 0; | |||
|  |             } | |||
|  | 
 | |||
|  | 
 | |||
|  |             | |||
|  |             return count; | |||
|  |         } | |||
|  | 
 | |||
|  | 
 | |||
|  |         private void btnValid_Click(object sender, EventArgs e) | |||
|  |         { | |||
|  |            // chkDouble.Checked = true; | |||
|  | 
 | |||
|  |             if (chkDouble.Checked) | |||
|  |             { | |||
|  |                 validLogin vl = new validLogin(); | |||
|  |                 vl.setRole(WmsConstants.PERMISSION_VALID); | |||
|  |                 vl.ShowDialog(); | |||
|  |             } | |||
|  | 
 | |||
|  |             if (chkDouble.Checked) | |||
|  |             { | |||
|  |                 if (WmsConstants.SECOND_VALID_ER ==LoginInfo.UserId || WmsConstants.SECOND_VALID_ER <= 0) | |||
|  |                 { | |||
|  |                     MessageBox.Show("非法的第二验收人,验收失败"); | |||
|  |                     return; | |||
|  |                 } | |||
|  | 
 | |||
|  | 
 | |||
|  |             } | |||
|  | 
 | |||
|  |             if (txtSeedsNum.ReadOnly) | |||
|  |             { | |||
|  |                 txtSeedsNum.Text = txtBatchBoxCnt.Text; | |||
|  |             } | |||
|  |             | |||
|  |             string batch = txtBatch.Text.Trim(); | |||
|  |              | |||
|  |             string flowNo =""; | |||
|  |             string seedsCnt = txtSeedsNum.Text.Trim(); | |||
|  |              | |||
|  |             decimal seedsCount = -100; | |||
|  |             decimal count = getValidCount(); | |||
|  | 
 | |||
|  | 
 | |||
|  |             if (count <= 0   ) | |||
|  |             {  | |||
|  |                 return; | |||
|  |             } | |||
|  | 
 | |||
|  |             if (count > maxValidCnt) | |||
|  |             { | |||
|  |                 getDataByGoodsBarcode(this.txtValidGdBarcod.Text.Trim());//refresh data from svr. | |||
|  |                 if (count > maxValidCnt) | |||
|  |                 { | |||
|  |                     return; | |||
|  |                 } | |||
|  | 
 | |||
|  |             } | |||
|  | 
 | |||
|  |             try | |||
|  |             { | |||
|  |                | |||
|  | 
 | |||
|  |                 if (!String.IsNullOrEmpty(seedsCnt)) | |||
|  |                 { | |||
|  |                     seedsCount = Convert.ToDecimal(seedsCnt); | |||
|  |                 } | |||
|  |                 if (seedsCount <= 0 || seedsCount > count) | |||
|  |                 { | |||
|  |                     if(!txtSeedsNum.ReadOnly) | |||
|  |                     throw new Exception(); | |||
|  |                 } | |||
|  |             } | |||
|  |             catch (Exception er) | |||
|  |             { | |||
|  |                 if (packCount > 0) | |||
|  |                 { | |||
|  |                     MessageBox.Show("请输入正确抽样数量"); | |||
|  |                     txtSeedsNum.Focus(); | |||
|  |                     return; | |||
|  |                 } | |||
|  |             } | |||
|  | 
 | |||
|  |             try | |||
|  |             { | |||
|  |                 flowNo = txtShelfNo.Text.Trim(); ; | |||
|  |                   | |||
|  |                 if (String.IsNullOrEmpty(flowNo ) ) | |||
|  |                 { | |||
|  |                     throw new Exception(); | |||
|  |                 } | |||
|  |             } | |||
|  |             catch (Exception er) | |||
|  |             { | |||
|  |                 MessageBox.Show("请输入正确上架流水号"); | |||
|  |                 txtShelfNo.SelectAll(); | |||
|  |                 txtShelfNo.Focus(); | |||
|  |                 return; | |||
|  |             } | |||
|  |              | |||
|  |             | |||
|  | 
 | |||
|  |             DateTime dtProd = dtpProduct.Value; | |||
|  |             DateTime dtValidTo = dtpValidTo.Value; | |||
|  |             if (dtProd.Equals(dtValidTo)) | |||
|  |             { | |||
|  |                 dtpValidTo.Value = dtpProduct.Value.AddDays(expiringDays); | |||
|  |                 dtValidTo = dtpValidTo.Value; | |||
|  |             } | |||
|  | 
 | |||
|  |             /* | |||
|  |             if (dtProd.AddDays(expiringDays) != dtValidTo) | |||
|  |             { | |||
|  |                 DialogResult dr = MessageBox.Show("警告:日期输入和商品保质期天数不匹配! 是否继续?", "警告", MessageBoxButtons.YesNo, MessageBoxIcon.Exclamation, MessageBoxDefaultButton.Button1); | |||
|  |                 if (dr == DialogResult.No) | |||
|  |                 { | |||
|  |                     return; | |||
|  |                 } | |||
|  |             }*/ | |||
|  | 
 | |||
|  |             if (DateTime.Now.AddDays(expiringDays/3) > dtValidTo) | |||
|  |             { | |||
|  |              DialogResult dr=   MessageBox.Show("警告:商品剩余保质期已不足1/3,是否继续?","警告",MessageBoxButtons.YesNo,MessageBoxIcon.Exclamation,MessageBoxDefaultButton.Button1); | |||
|  | 
 | |||
|  |              if (dr == DialogResult.No) | |||
|  |              { | |||
|  |                  return; | |||
|  |              } | |||
|  |              | |||
|  |             } | |||
|  | 
 | |||
|  | 
 | |||
|  |             if (dtProd > dtValidTo || dtProd > DateTime.Now) | |||
|  |             { | |||
|  |                 MessageBox.Show("日期输入错误!", "错误", MessageBoxButtons.OK, MessageBoxIcon.Exclamation, MessageBoxDefaultButton.Button1); | |||
|  |                 return; | |||
|  |             } | |||
|  | 
 | |||
|  | 
 | |||
|  |             string prdDate =dtpProduct.Visible? dtProd.ToShortDateString():txtPrdDate.Text; | |||
|  |             string valDate = dtpValidTo.Visible ? dtValidTo.ToShortDateString() :this.txtValidDate.Text; | |||
|  |             seedsCount = dtpProduct.Visible ? seedsCount : count;             | |||
|  |             if (String.IsNullOrEmpty( batch)) | |||
|  |             { | |||
|  |                 batch = prdDate; | |||
|  |             } | |||
|  | 
 | |||
|  |             string[] skuKeys = { "生产日期", "到期日期", "厂家批次" ,"货主"}; | |||
|  |             string[] skuValues = { prdDate, valDate, batch, owner }; | |||
|  |             try | |||
|  |             { | |||
|  |                 Cursor.Current = System.Windows.Forms.Cursors.WaitCursor; | |||
|  | 
 | |||
|  |                 bool issueLocations = true; //按流水号入库,并分配货位 | |||
|  |                 enumValidInResult  result =(enumValidInResult) client.validIn(preInOrder, flowNo, goodsId, count, seedsCount, skuKeys, skuValues, | |||
|  |                     rdValidPass.Checked, issueLocations,WmsConstants.SECOND_VALID_ER , LoginInfo.UserId, LoginInfo.Token); | |||
|  | 
 | |||
|  |                 Cursor.Current = System.Windows.Forms.Cursors.Default; | |||
|  |                   | |||
|  |                 if (result == enumValidInResult.成功) | |||
|  |                 { | |||
|  |                     MessageBox.Show("验收成功"); | |||
|  | 
 | |||
|  |                     initialThirdTabData(); | |||
|  |                     //TODO: print sku info for into plate operation | |||
|  | 
 | |||
|  |                 } | |||
|  |                 else | |||
|  |                 { | |||
|  |                     MessageBox.Show("验收失败: " + result.ToString()); | |||
|  |                 } | |||
|  | 
 | |||
|  |             } | |||
|  |             catch (Exception er) | |||
|  |             {  | |||
|  |                 Cursor.Current = System.Windows.Forms.Cursors.Default; | |||
|  |                 showErrorMsg(er, "验收失败"); | |||
|  |                  | |||
|  |             } | |||
|  | 
 | |||
|  |             WmsConstants.SECOND_VALID_ER = 0; | |||
|  | 
 | |||
|  |         } | |||
|  | 
 | |||
|  |         private void txtSkuId_KeyUp(object sender, KeyEventArgs e) | |||
|  |         { | |||
|  | 
 | |||
|  |         } | |||
|  | 
 | |||
|  |         private void rdValidFaild_Click(object sender, EventArgs e) | |||
|  |         { | |||
|  |             rdValidPass.Checked = !rdValidFaild.Checked; | |||
|  |         } | |||
|  | 
 | |||
|  |         private void rdValidPass_Click(object sender, EventArgs e) | |||
|  |         { | |||
|  |             rdValidFaild.Checked = !rdValidPass.Checked; | |||
|  |         } | |||
|  | 
 | |||
|  |         private void dtpProduct_ValueChanged(object sender, EventArgs e) | |||
|  |         { | |||
|  |             dtpValidTo.Value = dtpProduct.Value.AddDays(expiringDays); | |||
|  |         } | |||
|  | 
 | |||
|  |         private void rdReceive_Click(object sender, EventArgs e) | |||
|  |         { | |||
|  |             rdRefuse.Checked = !rdReceive.Checked; | |||
|  |         } | |||
|  | 
 | |||
|  |         private void rdRefuse_Click(object sender, EventArgs e) | |||
|  |         { | |||
|  |             rdReceive.Checked = !rdRefuse.Checked; | |||
|  |         } | |||
|  | 
 | |||
|  |         private void txtShelfNo_KeyUp(object sender, KeyEventArgs e) | |||
|  |         { | |||
|  |             if (e.KeyCode == Keys.Enter) | |||
|  |             { | |||
|  |                 if (!isPreInOrderOkay()) | |||
|  |                 { | |||
|  |                     return; | |||
|  |                 } | |||
|  |                 txtValidGdBarcod.SelectAll(); | |||
|  |                 txtValidGdBarcod.Focus(); | |||
|  |             } | |||
|  |         } | |||
|  | 
 | |||
|  |         private void textPreInNo_GotFocus(object sender, EventArgs e) | |||
|  |         { | |||
|  |             textPreInNo.SelectAll(); | |||
|  |         } | |||
|  | 
 | |||
|  |         private void txtReceiveGdBarcod_GotFocus(object sender, EventArgs e) | |||
|  |         { | |||
|  |             txtReceiveGdBarcod.SelectAll(); | |||
|  |         } | |||
|  | 
 | |||
|  |         private void txtShelfNo_GotFocus(object sender, EventArgs e) | |||
|  |         { | |||
|  |             txtShelfNo.SelectAll(); | |||
|  |         } | |||
|  | 
 | |||
|  |         private void txtValidGdBarcod_GotFocus(object sender, EventArgs e) | |||
|  |         { | |||
|  |             txtValidGdBarcod.SelectAll(); | |||
|  |         } | |||
|  |   | |||
|  |         | |||
|  | 
 | |||
|  |     } | |||
|  | } |