using ComponentFactory.Krypton.Toolkit; using NXWMS.Client.FrmCustom; using NXWMS.Client.Model.AppModels.Result.Balance; using NXWMS.Client.Model.AppModels.Result.Common; using NXWMS.Client.Model.AppModels.Result.Instock; using NXWMS.Client.Model.CoreModels; using NXWMS.Services; using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Runtime.InteropServices; using System.Text; using System.Text.RegularExpressions; using System.Web.UI.WebControls; using System.Windows.Forms; using static NXWMS.Client.FrmCustom.CustomEventMsg; namespace NXWMS.Forms.Instock.frmInstockChild { /// /// 收货组盘操作窗体 /// public partial class frmChildReceiptTray : KryptonForm { /// /// 窗体构造函数 /// public frmChildReceiptTray() { InitializeComponent(); } #region 全局变量 /// /// 收货单主键ID /// public string ReceiptId { get; set; } /// /// 收货单号 /// public string ReceiptNo { get; set; } /// /// 数据库中的收货单所有数据(包括主、明细表)。 /// private List ReceiptDataNotEditLst = new List(); [DllImport("user32.dll")] public static extern int MessageBoxTimeoutA(IntPtr hWnd, string msg, string Caps, int type, int Id, int time);//引用DLL #endregion #region 初始化数据 /// /// 窗体加载事件 /// /// /// private void frmChildReceiptTray_Load(object sender, EventArgs e) { ktb_ReceiptNo.Text = ReceiptNo; ktb_ReceiptNo.Enabled = false; InitDataGridViewColumn(); ktb_PalletNo.Focus(); } DataTable dt_Dgv; /// /// 初始化DataGridView列信息 /// private void InitDataGridViewColumn() { DataGridViewColumn column1 = new KryptonDataGridViewTextBoxColumn(); column1.HeaderText = "序号"; column1.Width = 50; column1.ReadOnly = true; kdgv_ReceiptTrayDtlData.Columns.Add(column1); dt_Dgv = CreateTable(); DataGridViewColumn column = new DataGridViewDataWindowColumn(); (column as DataGridViewDataWindowColumn).SDisplayField = "收货单明细ID,物料编码,物料名称,批次号,物料条码,物料类型编码,物料类型名称"; (column as DataGridViewDataWindowColumn).SDisplayMember = "物料编码"; (column as DataGridViewDataWindowColumn).SKeyWords = "物料编码"; (column as DataGridViewDataWindowColumn).DataSource = dt_Dgv; column.Width = 150; column.HeaderText = "物料编码"; kdgv_ReceiptTrayDtlData.Columns.Add(column); column = new DataGridViewDataWindowColumn(); (column as DataGridViewDataWindowColumn).SDisplayField = "收货单明细ID,物料编码,物料名称,批次号,物料条码,物料类型编码,物料类型名称"; (column as DataGridViewDataWindowColumn).SDisplayMember = "物料名称"; (column as DataGridViewDataWindowColumn).SKeyWords = "物料名称"; (column as DataGridViewDataWindowColumn).DataSource = dt_Dgv; column.HeaderText = "物料名称"; column.Width = 200; kdgv_ReceiptTrayDtlData.Columns.Add(column); column = new DataGridViewDataWindowColumn(); (column as DataGridViewDataWindowColumn).SDisplayField = "收货单明细ID,物料编码,物料名称,批次号,物料条码,物料类型编码,物料类型名称"; (column as DataGridViewDataWindowColumn).SDisplayMember = "物料条码"; (column as DataGridViewDataWindowColumn).SKeyWords = "物料条码"; (column as DataGridViewDataWindowColumn).DataSource = dt_Dgv; column.HeaderText = "物料条码"; column.Width = 150; kdgv_ReceiptTrayDtlData.Columns.Add(column); column1 = new KryptonDataGridViewTextBoxColumn(); column1.HeaderText = "批次号"; column1.Width = 120; kdgv_ReceiptTrayDtlData.Columns.Add(column1); column1 = new KryptonDataGridViewTextBoxColumn(); column1.HeaderText = "收货单明细未组盘数量"; column1.Width = 130; kdgv_ReceiptTrayDtlData.Columns.Add(column1); column1 = new KryptonDataGridViewTextBoxColumn(); column1.HeaderText = "组盘明细数量"; column1.Width = 100; kdgv_ReceiptTrayDtlData.Columns.Add(column1); DataGridViewComboBoxColumn cmb_Unit = new DataGridViewComboBoxColumn(); cmb_Unit.HeaderText = "单位"; cmb_Unit.Width = 70; //目前写死下拉列表的数据项,后续改为后台获取 cmb_Unit.Items.AddRange(new ListItem[] { new ListItem{ Value = "kg",Text = "千克"}, new ListItem{ Value = "ge",Text = "个"}, new ListItem{ Value = "pkg",Text = "箱"} }); cmb_Unit.DisplayStyle = DataGridViewComboBoxDisplayStyle.Nothing; kdgv_ReceiptTrayDtlData.Columns.Add(cmb_Unit); DataGridViewComboBoxColumn cmb_Supplier = new DataGridViewComboBoxColumn(); cmb_Supplier.HeaderText = "供应商"; cmb_Supplier.Width = 120; //目前写死下拉列表的数据项,后续改为后台获取 cmb_Supplier.Items.AddRange(new ListItem[] { new ListItem{ Value ="WX_NXZB_001" ,Text = "无锡南兴装备"}, new ListItem{ Value ="WX_NXZB_002" ,Text = "东莞南兴装备"} }); cmb_Supplier.DisplayStyle = DataGridViewComboBoxDisplayStyle.Nothing; kdgv_ReceiptTrayDtlData.Columns.Add(cmb_Supplier); column1 = new KryptonDataGridViewTextBoxColumn(); column1.HeaderText = "包装"; column1.Width = 80; kdgv_ReceiptTrayDtlData.Columns.Add(column1); KryptonDataGridViewDateTimePickerColumn column_ProductTime = new KryptonDataGridViewDateTimePickerColumn(); column_ProductTime.HeaderText = "生产日期"; column_ProductTime.Width = 160; column_ProductTime.Format = DateTimePickerFormat.Custom; column_ProductTime.CustomFormat = "yyyy-MM-dd HH:mm:ss"; kdgv_ReceiptTrayDtlData.Columns.Add(column_ProductTime); KryptonDataGridViewDateTimePickerColumn column_ExpTime = new KryptonDataGridViewDateTimePickerColumn(); column_ExpTime.HeaderText = "失效日期"; column_ExpTime.Width = 160; column_ExpTime.Format = DateTimePickerFormat.Custom; column_ExpTime.CustomFormat = "yyyy-MM-dd HH:mm:ss"; kdgv_ReceiptTrayDtlData.Columns.Add(column_ExpTime); column1 = new KryptonDataGridViewTextBoxColumn(); column1.HeaderText = "收货单明细ID"; column1.Width = 120; //column1.Visible = false; kdgv_ReceiptTrayDtlData.Columns.Add(column1); column1 = new KryptonDataGridViewTextBoxColumn(); column1.HeaderText = "收货明细数量"; column1.Width = 30; column1.Visible = false; kdgv_ReceiptTrayDtlData.Columns.Add(column1); } /// /// 创建数据源表格 /// /// private DataTable CreateTable() { DataTable dt = new DataTable(); DataColumn dc = new DataColumn("物料编码"); dt.Columns.Add(dc); dc = new DataColumn("物料名称"); dt.Columns.Add(dc); dc = new DataColumn("物料条码"); dt.Columns.Add(dc); dc = new DataColumn("物料类型编码"); dt.Columns.Add(dc); dc = new DataColumn("物料类型名称"); dt.Columns.Add(dc); dc = new DataColumn("收货单明细ID"); dt.Columns.Add(dc); dc = new DataColumn("批次号"); dt.Columns.Add(dc); if (string.IsNullOrEmpty(this.ReceiptId)) { //var result = WmsInstockService.materielMsgForAddArrivalService.GetMaterielMsgForAddArrival(); //if (result.Status == OperateStatus.Success) //{ // foreach (MaterielMsgForAddArrivalResult item in result.Data) // { // DataRow dr = dt.NewRow(); // dr["物料编码"] = item.MATERIEL_CODE; // dr["物料名称"] = item.MATERIEL_NAME; // dr["物料条码"] = item.MATERIEL_BARCODE; // dr["物料类型编码"] = item.MATERIEL_TYPE_CODE; // dr["物料类型名称"] = item.MATERIEL_TYPE_NAME; // dr["收货单明细ID"] = 0; // dr["批次号"] = 0; // dt.Rows.Add(dr); // } // ReceiptDataNotEdit = new WmsInReceiptResult(); //} var result = WmsInstockService.wmsInReceiptService.GetWmsInReceiptDtl_UnFinishedTray(); if (result.Status == OperateStatus.Success) { foreach (WmsInReceiptResult item in result.Data) { foreach (WmsInReceiptDtlResult itemDtl in item.WmsInReceiptDtlList) { DataRow dr = dt.NewRow(); dr["物料编码"] = itemDtl.MATERIEL_CODE; dr["物料名称"] = itemDtl.MATERIEL_NAME; dr["物料条码"] = itemDtl.MATERIEL_BARCODE; dr["物料类型编码"] = itemDtl.MATERIEL_TYPE_CODE; dr["物料类型名称"] = itemDtl.MATERIEL_TYPE_NAME; dr["收货单明细ID"] = itemDtl.RECEIPT_DTL_ID; dr["批次号"] = itemDtl.BATCH_NO; dt.Rows.Add(dr); } } ReceiptDataNotEditLst = result.Data; } } else { var result = WmsInstockService.wmsInReceiptService.GetWmsInReceiptDtlListForId(new WmsInReceiptResult { RECEIPT_ID = Convert.ToInt32(this.ReceiptId) ,REMARKS1 = "查询未组盘完成的收货单明细" }); if (result.Status == OperateStatus.Success) { foreach (WmsInReceiptDtlResult item in result.Data.WmsInReceiptDtlList) { DataRow dr = dt.NewRow(); dr["物料编码"] = item.MATERIEL_CODE; dr["物料名称"] = item.MATERIEL_NAME; dr["物料条码"] = item.MATERIEL_BARCODE; dr["物料类型编码"] = item.MATERIEL_TYPE_CODE; dr["物料类型名称"] = item.MATERIEL_TYPE_NAME; dr["收货单明细ID"] = item.RECEIPT_DTL_ID; dt.Rows.Add(dr); } ReceiptDataNotEditLst.Clear(); ReceiptDataNotEditLst.Add(result.Data); } } return dt; } #endregion #region 按钮事件 /// /// 取消按钮事件 /// 关闭窗体 /// /// /// private void btnCancel_Click(object sender, EventArgs e) { this.Close(); } /// /// 确认按钮事件 /// 提交组盘数据 /// /// /// private void btnConfirm_Click(object sender, EventArgs e) { /* * ToDo:后续增加验证托盘号是否合法的代码。 * 校验托盘条码是否维护。 * 校验托盘是否存在库存信息。 * */ if (string.IsNullOrEmpty(ktb_PalletNo.Text)) { KryptonMessageBox.Show("请输入或扫描托盘号!"); return; } WmsStkTrayResult wmsStkTrayResult = new WmsStkTrayResult(); wmsStkTrayResult.PALLET_CODE = ktb_PalletNo.Text.Trim(); wmsStkTrayResult.TRAYS_TYPE = 1; wmsStkTrayResult.TRAY_LOADED_TYPE = 1; wmsStkTrayResult.TRAY_STATUS = 55; wmsStkTrayResult.CREATE_BY = AppConfig.UserLoginResult.UserInfo.UserId; wmsStkTrayResult.UPDATE_BY = AppConfig.UserLoginResult.UserInfo.UserId; List wmsStkTrayDtlList = new List(); if (kdgv_ReceiptTrayDtlData.Rows.Count > 0 && !kdgv_ReceiptTrayDtlData.Rows[0].IsNewRow) { foreach (DataGridViewRow dvr in kdgv_ReceiptTrayDtlData.Rows) { if (!dvr.IsNewRow) { #region 校验每一行数据的完整性 string RowCheckMsg = string.Empty; if (!CheckDataGridViewRowFormat(dvr, ref RowCheckMsg)) { KryptonMessageBox.Show(RowCheckMsg); return; } #endregion int receiptDtlId = Convert.ToInt32(dvr.Cells[12].Value); WmsStkTrayDtlResult trayDtlMd = new WmsStkTrayDtlResult(); WmsStkTrayDtlExtResult trayDtlExtMd = new WmsStkTrayDtlExtResult(); WmsInReceiptRecordResult receiptRecordMd = new WmsInReceiptRecordResult(); WmsInReceiptDtlResult receiptDtlMd = GetReceiptDtlMsg(receiptDtlId); WmsInReceiptResult ReceiptDataNotEdit = ReceiptDataNotEditLst.FirstOrDefault(x => x.RECEIPT_ID == receiptDtlMd.RECEIPT_ID); string materielCode = dvr.Cells[1].Value.ToString(); string materielName = dvr.Cells[2].Value.ToString(); string materielBarcode = dvr.Cells[3].Value == null ? null : dvr.Cells[3].Value.ToString(); string batchNo = dvr.Cells[4].Value == null ? null : dvr.Cells[4].Value.ToString(); decimal receiptDtlQty = dvr.Cells[13].Value == null ? 0 : Convert.ToDecimal(dvr.Cells[13].Value.ToString()); decimal trayDtlQty = Convert.ToDecimal(dvr.Cells[6].Value); string unitCode = GetComboBoxItem((DataGridViewComboBoxCell)dvr.Cells[7]).Value; string supplierCode = GetComboBoxItem((DataGridViewComboBoxCell)dvr.Cells[8]).Value; string supplierName = GetComboBoxItem((DataGridViewComboBoxCell)dvr.Cells[8]).Text; string packageCode = dvr.Cells[9].Value == null ? null : dvr.Cells[9].Value.ToString(); DateTime productTime = Convert.ToDateTime(dvr.Cells[10].Value); DateTime expTime = Convert.ToDateTime(dvr.Cells[11].Value); trayDtlMd.MATERIEL_CODE = materielCode; trayDtlMd.MATERIEL_NAME = materielName; trayDtlMd.MATERIEL_BARCODE = materielBarcode; trayDtlMd.QTY = trayDtlQty; trayDtlMd.TRAY_DTL_STATUS = 0; trayDtlMd.CREATE_BY = AppConfig.UserLoginResult.UserInfo.UserId; trayDtlMd.UPDATE_BY = AppConfig.UserLoginResult.UserInfo.UserId; trayDtlExtMd.MATERIEL_SPEC = receiptDtlMd.MATERIEL_SPEC; trayDtlExtMd.PACKAGE_CODE = packageCode; trayDtlExtMd.UNIT_CODE = unitCode; trayDtlExtMd.BATCH_NO = batchNo; trayDtlExtMd.SUPPLIER_CODE = supplierCode; trayDtlExtMd.SUPPLIER_NAME = supplierName; trayDtlExtMd.PRODUCT_DATE = productTime; trayDtlExtMd.EXP_DATE = expTime; trayDtlExtMd.INSPECTION_RESULT = receiptDtlMd.INSPECTION_RESULT; trayDtlExtMd.LOCK_FLAG = 0; trayDtlExtMd.MIN_PKG_QTY = 0; trayDtlExtMd.ECTEND_TIME_LEN = 0; trayDtlExtMd.ITEM_STATUS = receiptDtlMd.ITEM_STATUS; trayDtlExtMd.CREATE_BY = AppConfig.UserLoginResult.UserInfo.UserId; trayDtlExtMd.UPDATE_BY = AppConfig.UserLoginResult.UserInfo.UserId; receiptRecordMd.RECEIPT_DTL_ID = receiptDtlMd.RECEIPT_DTL_ID; receiptRecordMd.RECEIPT_ID = ReceiptDataNotEdit.RECEIPT_ID; receiptRecordMd.RECEIPT_NO = ReceiptDataNotEdit.RECEIPT_NO; receiptRecordMd.ARRIVAL_NO = ReceiptDataNotEdit.ARRIVAL_NO; receiptRecordMd.REGION_CODE = ""; receiptRecordMd.REGION_NAME = ""; receiptRecordMd.BIN_CODE = ""; receiptRecordMd.BIN_NAME = ""; receiptRecordMd.PALLET_CODE = ktb_PalletNo.Text.Trim(); receiptRecordMd.RECEIPT_TIME = ReceiptDataNotEdit.RECEIPT_TIME; receiptRecordMd.RECEIPTER = ReceiptDataNotEdit.RECEIPTER; receiptRecordMd.MATERIEL_CODE = materielCode; receiptRecordMd.MATERIEL_NAME = materielName; receiptRecordMd.MATERIEL_BARCODE = materielBarcode; receiptRecordMd.MATERIEL_SPEC = receiptDtlMd.MATERIEL_SPEC; receiptRecordMd.SUPPLIER_CODE = supplierCode; receiptRecordMd.SUPPLIER_NAME = supplierName; receiptRecordMd.PACKAGE_CODE = packageCode; receiptRecordMd.UNIT_CODE = unitCode; receiptRecordMd.BATCH_NO = batchNo; receiptRecordMd.PRODUCT_DATE = productTime; receiptRecordMd.EXP_DATE = expTime; receiptRecordMd.INSPECTION_RESULT = receiptDtlMd.INSPECTION_RESULT; receiptRecordMd.ITEM_STATUS = receiptDtlMd.ITEM_STATUS; receiptRecordMd.RECEIPT_QTY = trayDtlQty; receiptRecordMd.RECEIPT_RECORD_STATUS = 0; receiptRecordMd.CREATE_BY = AppConfig.UserLoginResult.UserInfo.UserId; receiptRecordMd.UPDATE_BY = AppConfig.UserLoginResult.UserInfo.UserId; trayDtlMd.WmsStkTrayDtlExtMd = trayDtlExtMd; trayDtlMd.WmsInReceiptRecord = receiptRecordMd; wmsStkTrayDtlList.Add(trayDtlMd); } } wmsStkTrayResult.WmsStkTrayDtlList = wmsStkTrayDtlList; #region 校验明细行 不能存在相同批次、物料条码的数据行 //var strList = wmsStkTrayDtlList.GroupBy(x => new { x.MATERIEL_CODE, x.WmsStkTrayDtlExtMd.BATCH_NO }).Select(x => new { Key = x.Count(), MATERIEL_CODE = x.Key.MATERIEL_CODE, BATCH_NO = x.Key.BATCH_NO }).ToList(); //foreach (var item in strList) //{ // if (item.Key > 1) // { // KryptonMessageBox.Show($"相同的物料:【{item.MATERIEL_CODE}】,批次号:【{item.BATCH_NO}】只能添加一行数据,请修正输入数据行!"); // return; // } //} #endregion var result = WmsInstockService.wmsInReceiptService.AddWmsInReceiptTrayData(wmsStkTrayResult); if (result.Status == OperateStatus.Success) { MessageBoxTimeoutA(this.Handle, result.Message, "提示", 0, 0, 1000); //frmWmsInReceipt.RefreshFrmHost(); kdgv_ReceiptTrayDtlData.Columns.Clear(); InitDataGridViewColumn(); ktb_PalletNo.Text = ""; } else { KryptonMessageBox.Show(result.Message); } } else { KryptonMessageBox.Show("请添加收货组盘明细数据!"); } } private WmsInReceiptDtlResult GetReceiptDtlMsg(int receiptDtlId) { foreach (WmsInReceiptResult item in ReceiptDataNotEditLst) { WmsInReceiptDtlResult resultTmp = item.WmsInReceiptDtlList.FirstOrDefault(x => x.RECEIPT_DTL_ID == receiptDtlId); if (resultTmp != null) { return resultTmp; } } return null; } /// /// 校验DataGridView输入行数据的正确性 /// /// DataGridView输入行 /// 校验结果信息 /// private bool CheckDataGridViewRowFormat(DataGridViewRow dvr, ref string OutMssg) { if (dvr.Cells[1].Value == null) { OutMssg = $"第【{dvr.Index + 1}】行未输入物料编码!"; return false; } if (dvr.Cells[2].Value == null) { OutMssg = $"第【{dvr.Index + 1}】行未输入物料名称!"; return false; } if (dvr.Cells[6].Value == null) { OutMssg = $"第【{dvr.Index + 1}】行未输入收货明细数量!"; return false; } else { if (!Regex.IsMatch(dvr.Cells[6].Value.ToString(), @"([1-9]\d*(\.\d*[1-9])?)")) { OutMssg = $"第【{dvr.Index + 1}】行输入的组盘明细数量不是合法的数字类型,请检查!"; return false; } else { if (!string.IsNullOrEmpty(ktb_ReceiptNo.Text)) { decimal trayDtlQty = Convert.ToDecimal(dvr.Cells[6].Value); decimal rexeiptDtlQty_NoTray = Convert.ToDecimal(dvr.Cells[5].Value); if (trayDtlQty > rexeiptDtlQty_NoTray) { OutMssg = $"第【{dvr.Index + 1}】行输入的组盘明细数量大于收货单明细未收货组盘数量,请修改组盘明细数量!"; return false; } } } } if (dvr.Cells[7].Value == null) { OutMssg = $"第【{dvr.Index + 1}】行未选择单位信息!"; return false; } if (dvr.Cells[8].Value == null) { OutMssg = $"第【{dvr.Index + 1}】行未选择供应商信息!"; return false; } if (dvr.Cells[10].Value == null) { OutMssg = $"第【{dvr.Index + 1}】行未输入生产日期!"; return false; } if (dvr.Cells[11].Value == null) { OutMssg = $"第【{dvr.Index + 1}】行未输入失效日期!"; return false; } if (DateTime.Compare(Convert.ToDateTime(dvr.Cells[10].Value), Convert.ToDateTime(dvr.Cells[11].Value)) >= 0) { OutMssg = $"第【{dvr.Index + 1}】行未输入的生产日期大于失效日期,不符合实际情况,请重新输入!"; return false; } OutMssg = "校验成功!"; return true; } private ListItem GetComboBoxItem(DataGridViewComboBoxCell dataGridViewComboBoxCell, string value) { foreach (var item in dataGridViewComboBoxCell.Items) { if (((ListItem)item).Value == value) { return (ListItem)item; } } return new ListItem(); } private void kdgv_ReceiptTrayDtlData_RowsAdded(object sender, DataGridViewRowsAddedEventArgs e) { int index = kdgv_ReceiptTrayDtlData.Rows.Count; kdgv_ReceiptTrayDtlData.Rows[index - 1].Cells[0].Value = index; } #endregion #region DataGridView 相关事件 /// /// 编辑单元格控件时触发的事件 /// /// /// private void kdgv_ReceiptTrayDtlData_EditingControlShowing(object sender, DataGridViewEditingControlShowingEventArgs e) { if (e.Control is DataGridViewOfComoBoxCustom) { (e.Control as DataGridViewOfComoBoxCustom).AfterSelector -= new AfterSelectorEventHandler(SalePageAddOrEditForm_AfterSelector); (e.Control as DataGridViewOfComoBoxCustom).AfterSelector += new AfterSelectorEventHandler(SalePageAddOrEditForm_AfterSelector); } } /// /// 悬浮datagridview数据窗体,行选择后事件 /// /// /// void SalePageAddOrEditForm_AfterSelector(object sender, AfterSelectorEventArgs e) { try { DataGridViewRow row = e.Value as DataGridViewRow; DataRowView dataRow = row.DataBoundItem as DataRowView; WmsInReceiptDtlResult mdRecDtl = new WmsInReceiptDtlResult(); int receiptDtlId = Convert.ToInt32(dataRow["收货单明细ID"].ToString().Trim()); WmsInReceiptDtlResult receiptDtlMd = GetReceiptDtlMsg(receiptDtlId); WmsInReceiptResult ReceiptDataNotEdit = ReceiptDataNotEditLst.FirstOrDefault(x => x.RECEIPT_ID == receiptDtlMd.RECEIPT_ID); mdRecDtl = ReceiptDataNotEdit.WmsInReceiptDtlList.Find(x => x.RECEIPT_DTL_ID == receiptDtlId); kdgv_ReceiptTrayDtlData.Rows[e.RowIndex].Cells[1].Value = dataRow["物料编码"].ToString().Trim(); kdgv_ReceiptTrayDtlData.Rows[e.RowIndex].Cells[2].Value = dataRow["物料名称"].ToString().Trim(); kdgv_ReceiptTrayDtlData.Rows[e.RowIndex].Cells[3].Value = dataRow["物料条码"].ToString().Trim(); kdgv_ReceiptTrayDtlData.Rows[e.RowIndex].Cells[4].Value = mdRecDtl.BATCH_NO; kdgv_ReceiptTrayDtlData.Rows[e.RowIndex].Cells[5].Value = mdRecDtl.RECEIPT_DTL_QTY - mdRecDtl.RECEIPT_TRAY_QTY; ListItem unitLstItm = GetComboBoxItem((DataGridViewComboBoxCell)kdgv_ReceiptTrayDtlData.Rows[e.RowIndex].Cells[7], mdRecDtl.UNIT_CODE); kdgv_ReceiptTrayDtlData.Rows[e.RowIndex].Cells[7].Value = unitLstItm; ListItem supplierLstItm = GetComboBoxItem((DataGridViewComboBoxCell)kdgv_ReceiptTrayDtlData.Rows[e.RowIndex].Cells[8], mdRecDtl.SUPPLIER_CODE); kdgv_ReceiptTrayDtlData.Rows[e.RowIndex].Cells[8].Value = supplierLstItm; kdgv_ReceiptTrayDtlData.Rows[e.RowIndex].Cells[9].Value = mdRecDtl.PACKAGE_CODE; kdgv_ReceiptTrayDtlData.Rows[e.RowIndex].Cells[10].Value = mdRecDtl.PRODUCT_DATE; kdgv_ReceiptTrayDtlData.Rows[e.RowIndex].Cells[11].Value = mdRecDtl.EXP_DATE; kdgv_ReceiptTrayDtlData.Rows[e.RowIndex].Cells[13].Value = mdRecDtl.RECEIPT_DTL_QTY; kdgv_ReceiptTrayDtlData.Rows[e.RowIndex].Cells[12].Value = dataRow["收货单明细ID"].ToString().Trim(); kdgv_ReceiptTrayDtlData.CurrentCell = this.kdgv_ReceiptTrayDtlData[e.ColumnIndex, e.RowIndex + 1]; } catch (Exception ex) { KryptonMessageBox.Show(ex.Message); } } private ListItem GetComboBoxItem(DataGridViewComboBoxCell dataGridViewComboBoxCell) { foreach (var item in dataGridViewComboBoxCell.Items) { if (((ListItem)item).Text == dataGridViewComboBoxCell.Value.ToString()) { return (ListItem)item; } } return new ListItem(); } private void kdgv_ReceiptTrayDtlData_DataError(object sender, DataGridViewDataErrorEventArgs e) { } #endregion #region 鼠标右键单击事件 private void 删除选中行ToolStripMenuItem_Click(object sender, EventArgs e) { if(!kdgv_ReceiptTrayDtlData.CurrentRow.IsNewRow) { DataGridViewRow item = kdgv_ReceiptTrayDtlData.CurrentCell.OwningRow; decimal currCellTrayQty = item.Cells[6].Value == null ? 0 : Convert.ToDecimal(item.Cells[6].Value); int currCellRecDtlId = item.Cells[13].Value == null ? 0 : Convert.ToInt32(item.Cells[13].Value); WmsInReceiptDtlResult receiptDtlMd = GetReceiptDtlMsg(currCellRecDtlId); WmsInReceiptResult ReceiptDataNotEdit = ReceiptDataNotEditLst.FirstOrDefault(x => x.RECEIPT_ID == receiptDtlMd.RECEIPT_ID); if (currCellTrayQty > 0) { WmsInReceiptDtlResult recDtlMd = ReceiptDataNotEdit.WmsInReceiptDtlList.Find(x => x.RECEIPT_DTL_ID == currCellRecDtlId); ReceiptDataNotEdit.WmsInReceiptDtlList.Find(x => x.RECEIPT_DTL_ID == currCellRecDtlId).RECEIPT_TRAY_QTY = recDtlMd.RECEIPT_TRAY_QTY - currCellTrayQty; } kdgv_ReceiptTrayDtlData.Rows.Remove(kdgv_ReceiptTrayDtlData.CurrentCell.OwningRow); foreach (DataGridViewRow item1 in kdgv_ReceiptTrayDtlData.Rows) { int index = item1.Index; kdgv_ReceiptTrayDtlData.Rows[index].Cells[0].Value = index + 1; } } } private void 全部删除ToolStripMenuItem_Click(object sender, EventArgs e) { foreach (DataGridViewRow item in kdgv_ReceiptTrayDtlData.Rows) { decimal currCellTrayQty = item.Cells[6].Value == null ? 0 : Convert.ToDecimal(item.Cells[6].Value); int currCellRecDtlId = item.Cells[13].Value == null ? 0 : Convert.ToInt32(item.Cells[13].Value); WmsInReceiptDtlResult receiptDtlMd = GetReceiptDtlMsg(currCellRecDtlId); WmsInReceiptResult ReceiptDataNotEdit = ReceiptDataNotEditLst.FirstOrDefault(x => x.RECEIPT_ID == receiptDtlMd.RECEIPT_ID); if (currCellTrayQty > 0) { WmsInReceiptDtlResult recDtlMd = ReceiptDataNotEdit.WmsInReceiptDtlList.Find(x => x.RECEIPT_DTL_ID == currCellRecDtlId); ReceiptDataNotEdit.WmsInReceiptDtlList.Find(x => x.RECEIPT_DTL_ID == currCellRecDtlId).RECEIPT_TRAY_QTY = recDtlMd.RECEIPT_TRAY_QTY - currCellTrayQty; } } kdgv_ReceiptTrayDtlData.Rows.Clear(); } #endregion } }