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 System.Collections; using CoreFS.CA06; using com.steering.pss.plnsaleord.order.model; using Core.Mes.Client.Comm.Tool; using Core.Mes.Client.Comm.Server; using Core.Mes.Client.Comm; using Infragistics.Win.UltraWinGrid; using Core.StlMes.Client.PlnSaleOrd.BaseMethod; using com.steering.pss.plnsaleord.ordAmCal.model; namespace Core.StlMes.Client.PlnSaleOrd.PopupWindow { public partial class FrmReqRequest : FrmBase { /// /// 合同订货量 /// private double orderQty = 0; private PlnSaleorderRNumEntity reqEntity = null; public FrmReqRequest() { InitializeComponent(); EntityHelper.ShowGridCaption(ultraGridReqApply.DisplayLayout.Bands[0]); } public FrmReqRequest(OpeBase opeBase, PlnSaleorderRNumEntity reqentity, double qty) { orderQty = qty; reqEntity = reqentity; this.ob = opeBase; InitializeComponent(); EntityHelper.ShowGridCaption(ultraGridReqApply.DisplayLayout.Bands[0]); } private void FrmReqRequest_Load(object sender, EventArgs e) { ultraTextOrderNo.Value = reqEntity.OrderNo + "/" + reqEntity.OrderSeq; ultraTextOrderUnit.Value = reqEntity.OrderUnit; ultraNumericOrderQty.Value = orderQty; DoQuery(); } private void ultraToolbarsReq_ToolClick(object sender, Infragistics.Win.UltraWinToolbars.ToolClickEventArgs e) { switch (e.Tool.Key) { case "doQuery": DoQuery(); break; case "doAdd": DoAdd(); break; case "doModify": DoModify(); break; case "doDelete": DoDelete(); break; case "Close": this.Close(); break; //case "doAddOld": // DoAddOld(); // break; //case "doModifyOld": // DoModifyOld(); // break; } } /// /// 查询 /// private void DoQuery() { List listSource = EntityHelper.GetData( "com.steering.pss.plnsaleord.order.CoreReqRequest.getOrdRNum", new object[] { reqEntity.OrdLnDlyPk }, this.ob); slmPlnSaleorderRNumEntitybindingSource.DataSource = listSource; PlanComm.setGridActivation(ultraGridReqApply.DisplayLayout.Bands[0], "CHC"); } /// /// 新增补量申请 /// private void DoAdd() { try { ArrayList list = new ArrayList(); double orderQty = 0; if (!double.TryParse(this.ultraNumericReq.Value.ToString(), out orderQty)) { MessageUtil.ShowTips("申请量有误!"); return; } if (orderQty <= 0) { MessageUtil.ShowTips("申请量必须大于零!"); return; } DataTable dt = ServerHelper.GetData("com.steering.pss.plnsaleord.order.CoreReqRequest.getLastPlnOrdProc", new Object[] { reqEntity.OrdLnDlyPk }, this.ob); if (dt == null || dt.Rows.Count <= 0) { MessageUtil.ShowError("没有找到对应交货行信息!"); return; } string ordLnPk = reqEntity.OrdLnDlyPk.Substring(0, reqEntity.OrdLnDlyPk.Length - 3); DataTable dtReq = ServerHelper.GetData("com.steering.pss.plnsaleord.order.CoreReqRequest.getPlnOrdLineReqQtyMax", new Object[] { ordLnPk }, this.ob); if (dtReq != null && dtReq.Rows.Count > 0) { double reqQtyMax = 0;//合同行最大允许补量 double reqQtySum = 0;//合同行已经补量的和 DataTable dtReqSum = ServerHelper.GetData("com.steering.pss.plnsaleord.order.CoreReqRequest.getLineReqQtySum", new Object[] { ordLnPk }, this.ob); if (dtReqSum != null && dtReqSum.Rows.Count > 0) { double.TryParse(dtReqSum.Rows[0]["REP_QTY_SUM"].ToString(), out reqQtySum); } if (double.TryParse(dtReq.Rows[0]["REQ_QTY_MAX"].ToString(), out reqQtyMax)) { if (Math.Round(orderQty, 3) > Math.Round(reqQtyMax - reqQtySum, 3)) { string payWtUnit = reqEntity.OrderUnit; if (!reqEntity.OrderUnit.Trim().Equals("支")) { payWtUnit = "吨"; } MessageUtil.ShowError("申请量超过合同行允许补量上限!(合同行订货总量:" + dtReq.Rows[0]["REQ_QTY_SUM"].ToString() + reqEntity.OrderUnit + ",已缴库总量:" + dtReq.Rows[0]["PAY_WT_SUM"].ToString() + payWtUnit + ",最多允许补" + Math.Round(reqQtyMax - reqQtySum, 3).ToString() + reqEntity.OrderUnit + "。)"); return; } } } string desginKey = dt.Rows[0]["DESGIN_KEY"].ToString(); if (desginKey.Equals("")) { DataTable dtCraft = ServerHelper.GetData("com.steering.pss.plnsaleord.order.CorePlnSaleOrder.queryOrdCraftOrdDesign", new object[] { reqEntity.OrdLnDlyPk.Substring(0, reqEntity.OrdLnDlyPk.Length - 3) }, this.ob); if (dtCraft != null && dtCraft.Rows.Count > 0) { bool isSpecCraft = false; foreach (DataRow dr in dtCraft.Rows) { if (dr["VALIDFLAG"].ToString().Equals("1")) { isSpecCraft = true; desginKey = dr["DESGIN_KEY"].ToString(); break; } } if (!isSpecCraft) { desginKey = dtCraft.Rows[0]["DESGIN_KEY"].ToString(); } } } string outsStlPipeFl = dt.Rows[0]["OUTS_STL_PIPE_FL"].ToString(); string processSeq = dt.Rows[0]["PROCESS_SEQ"].ToString(); string mscPline = dt.Rows[0]["INDEX_SEQ"].ToString(); string plnDivideId = dt.Rows[0]["PLN_DIVIDE_ID"].ToString(); string bom = dt.Rows[0]["BOM"].ToString(); string plineD = dt.Rows[0]["GROUP_ROLL"].ToString(); string codeJg = dt.Rows[0]["CODE_JG"].ToString(); string rollMonth = dt.Rows[0]["ROLL_MONTH"].ToString(); DateTime date = new DateTime(); double putRate = 1; if (DateTime.TryParse(rollMonth, out date)) { //投料率 putRate = FrmPlnSaleOrder.queryPutRate(date.Year, date.Month, this.ob); } reqEntity.RepQty = orderQty.ToString(); reqEntity.RepReason = this.ultraTextReqReason.Text.Trim(); reqEntity.ReqName = UserInfo.GetUserName(); if (processSeq.Contains("D") && !plineD.Trim().Equals("C072") && !outsStlPipeFl.Equals("121903") && !outsStlPipeFl.Equals("121902")) { if (desginKey.Equals("")) { MessageUtil.ShowError("未找到工艺设计!"); return; } OutOrdParamEntity outOrdParam = new OutOrdParamEntity(); InOrdParamEntity inOrdParam = new InOrdParamEntity(); PlnGetOrdAmount ordAmountCal = new PlnGetOrdAmount(this.ob); string errMessage = ""; inOrdParam = ordAmountCal.getInOrdPlnQtyParam(orderQty, reqEntity.OrderUnit, desginKey, mscPline, reqEntity.OrdLnDlyPk, plineD, bom, codeJg, putRate); if (!ordAmountCal.isRightParam(inOrdParam, desginKey, codeJg, bom, plineD, out errMessage)) { MessageUtil.ShowError(errMessage); return; } ordAmountCal.InEnity = inOrdParam; outOrdParam = ordAmountCal.getOrdAmount(); if (outOrdParam.ErrCode == -1) { MessageUtil.ShowError("合同量转换出错(" + outOrdParam.ErrMessage + ")。"); return; } reqEntity.Reqweight = outOrdParam.WeightInA.ToString(); reqEntity.ReqWeightUnit = outOrdParam.WeightUnit; } else { #region 管坯或外购管 double weightPerM = 0; double.TryParse(dt.Rows[0]["WEIGHT_PER_M"].ToString(), out weightPerM); switch (reqEntity.OrderUnit) { case "米": reqEntity.Reqweight = Math.Round(weightPerM * Convert.ToDouble(ultraNumericReq.Value), 3).ToString(); reqEntity.ReqWeightUnit = "吨"; break; case "英尺": reqEntity.Reqweight = Math.Round(weightPerM * PlanComm.FootoMi(Convert.ToDouble(ultraNumericReq.Value)), 3).ToString(); reqEntity.ReqWeightUnit = "吨"; break; case "支": reqEntity.Reqweight = this.ultraNumericReq.Value.ToString(); reqEntity.ReqWeightUnit = "支"; break; default: reqEntity.ReqWeightUnit = "吨"; reqEntity.Reqweight = this.ultraNumericReq.Value.ToString(); break; } #endregion } list.Add(reqEntity); int succed = ServerHelper.SetData("com.steering.pss.plnsaleord.order.CoreReqRequest.addOrderRNum", new Object[] { list }, this.ob); if (succed > 0) { MessageUtil.ShowTips("新增成功!"); } else { MessageUtil.ShowTips("新增失败!"); } } catch (Exception ex) { if (ex is MESException) { } else { MessageBox.Show(ex.Message); } } DoQuery(); } /// /// 修改申请 /// private void DoModify() { try { double orderQty = 0; UltraGridRow ugr = ultraGridReqApply.ActiveRow; if (ugr == null) { return; } if (!double.TryParse(this.ultraNumericReq.Value.ToString(), out orderQty)) { MessageUtil.ShowTips("申请量有误!"); return; } if (orderQty <= 0) { MessageUtil.ShowTips("申请量必须大于零!"); return; } DataTable dt = ServerHelper.GetData("com.steering.pss.plnsaleord.order.CoreReqRequest.getLastPlnOrdProc", new Object[] { reqEntity.OrdLnDlyPk }, this.ob); if (dt == null || dt.Rows.Count <= 0) { MessageUtil.ShowError("没有找到对应交货行信息!"); return; } string ordLnPk = reqEntity.OrdLnDlyPk.Substring(0, reqEntity.OrdLnDlyPk.Length - 3); DataTable dtReq = ServerHelper.GetData("com.steering.pss.plnsaleord.order.CoreReqRequest.getPlnOrdLineReqQtyMax", new Object[] { ordLnPk }, this.ob); if (dtReq != null && dtReq.Rows.Count > 0) { double reqQtyMax = 0;//合同行最大允许补量 double reqQtySum = 0;//合同行已经补量的和 DataTable dtReqSum = ServerHelper.GetData("com.steering.pss.plnsaleord.order.CoreReqRequest.getLineReqQtySum", new Object[] { ordLnPk, ugr.Cells["RNumId"].Value.ToString() }, this.ob); if (dtReqSum != null && dtReqSum.Rows.Count > 0) { double.TryParse(dtReqSum.Rows[0]["REP_QTY_SUM"].ToString(), out reqQtySum); } if (double.TryParse(dtReq.Rows[0]["REQ_QTY_MAX"].ToString(), out reqQtyMax)) { if (Math.Round(orderQty, 3) > Math.Round(reqQtyMax - reqQtySum, 3)) { string payWtUnit = reqEntity.OrderUnit; if (!reqEntity.OrderUnit.Trim().Equals("支")) { payWtUnit = "吨"; } MessageUtil.ShowError("申请量超过合同行允许补量上限!(合同行订货总量:" + dtReq.Rows[0]["REQ_QTY_SUM"].ToString() + reqEntity.OrderUnit + ",已缴库总量:" + dtReq.Rows[0]["PAY_WT_SUM"].ToString() + payWtUnit + ",最多允许补" + Math.Round(reqQtyMax - reqQtySum, 3).ToString() + reqEntity.OrderUnit + "。)"); return; } } } string desginKey = dt.Rows[0]["DESGIN_KEY"].ToString(); if (desginKey.Equals("")) { DataTable dtCraft = ServerHelper.GetData("com.steering.pss.plnsaleord.order.CorePlnSaleOrder.queryOrdCraftOrdDesign", new object[] { reqEntity.OrdLnDlyPk.Substring(0, reqEntity.OrdLnDlyPk.Length - 3) }, this.ob); if (dtCraft != null && dtCraft.Rows.Count > 0) { bool isSpecCraft = false; foreach (DataRow dr in dtCraft.Rows) { if (dr["VALIDFLAG"].ToString().Equals("1")) { isSpecCraft = true; desginKey = dr["DESGIN_KEY"].ToString(); break; } } if (!isSpecCraft) { desginKey = dtCraft.Rows[0]["DESGIN_KEY"].ToString(); } } } string outsStlPipeFl = dt.Rows[0]["OUTS_STL_PIPE_FL"].ToString(); string processSeq = dt.Rows[0]["PROCESS_SEQ"].ToString(); string mscPline = dt.Rows[0]["INDEX_SEQ"].ToString(); string plnDivideId = dt.Rows[0]["PLN_DIVIDE_ID"].ToString(); string bom = dt.Rows[0]["BOM"].ToString(); string plineD = dt.Rows[0]["GROUP_ROLL"].ToString(); string codeJg = dt.Rows[0]["CODE_JG"].ToString(); string rollMonth = dt.Rows[0]["ROLL_MONTH"].ToString(); DateTime date = new DateTime(); double putRate = 1; if (DateTime.TryParse(rollMonth, out date)) { //投料率 putRate = FrmPlnSaleOrder.queryPutRate(date.Year, date.Month, this.ob); } PlnSaleorderRNumEntity rNumEntity = new PlnSaleorderRNumEntity(); string errMessage = ""; rNumEntity.RNumId = ugr.Cells["RNumId"].Value.ToString(); rNumEntity.RepQty = orderQty.ToString(); rNumEntity.RepReason = this.ultraTextReqReason.Text.Trim(); rNumEntity.ReqName = UserInfo.GetUserName(); if (processSeq.Contains("D") && !plineD.Trim().Equals("C072") && !outsStlPipeFl.Equals("121903") && !outsStlPipeFl.Equals("121902")) { if (desginKey.Equals("")) { MessageUtil.ShowError("未找到工艺设计!"); return; } OutOrdParamEntity outOrdParam = new OutOrdParamEntity(); InOrdParamEntity inOrdParam = new InOrdParamEntity(); PlnGetOrdAmount ordAmountCal = new PlnGetOrdAmount(this.ob); inOrdParam = ordAmountCal.getInOrdPlnQtyParam(orderQty, reqEntity.OrderUnit, desginKey, mscPline, reqEntity.OrdLnDlyPk, plineD, bom, codeJg, putRate); if (!ordAmountCal.isRightParam(inOrdParam, desginKey, codeJg, bom, plineD, out errMessage)) { MessageUtil.ShowError(errMessage); return; } ordAmountCal.InEnity = inOrdParam; outOrdParam = ordAmountCal.getOrdAmount(); if (outOrdParam.ErrCode == -1) { MessageUtil.ShowError("合同量转换出错(" + outOrdParam.ErrMessage + ")。"); return; } rNumEntity.Reqweight = outOrdParam.WeightInA.ToString(); rNumEntity.ReqWeightUnit = outOrdParam.WeightUnit; } else { #region 管坯或外购管 double weightPerM = 0; double.TryParse(dt.Rows[0]["WEIGHT_PER_M"].ToString(), out weightPerM); switch (reqEntity.OrderUnit) { case "米": rNumEntity.Reqweight = Math.Round(weightPerM * Convert.ToDouble(ultraNumericReq.Value), 3).ToString(); rNumEntity.ReqWeightUnit = "吨"; break; case "英尺": rNumEntity.Reqweight = Math.Round(weightPerM * PlanComm.FootoMi(Convert.ToDouble(ultraNumericReq.Value)), 3).ToString(); rNumEntity.ReqWeightUnit = "吨"; break; case "支": rNumEntity.Reqweight = this.ultraNumericReq.Value.ToString(); rNumEntity.ReqWeightUnit = "支"; break; default: rNumEntity.ReqWeightUnit = "吨"; rNumEntity.Reqweight = this.ultraNumericReq.Value.ToString(); break; } #endregion } CoreClientParam ccp = new CoreClientParam(); ccp.ServerName = "com.steering.pss.plnsaleord.order.CoreReqRequest"; ccp.MethodName = "doModify"; ccp.ServerParams = new object[] { rNumEntity }; ccp = this.ExecuteNonQuery(ccp, CoreInvokeType.Internal); if (ccp.ReturnCode != -1) { if (ccp.ReturnInfo.Equals("")) { MessageUtil.ShowTips("修改成功!"); } else { MessageUtil.ShowError("修改失败:" + ccp.ReturnInfo); } } else { MessageUtil.ShowError("修改失败:" + ccp.ReturnInfo); } } catch (Exception ex) { MessageBox.Show(ex.Message); } DoQuery(); } /// /// 删除申请 /// private void DoDelete() { try { ArrayList list = new ArrayList(); ultraGridReqApply.UpdateData(); IQueryable checkRows = ultraGridReqApply.Rows.AsQueryable().Where(" CHC = 'True' "); if (checkRows.Count() == 0) { MessageUtil.ShowTips("未勾选任何行!"); return; } foreach (UltraGridRow uRow in checkRows) { list.Add(uRow.Cells["RNumId"].Value.ToString()); } CoreClientParam ccp = new CoreClientParam(); ccp.ServerName = "com.steering.pss.plnsaleord.order.CoreReqRequest"; ccp.MethodName = "deleteOrderRNum"; ccp.ServerParams = new object[] { list }; ccp = this.ExecuteNonQuery(ccp, CoreInvokeType.Internal); if (ccp.ReturnCode != -1) { if (ccp.ReturnInfo.Equals("")) { MessageUtil.ShowTips("删除成功!"); } else { MessageUtil.ShowError("删除失败:" + ccp.ReturnInfo); } } else { MessageUtil.ShowError("删除失败:" + ccp.ReturnInfo); } } catch (Exception ex) { MessageBox.Show(ex.Message); } DoQuery(); } private void ultraGridReqApply_BeforeRowActivate(object sender, Infragistics.Win.UltraWinGrid.RowEventArgs e) { if (e.Row != null && e.Row.Cells["RepQty"].Value != null) { this.ultraNumericReq.Value = e.Row.Cells["RepQty"].Value.ToString(); this.ultraTextReqReason.Value = e.Row.Cells["RepReason"].Value.ToString(); } } public Infragistics.Win.UltraWinToolbars.UltraToolbarsManager UltraToolbarsReq { get { return ultraToolbarsReq; } set { ultraToolbarsReq = value; } } /// /// 新增补量申请 /// //private void DoAddOld() //{ // try // { // ArrayList list = new ArrayList(); // double orderQty = 0; // double weightPerM = 0; // if (!double.TryParse(this.ultraNumericReq.Value.ToString(), out orderQty)) // { // MessageUtil.ShowTips("申请量有误!"); // return; // } // if (orderQty <= 0) // { // MessageUtil.ShowTips("申请量必须大于零!"); // return; // } // DataTable dt = ServerHelper.GetData("com.steering.pss.plnsaleord.order.CoreReqRequest.getLastPlnOrdProc", // new Object[] { reqEntity.OrdLnDlyPk }, this.ob); // if (dt == null || dt.Rows.Count <= 0) // { // MessageUtil.ShowError("没有找到对应交货行信息!"); // return; // } // reqEntity.RepQty = this.ultraNumericReq.Value.ToString(); // reqEntity.RepReason = this.ultraTextReqReason.Text.Trim(); // reqEntity.ReqName = UserInfo.GetUserName(); // double.TryParse(dt.Rows[0]["WEIGHT_PER_M"].ToString(), out weightPerM); // switch (reqEntity.OrderUnit) // { // case "米": // reqEntity.Reqweight = Math.Round(weightPerM * // Convert.ToDouble(ultraNumericReq.Value), 3).ToString(); // reqEntity.ReqWeightUnit = "吨"; // break; // case "英尺": // reqEntity.Reqweight = Math.Round(weightPerM * // PlanComm.FootoMi(Convert.ToDouble(ultraNumericReq.Value)), 3).ToString(); // reqEntity.ReqWeightUnit = "吨"; // break; // case "支": // reqEntity.Reqweight = this.ultraNumericReq.Value.ToString(); // reqEntity.ReqWeightUnit = "支"; // break; // default: // reqEntity.ReqWeightUnit = "吨"; // reqEntity.Reqweight = this.ultraNumericReq.Value.ToString(); // break; // } // list.Add(reqEntity); // int succed = ServerHelper.SetData("com.steering.pss.plnsaleord.order.CoreReqRequest.addOrderRNum", // new Object[] { list }, this.ob); // if (succed > 0) // { // MessageUtil.ShowTips("新增成功!"); // } // else // { // MessageUtil.ShowTips("新增失败!"); // } // } // catch (Exception ex) // { // if (ex is MESException) // { // } // else // { // MessageBox.Show(ex.Message); // } // } // DoQuery(); //} /// /// 修改申请 /// //private void DoModifyOld() //{ // try // { // UltraGridRow ugr = ultraGridReqApply.ActiveRow; // if (ugr == null) // { // return; // } // double orderQty = 0; // double weightPerM = 0; // if (!double.TryParse(this.ultraNumericReq.Value.ToString(), out orderQty)) // { // MessageUtil.ShowTips("申请量有误!"); // return; // } // if (orderQty <= 0) // { // MessageUtil.ShowTips("申请量必须大于零!"); // return; // } // DataTable dt = ServerHelper.GetData("com.steering.pss.plnsaleord.order.CoreReqRequest.getLastPlnOrdProc", // new Object[] { reqEntity.OrdLnDlyPk }, this.ob); // if (dt == null || dt.Rows.Count <= 0) // { // MessageUtil.ShowError("没有找到对应交货行信息!"); // return; // } // PlnSaleorderRNumEntity rNumEntity = new PlnSaleorderRNumEntity(); // rNumEntity.RNumId = ugr.Cells["RNumId"].Value.ToString(); // rNumEntity.RepQty = ultraNumericReq.Value.ToString(); // rNumEntity.RepReason = ultraTextReqReason.Text.Trim(); // double.TryParse(dt.Rows[0]["WEIGHT_PER_M"].ToString(), out weightPerM); // switch (ugr.Cells["OrderUnit"].Value.ToString()) // { // case "米": // rNumEntity.Reqweight = Math.Round(weightPerM * // Convert.ToDouble(ultraNumericReq.Value), 3).ToString(); // break; // case "英尺": // rNumEntity.Reqweight = Math.Round(weightPerM * // PlanComm.FootoMi(Convert.ToDouble(ultraNumericReq.Value)), 3).ToString(); // break; // default: // rNumEntity.Reqweight = this.ultraNumericReq.Value.ToString(); // break; // } // CoreClientParam ccp = new CoreClientParam(); // ccp.ServerName = "com.steering.pss.plnsaleord.order.CoreReqRequest"; // ccp.MethodName = "doModify"; // ccp.ServerParams = new object[] { rNumEntity }; // ccp = this.ExecuteNonQuery(ccp, CoreInvokeType.Internal); // if (ccp.ReturnCode != -1) // { // if (ccp.ReturnInfo.Equals("")) // { // MessageUtil.ShowTips("修改成功!"); // } // else // { // MessageUtil.ShowError("修改失败:" + ccp.ReturnInfo); // } // } // else // { // MessageUtil.ShowError("修改失败:" + ccp.ReturnInfo); // } // } // catch (Exception ex) // { // MessageBox.Show(ex.Message); // } // DoQuery(); //} } }