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
}
}