/******************************************************************************* * Copyright(c) 2015 DongkeSoft All rights reserved. / Confidential * 类的信息: * 1.程序名称:F_RPT_010201_1.cs * 2.功能描述:发货单编辑 * 编辑履历: * 作者 日期 版本 修改内容 * 冯林勇 2023/1/11 1.00 新建 *******************************************************************************/ using Dongke.IBOSS.PRD.Basics.BaseResources; using Dongke.IBOSS.PRD.Client.CommonModule; using Dongke.IBOSS.PRD.Client.Controls; using Dongke.IBOSS.PRD.WCF.DataModels; using Dongke.IBOSS.PRD.WCF.Proxys; using System; using System.Data; using System.Windows.Forms; namespace Dongke.IBOSS.PRD.Client.PMModule { public partial class F_PM_3502 : DKDockPanelBase { #region 成员变量 // 窗体的单例模式 private static F_PM_3502 _instance; // 存储窗口的编辑状态 private Constant.FormMode _editStatus; private int _sendoutGoodsLogID; private int _warehouseID; private DataTable _sapInvertory; #endregion #region 构造函数 public F_PM_3502() { InitializeComponent(); } public F_PM_3502(Constant.FormMode editStatus, int sendoutGoodsLogID) { InitializeComponent(); this._editStatus = editStatus; // 根据新建、编辑状态为标题赋值 if (editStatus == Constant.FormMode.Edit) { this.Text = "编辑发货单"; this._sendoutGoodsLogID = sendoutGoodsLogID; } // 按钮文本 this.btnSave.Text = ButtonText.BTN_SAVE; } #endregion #region 单例模式 /// /// 单例模式,防止重复创建窗体 /// public static F_PM_3502 Instance { get { if (_instance == null || _instance.IsDisposed) { _instance = new F_PM_3502(); } return _instance; } } #endregion #region 事件处理 /// /// 窗体加载事件 /// /// /// private void F_PM_3502_Load(object sender, EventArgs e) { try { #region 页面数据源 #region 发出/接收仓库 //发出仓库 ServiceResultEntity sreType = DoAsync(() => { return ReportModuleProxy.Service.GetRptDictionaryData(0, "TPC027"); } ); if (sreType.Data == null) { return; } if (sreType.Data != null && sreType.Data.Tables[0].Rows.Count > 0) { // 设置空选项 DataRow dataRow = sreType.Data.Tables[0].NewRow(); dataRow["DictionaryID"] = DBNull.Value; dataRow["DictionaryValue"] = Constant.CBO_SELECT_EMPTY_NAME; dataRow["DisplayNo"] = 0; sreType.Data.Tables[0].Rows.InsertAt(dataRow, 0); this.cmbWAREHOUSINGCODE.DisplayMember = "DictionaryValue"; this.cmbWAREHOUSINGCODE.ValueMember = "DictionaryID"; this.cmbWAREHOUSINGCODE.DataSource = sreType.Data.Tables[0]; } //接收仓库 sreType = DoAsync(() => { return ReportModuleProxy.Service.GetRptDictionaryData(0, "TPC028"); } ); if (sreType.Data == null) { return; } if (sreType.Data != null && sreType.Data.Tables[0].Rows.Count > 0) { // 设置空选项 DataRow dataRow = sreType.Data.Tables[0].NewRow(); dataRow["DictionaryID"] = DBNull.Value; dataRow["DictionaryValue"] = Constant.CBO_SELECT_EMPTY_NAME; dataRow["DisplayNo"] = 0; sreType.Data.Tables[0].Rows.InsertAt(dataRow, 0); this.cmbRECEIVECODE.DisplayMember = "DictionaryValue"; this.cmbRECEIVECODE.ValueMember = "DictionaryID"; this.cmbRECEIVECODE.DataSource = sreType.Data.Tables[0]; } #endregion #region 车牌号 //接收仓库 sreType = DoAsync(() => { return ReportModuleProxy.Service.GetRptDictionaryData(0, "TPC029"); } ); if (sreType.Data == null) { return; } if (sreType.Data != null && sreType.Data.Tables[0].Rows.Count > 0) { // 设置空选项 DataRow dataRow = sreType.Data.Tables[0].NewRow(); dataRow["DictionaryID"] = DBNull.Value; dataRow["DictionaryValue"] = Constant.CBO_SELECT_EMPTY_NAME; dataRow["DisplayNo"] = 0; sreType.Data.Tables[0].Rows.InsertAt(dataRow, 0); this.cmbCARPLATENAME.DisplayMember = "DictionaryValue"; this.cmbCARPLATENAME.ValueMember = "DictionaryID"; this.cmbCARPLATENAME.DataSource = sreType.Data.Tables[0]; } #endregion #endregion //编辑查询数据 if (this._sendoutGoodsLogID > 0) { ClientRequestEntity cre = new ClientRequestEntity(); cre.NameSpace = "F_PM_3502"; cre.Name = "GetSendInfo"; cre.Properties["SENDOUTGOODSLOGID"] = this._sendoutGoodsLogID; ServiceResultEntity sre = DoAsync(() => { return PMModuleProxyNew.Service.HandleRequest(cre); }); if (sre.Status == Constant.ServiceResultStatus.Success) { if (sre != null && sre.Data.Tables.Count > 0 && sre.Data.Tables[0].Rows.Count > 0) { DataTable dtable = sre.Data.Tables[0]; this.txtSENDOUTCODE.Text = dtable.Rows[0]["SENDOUTCODE"].ToString(); this.cmbWAREHOUSINGCODE.SelectedValue = Convert.ToInt32(dtable.Rows[0]["WAREHOUSINGID"]); this.cmbRECEIVECODE.SelectedValue = Convert.ToInt32(dtable.Rows[0]["RECEIVEID"]); this.cmbCARPLATENAME.SelectedValue = Convert.ToInt32(dtable.Rows[0]["CARPLATEID"]); this.dtpAccountDateStart.Value = (DateTime)dtable.Rows[0]["AccountDate"]; this.c_DateTimePicker1.Value = (DateTime)dtable.Rows[0]["DELIVERDATE"]; //cre.Properties["AccountDateStart"] = this.dtpAccountDateStart.Value; //cre.Properties["DELIVERDATE"] = this.c_DateTimePicker1.Value; if (sre.Data.Tables[1].Rows.Count > 0) { DataTable dtable2 = sre.Data.Tables[1]; this.dgvSendDetail.DataSource = dtable2; } } } _warehouseID = Convert.ToInt32(this.cmbWAREHOUSINGCODE.SelectedValue); //调用sap库存查询接口 cre = new ClientRequestEntity(); cre.NameSpace = "F_PM_3502"; cre.Name = "GetSendOutGoodsLogs"; cre.Properties["LGORT"] = this.cmbWAREHOUSINGCODE.SelectedValue; sre = DoAsync(() => { return PMModuleProxyNew.Service.HandleRequest(cre); }); if (sre.Status == Constant.ServiceResultStatus.Success) { if (sre != null && sre.Data.Tables.Count > 0 && sre.Data.Tables[0].Rows.Count > 0) { _sapInvertory = sre.Data.Tables[0]; } } } } catch (Exception ex) { // 对异常进行共通处理 ExceptionManager.HandleEventException(this.ToString(), System.Reflection.MethodBase.GetCurrentMethod().Name, this.Text, ex); } } /// /// 窗体关闭事件 /// /// /// private void F_PM_3502_FormClosed(object sender, FormClosedEventArgs e) { _instance = null; } /// /// 保存 /// /// /// private void btnSave_Click(object sender, EventArgs e) { try { ((DataTable)this.dgvSendDetail.DataSource).AcceptChanges(); ClientRequestEntity cre = new ClientRequestEntity(); cre.NameSpace = "F_PM_3502"; cre.Name = "SaveSendInfo"; cre.Properties["SENDOUTGOODSLOGID"] = this._sendoutGoodsLogID; cre.Properties["OUTLABELCODE"] = this.txtOUTLABELCODE.Text; cre.Properties["SENDOUTCODE"] = this.txtSENDOUTCODE.Text; cre.Properties["WAREHOUSINGCODE"] = this.cmbWAREHOUSINGCODE.SelectedValue; cre.Properties["RECEIVECODE"] = this.cmbRECEIVECODE.SelectedValue; cre.Properties["CARPLATECODE"] = this.cmbCARPLATENAME.SelectedValue; cre.Properties["WAREHOUSINGENAME"] = this.cmbWAREHOUSINGCODE.Text; cre.Properties["RECEIVEENAME"] = this.cmbRECEIVECODE.Text; cre.Properties["CARPLATENAME"] = this.cmbCARPLATENAME.Text; cre.Properties["AccountDateStart"] = this.dtpAccountDateStart.Value; cre.Properties["DELIVERDATE"] = this.c_DateTimePicker1.Value; if (dgvSendDetail.DataSource != null) { DataTable detail = (DataTable)(dgvSendDetail.DataSource); cre.Data = new DataSet(); cre.Data.Tables.Add(detail.Copy()); } else { MessageBox.Show(string.Format("发货单信息不能为空"), this.Text, MessageBoxButtons.OK, MessageBoxIcon.Warning); return; } ServiceResultEntity sre = DoAsync(() => { return PMModuleProxyNew.Service.HandleRequest(cre); }); if (sre.OtherStatus < 0 ) { //失败 MessageBox.Show(sre.Message, this.Text, MessageBoxButtons.OK, MessageBoxIcon.Warning, MessageBoxDefaultButton.Button1); return; } else { //成功 MessageBox.Show("保存成功", this.Text, MessageBoxButtons.OK, MessageBoxIcon.Warning, MessageBoxDefaultButton.Button1); return; } } catch (Exception ex) { this.btnSave.Enabled = true; // 对异常进行共通处理 ExceptionManager.HandleEventException(this.ToString(), System.Reflection.MethodBase.GetCurrentMethod().Name, this.Text, ex); } } /// ///编辑时输入外箱码事件 /// /// /// private void txtOUTLABELCODE_KeyDown(object sender, KeyEventArgs e) { if (e.KeyCode == Keys.Enter && !string.IsNullOrEmpty(this.txtOUTLABELCODE.Text.Trim())) { //调用查询 string code = this.txtOUTLABELCODE.Text.Trim(); ClientRequestEntity cre = new ClientRequestEntity(); cre.NameSpace = "F_PM_3502"; cre.Name = "CheckSendInfo"; cre.Properties["code"] = code; ServiceResultEntity sre = DoAsync(() => { return PMModuleProxyNew.Service.HandleRequest(cre); }); if (string.IsNullOrEmpty(sre.Message)) { if (sre.Data.Tables != null && sre.Data.Tables[0].Rows.Count > 0) { //先校验物料的库存 DataRow data = sre.Data.Tables[0].Rows[0]; string materialCode = data["MATERIALCODE"].ToString(); decimal counts = Convert.ToDecimal(data["COUNT"]); DataRow[] row = _sapInvertory.Select(" MATNR = '" + materialCode + "'"); decimal count = 0; for (int i = 0; i < row.Length; i++) { count += Convert.ToDecimal(row[i]["LABST"]); } if (counts > count) { MessageBox.Show("库存不足", this.Text, MessageBoxButtons.OK, MessageBoxIcon.Warning, MessageBoxDefaultButton.Button1); return; } else { var dt = (DataTable)this.dgvSendDetail.DataSource; if (dt == null) { dt = new DataTable(); } DataRow dr = dt.NewRow(); dr["BANMA"] = data["BANMA"]; dr["GOODSCODE"] = data["GOODSCODE"]; dr["MATERIALCODE"] = data["MATERIALCODE"]; dr["MATERIALREMARK"] = data["MATERIALREMARK"]; dr["BINDINGCOUNT"] = data["COUNT"]; dr["FINISHEDLOADBATCHNO"] = data["FINISHEDLOADBATCHNO"]; dt.Rows.Add(dr); this.dgvSendDetail.DataSource = dt; } } } else { MessageBox.Show(sre.Message, this.Text, MessageBoxButtons.OK, MessageBoxIcon.Warning, MessageBoxDefaultButton.Button1); return; } } } /// /// 发货仓库值变化 /// /// /// private void cmbWAREHOUSINGCODE_SelectedIndexChanged(object sender, EventArgs e) { try { if (_warehouseID > 0 && _warehouseID != Convert.ToInt32(this.cmbWAREHOUSINGCODE.SelectedValue)) { //当仓库值变化时,提示如果变化发出仓,明细数据将清空 DialogResult dialogResult = MessageBox.Show(string.Format(Messages.MSG_CMN_Q002, "发出仓", "变更"), this.Text, MessageBoxButtons.YesNo, MessageBoxIcon.Question, MessageBoxDefaultButton.Button2); if (dialogResult.Equals(DialogResult.No)) { this.cmbWAREHOUSINGCODE.SelectedValue = _warehouseID; return; } //清除表格数据 if (dgvSendDetail.DataSource is DataTable dataTable) { // 清除所有行,但保留列结构 dataTable.Rows.Clear(); } _warehouseID = Convert.ToInt32(this.cmbWAREHOUSINGCODE.SelectedValue); //调用sap库存查询接口 ClientRequestEntity cre = new ClientRequestEntity(); cre.NameSpace = "F_PM_3502"; cre.Name = "GetSendOutGoodsLogs"; cre.Properties["LGORT"] = this.cmbWAREHOUSINGCODE.SelectedValue; ServiceResultEntity sre = DoAsync(() => { return PMModuleProxyNew.Service.HandleRequest(cre); }); if (sre.Status == Constant.ServiceResultStatus.Success) { if (sre != null && sre.Data.Tables.Count > 0 && sre.Data.Tables[0].Rows.Count > 0) { _sapInvertory = sre.Data.Tables[0]; } } } } catch (Exception ex) { this.btnSave.Enabled = true; // 对异常进行共通处理 ExceptionManager.HandleEventException(this.ToString(), System.Reflection.MethodBase.GetCurrentMethod().Name, this.Text, ex); } } #endregion } }