using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Windows.Forms; using WMS.Frm.Base; using WMS.Model.SC; using WMS.Common; using DevExpress.XtraEditors.Repository; using WMS.Model.Base; //using WMS.FrmBaseData; using WMS.Ctrl; using WMS.Business; using WMS.Business.Common; using WMS.Business.SC; namespace WMS.FrmSC { public partial class FrmGoodsMaterialDet : FormBase { #region 变量 private List listGoods = new List(); private GoodsMaterialModel goodsMaterialModel = new GoodsMaterialModel(); private List listGoodsMaterial = new List(); private int flag = -1;//0:新增;1:修改; private string currentGoodID = string.Empty; DataTable tabUnit = null; #endregion #region 初始化 /// /// 构造函数 用于新增 /// public FrmGoodsMaterialDet(List listGoods) { InitializeComponent(); flag = 0; this.listGoods = listGoods; } /// /// 构造函数 用于修改 /// /// public FrmGoodsMaterialDet(List list) { InitializeComponent(); flag = 1; listGoodsMaterial = list; this.Text = "商品原材料对应关系-" + list[0].GOODS_ID; currentGoodID = list[0].GOODS_ID; } private void FrmGoodsMaterialDet_Load(object sender, EventArgs e) { LEPStoID.LoadData(); //单位下拉框 lueUnit.NullText = ""; lueUnit.Columns.Add(new DevExpress.XtraEditors.Controls.LookUpColumnInfo("VC_DICTIONARY_NAME", "单位")); lueUnit.ValueMember = "VC_CHAR_VALUE"; lueUnit.DisplayMember = "VC_DICTIONARY_NAME"; try { tabUnit = IBussFactory.Instance().GetCustomCtrlData("t_sys_dictionary_tab", "VC_CHAR_VALUE", "VC_DICTIONARY_NAME", " VC_DICTIONARY_TYPE = 'vc_uom' and c_flag = '1'", ""); } catch (Exception ex) { SystemCommon.ShowInfoMessageBox("加载单位时出错了:" + ex.Message); } lueUnit.DataSource = tabUnit; if (flag == 1) { bsGoodsMaterial.DataSource = listGoodsMaterial; GVGoodsMaterial.RefreshData(); dicGoods.Enabled = false; dicGoods.t_dictonary.Text = listGoodsMaterial[0].GOODS_NAME; } } #endregion #region 删除 private void btnDel_Click(object sender, EventArgs e) { if (listGoodsMaterial.Count == 0) { SystemCommon.ShowInfoMessageBox("请先选择要删除的数据"); return; } goodsMaterialModel = GVGoodsMaterial.GetFocusedRow() as GoodsMaterialModel; listGoodsMaterial.Remove(goodsMaterialModel); bsGoodsMaterial.DataSource = listGoodsMaterial; GVGoodsMaterial.RefreshData(); } #endregion #region 保存 private void btnSave_Click(object sender, EventArgs e) { /*验证*/ if (string.IsNullOrEmpty(dicGoods.t_dictonary.Text)) { SystemCommon.ShowInfoMessageBox("请选择成品"); dicGoods.Focus(); return; } if (t_goodsNum.Text.Trim().Length == 0) { SystemCommon.ShowInfoMessageBox("基础数量不能为空"); t_goodsNum.Focus(); return; } if (!SystemCommon.IsPositiveFloat(t_goodsNum.Text.Trim())) { SystemCommon.ShowInfoMessageBox("基础数量为数字"); t_goodsNum.Focus(); t_goodsNum.SelectAll(); return; } foreach (var item in listGoodsMaterial) { if (item.STAND_NUM == 0) { SystemCommon.ShowInfoMessageBox("标准原料数必须大于0"); GVGoodsMaterial.Focus(); return; } if (item.MAX_NUM == 0) { SystemCommon.ShowInfoMessageBox("最大原料数必须大于0"); GVGoodsMaterial.Focus(); return; } if (item.MAX_NUM < item.STAND_NUM) { SystemCommon.ShowInfoMessageBox("最大原料数不能小于标准原料数"); GVGoodsMaterial.Focus(); return; } item.GOODS_ID = currentGoodID; item.GOODS_NUM =decimal.Parse( t_goodsNum.Text); item.GOODS_UNIT = LEPStoID.EditValue.ToString(); item.SCALING = (Math.Round(item.STAND_NUM / item.GOODS_NUM,4)).ToString(); GVGoodsMaterial.RefreshData(); } if (flag == 0) { //增加 /*增加*/ string errText = string.Empty; try { errText = IBussFactory.Instance().InsertGoodsMaterial(listGoodsMaterial); if (string.IsNullOrEmpty(errText))//如果增加成功 { SystemCommon.ShowInfoMessageBox("增加成功"); } } catch (Exception ex) { SystemCommon.ShowInfoMessageBox("新增出错了:" + ex.Message); } } else if (flag == 1)//修改 { /*修改*/ string errText = string.Empty; try { errText = IBussFactory.Instance().UpdateGoodsMaterial(listGoodsMaterial); if (string.IsNullOrEmpty(errText))//如果修改成功 { SystemCommon.ShowInfoMessageBox("修改成功"); } } catch (Exception ex) { SystemCommon.ShowInfoMessageBox("修改出错了:" + ex.Message); } } } #endregion #region 关闭 private void btnClose_Click(object sender, EventArgs e) { if (DialogResult.OK != SystemCommon.ShowMessageBoxResult("确定放弃正在编辑的数据?")) { return; } this.Close(); this.Dispose(); } #endregion //private void GVGoodsMaterialStorage_CustomRowCellEditForEditing(object sender, DevExpress.XtraGrid.Views.Grid.CustomRowCellEditEventArgs e) //{ // if (e.RowHandle < 0 || flag == -1) // { // return; // } // if (e.Column.Name == "colOUT_AREA_ID" || e.Column.Name == "colIN_AREA_ID") // { // string strResult = string.Empty; // try // { // strResult = WebLockConfig.Instance.Common.GetCustomCtrlData("T_BASE_STORAGE_AREA", "STORAGE_AREA_ID", "STORAGE_AREA_NAME", " STORAGE_ID = '" + GVGoodsMaterialStorage.GetFocusedRowCellValue("STORAGE_ID").ToString() + "'", ""); // } // catch (Exception) // { // SystemCommon.ShowInfoMessageBox("未知错误,请检查网络连接!如仍无法解决问题请联系我们!"); // } // lueAreas.Properties.DataSource = Newtonsoft.Json.JsonConvert.DeserializeObject(strResult); // e.RepositoryItem = lueAreas;//当前单元格绑定控件 // } //} /// #region 选择商品 /// /// /// private void ctrlDicGoods_Button_Click(object sender, EventArgs e) { if (ctrlDicGoods.SelectTable.Rows.Count == 0) { //SystemCommon.ShowInfoMessageBox("您未选择商品!"); return; } //商品集合 List listGoodsInfoModel = ConvertHelper.ConvertToList(ctrlDicGoods.SelectTable); /*将选择的商品加入明细*/ foreach (GoodsInfoModel item in listGoodsInfoModel) { GoodsMaterialModel model = new GoodsMaterialModel(); model.GOODS_ID = dicGoods.TextBoxFlag; model.GOODS_NAME = dicGoods.t_dictonary.Text; model.MATERIAL_ID = item.GOODS_ID; model.MATERIAL_NAME = item.GOODS_NAME; model.PRICE = item.PRICE; model.UNIT = item.UNIT; model.OPERAT_MAN = userData.USER_ID; model.OPERAT_DATE = System.DateTime.Now; //判断该商品是否已经在明细中后添加 bool had = false; foreach (GoodsMaterialModel wntModel in listGoodsMaterial) { if (wntModel.MATERIAL_ID == model.MATERIAL_ID) { had = true; } } if (!had) { listGoodsMaterial.Add(model); } } if (listGoodsMaterial.Count > 0) { bsGoodsMaterial.DataSource = listGoodsMaterial; GVGoodsMaterial.RefreshData(); ////焦点置于采购数量 //GVGoodsMaterialGoods.FocusedColumn = GVGoodsMaterialGoods.Columns[1]; //GVGoodsMaterialGoods.FocusedRowHandle = 0; } else { bsGoodsMaterial.DataSource = listGoodsMaterial; GVGoodsMaterial.RefreshData(); SystemCommon.ShowInfoMessageBox("未选择任何原材料或所选择的原材料已存在,请重新选择"); } } #endregion /// #region 成品选择 /// /// /// private void dicGoods_Button_Click(object sender, EventArgs e) { if (dicGoods.SelectTable.Rows.Count == 0) { SystemCommon.ShowInfoMessageBox("检测是否配置了物料属性!"); return; } //商品集合 List listGoodsInfo = ConvertHelper.ConvertToList(dicGoods.SelectTable); if (listGoods.Exists(p => p.GOODS_ID == listGoodsInfo[0].GOODS_ID)) { SystemCommon.ShowInfoMessageBox("您选择的商品已经是组合商品,请找到该商品后修改"); return; } currentGoodID = listGoodsInfo[0].GOODS_ID;//保存当前成品ID dicGoods.t_dictonary.Text = listGoodsInfo[0].GOODS_NAME; foreach (var item in listGoodsMaterial) { item.GOODS_ID = dicGoods.TextBoxFlag; item.GOODS_NAME = dicGoods.t_dictonary.Text; } } #endregion //private void repositoryItemHyperLinkEdit1_Click(object sender, EventArgs e) //{ // GoodsMaterialModel model = GVGoodsMaterial.GetFocusedRow() as GoodsMaterialModel; // if (model != null && !string.IsNullOrEmpty(model.GOODS_ID)) // { // FrmGoodsInfoDet.IFlag = 2; // FrmGoodsInfoDet.StrGoodsID = model.GOODS_ID; // LoadForm load = new LoadForm(); // DevExpress.XtraSplashScreen.SplashScreenManager.ShowForm(load, load.GetType(), false, true, false, 0); // DevExpress.XtraSplashScreen.SplashScreenManager.Default.SetWaitFormDescription("正在读取商品信息...."); // FrmGoodsInfoDet.GetInstance().Show(); // } //} private void Unit_CustomColumnDisplayText(object sender, DevExpress.XtraGrid.Views.Base.CustomColumnDisplayTextEventArgs e) { if (e.Column.FieldName == "UNIT") { if (e.Value == null) { return; } else { try { var arrayUnitRows = tabUnit.Select(string.Format("VC_CHAR_VALUE='{0}'", e.Value.ToString().Trim())); e.DisplayText = arrayUnitRows == null ? "" : arrayUnitRows[0]["VC_DICTIONARY_NAME"].ToString(); } catch (Exception) { } } } } #region 表格单元值变化时 private void GVGoodsMaterial_CellValueChanged(object sender, DevExpress.XtraGrid.Views.Base.CellValueChangedEventArgs e) { if (e.RowHandle < 0) { return; } goodsMaterialModel = GVGoodsMaterial.GetFocusedRow() as GoodsMaterialModel; goodsMaterialModel.OPERAT_MAN = userData.USER_ID; goodsMaterialModel.OPERAT_DATE = DateTime.Now; if (e.Column.Name == "colSTAND_NUM") { if (goodsMaterialModel.MAX_NUM == 0) { goodsMaterialModel.MAX_NUM = goodsMaterialModel.STAND_NUM; goodsMaterialModel.SCALING = (Math.Round(goodsMaterialModel.STAND_NUM / goodsMaterialModel.GOODS_NUM, 4)).ToString(); } } } #endregion private void LEPStoID_EditValueChanged(object sender, EventArgs e) { if(listGoodsMaterial==null) { return; } if(listGoodsMaterial.Count>0) { foreach(GoodsMaterialModel goodsModel in listGoodsMaterial) { goodsModel.UNIT = LEPStoID.EditValue.ToString() ; } GVGoodsMaterial.RefreshData(); } } } }