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();
//}
}
}