using System; using System.Collections; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Windows.Forms; using com.hnshituo.pur.vo; using Core.Mes.Client.Comm.Control; using Core.Mes.Client.Comm.Tool; using CoreFS.CA06; using Infragistics.Win.UltraWinGrid; using Pur.Entity; using Pur.Entity.configureEntity; namespace Pur.require_plan { public partial class FrmPurInstockRequireChangePop : FrmPmsBase { public String strTips = "0"; public String strInvId = "";//目标库存记录 public String strpurLineId = "";//目标采购计划 public double dbGdQty = 0;//挂单数量 public string strGtype = "3"; public FrmPurInstockRequireChangePop() { InitializeComponent(); } public FrmPurInstockRequireChangePop(OpeBase Ob,String invId,String purLineId,double gdQty,string type) { InitializeComponent(); this.strInvId = invId; this.strpurLineId = purLineId; this.dbGdQty = gdQty; this.ob = Ob; this.strGtype = type; if (strGtype == "4") { this.Text = "利库挂单确认"; } dbGdNum_all.Text = gdQty.ToString(); } private void FrmPurInstockRequireChangePop_Load(object sender, EventArgs e) { //设置 GridHelper.SetExcludeColumnsActive(ultraGrid1.DisplayLayout.Bands[0], new string[] { "createQty", "createQtyWeight", "CHK" }); GridHelper.SetExcludeColumnsActive(ultraGrid2.DisplayLayout.Bands[0], new string[] { "createQty", "CHK" }); //初始化查询 doQuery(); } private void ultraToolbarsManager1_ToolClick(object sender, Infragistics.Win.UltraWinToolbars.ToolClickEventArgs e) { switch (e.Tool.Key) { case "doQuery": // 刷新 doQuery(); break; case "doSure": // 确定 doSure(); break; } } /// /// 确定 /// private void doSure() { ArrayList list = new ArrayList();//pos ArrayList list1 = new ArrayList(); double sumInvQty = 0; //验证数据--验证编制量是否和挂单量相等 foreach (UltraGridRow row in ultraGrid1.Rows) { if (Convert.ToBoolean(row.GetCellValue("CHK")) == true) { if (row.GetCellValue("itemUom").ToString().Trim() == "基吨") { double invQty_sig = 0; double.TryParse(row.GetCellValue("createQtyWeight").ToString().Trim(), out invQty_sig); if (invQty_sig > 0) { sumInvQty = sumInvQty + Math.Round(invQty_sig, 4, MidpointRounding.AwayFromZero); PurCkStoragePosEntity pos = new PurCkStoragePosEntity(); String strInvPosId = row.GetCellValue("invPosId").ToString().Trim(); if (String.IsNullOrEmpty(strInvPosId)) { MessageUtil.ShowTips("库存记录行号为空"); return; } pos.InvPosId = strInvPosId; pos.InvQty = invQty_sig; list.Add(pos); } } else { double invQty_sig = 0; double.TryParse(row.GetCellValue("createQty").ToString().Trim(), out invQty_sig); if (invQty_sig > 0) { sumInvQty = sumInvQty + Math.Round(invQty_sig, 4, MidpointRounding.AwayFromZero); PurCkStoragePosEntity pos = new PurCkStoragePosEntity(); String strInvPosId = row.GetCellValue("invPosId").ToString().Trim(); if (String.IsNullOrEmpty(strInvPosId)) { MessageUtil.ShowTips("库存记录行号为空"); return; } pos.InvPosId = strInvPosId; pos.InvQty = invQty_sig; list.Add(pos); } } } } if (sumInvQty != dbGdQty) { MessageUtil.ShowTips("挂单量为:" + dbGdQty + ",选择的挂单储位总量需和挂单量相等!"); return; } double sumInvQty1 = 0; foreach (UltraGridRow row in ultraGrid2.Rows) { if (Convert.ToBoolean(row.GetCellValue("CHK")) == true) { double invQty_sig = 0; double.TryParse(row.GetCellValue("createQty").ToString().Trim(), out invQty_sig); if (invQty_sig > 0) { sumInvQty1 = sumInvQty1 + Math.Round(invQty_sig, 4, MidpointRounding.AwayFromZero); RequireReceive rec = new RequireReceive(); rec.Id = row.GetCellValue("id").ToString().Trim(); rec.Qty = invQty_sig; list1.Add(rec); } } } if (sumInvQty1 > dbGdQty) { MessageUtil.ShowTips("单位所属挂单总量不能大于挂单量为:" + dbGdQty + "!"); return; } //确定提交 RequireReleaseInstockqty release = new RequireReleaseInstockqty(); release.InvId = strInvId; release.ReleaseType = strGtype; release.PurLineId = strpurLineId; release.CreateName = UserInfo.GetUserName(); release.CreateUserId = UserInfo.GetUserID(); release.CreateTime = DateTime.Now; release.ReleaseQty = dbGdQty; if (MessageUtil.ShowYesNoAndQuestion("确定进行挂单操作?") != DialogResult.Yes) { return; } CoreResult crt = this.execute("com.hnshituo.pur.requireplan.service.RequireReleaseInstockqtyService", "doGuadan", new object[] { release, list, list1 }); if (crt.Resultcode == 0) { MessageUtil.ShowTips("操作成功"); strTips = "1"; this.Close(); } else { MessageUtil.ShowTips("操作失败:"+crt.Resultmsg); } } /// /// 查询 /// private void doQuery() { storage.Clear(); requireD.Clear(); //查询储位 PurCkStoragePosEntity pos = new PurCkStoragePosEntity(); pos.InvId = strInvId; DataTable dt = this.execute("com.hnshituo.pur.ck.service.CkStoragePosService", "getCkStoragePos", new object[] { pos }); GridHelper.CopyDataToDatatable(dt, dataTable1, true); GridHelper.RefreshAndAutoSize(ultraGrid1); double canOutNum = dbGdQty; double tempCanUseQty = dbGdQty; double sunQty=0; foreach (UltraGridRow row in ultraGrid1.Rows) { if (row.GetCellValue("itemUom").ToString() == "基吨") { //row.Cells["itemUom"].Value = "吨"; double needQty = 0; double dbItemUomConefficient = 1; double.TryParse(row.GetCellValue("INVQTYWEIGHT").ToString(), out needQty);//库存需出库量 double.TryParse(row.GetCellValue("itemUomConefficient").ToString(), out dbItemUomConefficient); if (tempCanUseQty > 0 && needQty > 0) { if (needQty >= tempCanUseQty) { row.Cells["createQtyWeight"].Value = tempCanUseQty;//库存出库量 sunQty = sunQty + tempCanUseQty; row.Cells["createQty"].Value = Math.Round(tempCanUseQty * dbItemUomConefficient, 4,MidpointRounding.AwayFromZero);//采购出库量 tempCanUseQty = 0; row.Cells["CHK"].Value = true; } else { row.Cells["createQtyWeight"].Value = needQty;//库存出库量 sunQty = sunQty + needQty; row.Cells["createQty"].Value = Math.Round(needQty * dbItemUomConefficient, 4, MidpointRounding.AwayFromZero);//采购出库量 tempCanUseQty = tempCanUseQty - needQty; row.Cells["CHK"].Value = true; } } } else { double needQty = 0; double dbItemUomConefficient = 1; double.TryParse(row.GetCellValue("invqty").ToString(), out needQty);//采购需出库量 double.TryParse(row.GetCellValue("itemUomConefficient").ToString(), out dbItemUomConefficient); if (tempCanUseQty > 0 && needQty > 0) { if (needQty >= tempCanUseQty) { row.Cells["createQty"].Value = tempCanUseQty; sunQty = sunQty + tempCanUseQty; row.Cells["createQtyWeight"].Value = Math.Round(tempCanUseQty / dbItemUomConefficient, 4, MidpointRounding.AwayFromZero);//采购出库量 tempCanUseQty = 0; row.Cells["CHK"].Value = true; } else { row.Cells["createQty"].Value = needQty; sunQty = sunQty + needQty; row.Cells["createQtyWeight"].Value = Math.Round(needQty / dbItemUomConefficient, 4, MidpointRounding.AwayFromZero);//采购出库量 tempCanUseQty = tempCanUseQty - needQty; row.Cells["CHK"].Value = true; } } } } txt_usedQty.Text = sunQty + ""; //查询需求单位 if (String.IsNullOrEmpty(strpurLineId)) { return; } Dictionary ReqPnew = new Dictionary(); ReqPnew["purLineId"] = strpurLineId; ReqPnew["gType"] = strGtype; DataTable dt2 = this.execute("com.hnshituo.pur.requireplan.service.RequireReceiveService", "get_canUse", new object[] { ReqPnew }); foreach (DataRow row in dt2.Rows) { row["itemDescE"] = Convert.ToDateTime(row["itemDescE"]).ToString("yyyy/MM"); } GridHelper.CopyDataToDatatable(dt2, dataTable2, true); GridHelper.RefreshAndAutoSize(ultraGrid2); double canOutNum1 = dbGdQty; double tempCanUseQty1 = dbGdQty; double useQty1 = 0; foreach (UltraGridRow row in ultraGrid2.Rows) { double needQty1 = 0; double.TryParse(row.GetCellValue("QTYPUR").ToString(), out needQty1);//需求量 if (tempCanUseQty1 > 0 && needQty1 > 0) { if (needQty1 >= tempCanUseQty1) { row.Cells["createQty"].Value = Math.Round(tempCanUseQty1, 4, MidpointRounding.AwayFromZero);//编制量 useQty1 = useQty1 + Math.Round(tempCanUseQty1, 4, MidpointRounding.AwayFromZero);//编制量 tempCanUseQty1 = 0; row.Cells["CHK"].Value = true; } else { row.Cells["createQty"].Value = Math.Round(needQty1, 4, MidpointRounding.AwayFromZero);//采购出库量 useQty1 = useQty1 + Math.Round(needQty1, 4, MidpointRounding.AwayFromZero); tempCanUseQty1 = tempCanUseQty1 - needQty1; row.Cells["CHK"].Value = true; } } } txt_req_qty.Text = useQty1 + ""; } private void ultraGrid1_CellChange(object sender, CellEventArgs e) { object o = e.Cell.Value; ultraGrid1.UpdateData(); double canUse = 0; double canUseUom = 0; double canUseWeight = 0; double conf = 0; double.TryParse(e.Cell.Row.GetCellValue("invqty").ToString(), out canUseUom); double.TryParse(e.Cell.Row.GetCellValue("INVQTYWEIGHT").ToString(), out canUseWeight); canUse = dbGdQty; double.TryParse(e.Cell.Row.GetCellValue("itemUomConefficient").ToString(), out conf); if (e.Cell.Column.Key == "createQty")//采购数量 { double OutNum = 0;//出库量 double.TryParse(e.Cell.Row.GetCellValue("createQty").ToString(), out OutNum); if (OutNum > canUseUom) { MessageUtil.ShowTips("已大于在库量(采购单位):" + canUseUom + ""); e.Cell.Value = o; return; } if (e.Cell.Row.GetCellValue("itemUom").ToString() == "基吨") { e.Cell.Row.Cells["createQtyWeight"].Value = Math.Round(OutNum / conf, 4, MidpointRounding.AwayFromZero); } else { e.Cell.Row.Cells["createQtyWeight"].Value = Math.Round(conf * OutNum, 4, MidpointRounding.AwayFromZero); } double b_OutNum_q = 0;//出库总量 for (int i = 0; i < ultraGrid1.Rows.Count; i++) { if (Convert.ToBoolean(ultraGrid1.Rows[i].GetCellValue("CHK")) == true) { double b_OutNum = 0;//出库量 if (ultraGrid1.Rows[i].GetCellValue("itemUom").ToString() == "基吨") { double.TryParse(ultraGrid1.Rows[i].Cells["createQtyWeight"].Value.ToString(), out b_OutNum); } else { double.TryParse(ultraGrid1.Rows[i].Cells["createQty"].Value.ToString(), out b_OutNum); } b_OutNum_q += Math.Round(b_OutNum, 4, MidpointRounding.AwayFromZero); } } if (b_OutNum_q > canUse) { MessageUtil.ShowTips("已大于挂单量:" + canUse + ""); e.Cell.Value = o; return; } txt_usedQty.Text = b_OutNum_q.ToString(); } else if (e.Cell.Column.Key == "createQtyWeight")//库存数量 { double OutNum1 = 0;//库存单位出库量 double.TryParse(e.Cell.Row.GetCellValue("createQtyWeight").ToString(), out OutNum1); if (OutNum1 > canUseWeight) { MessageUtil.ShowTips("已大于在库量(库存单位):" + canUseWeight + ""); e.Cell.Value = o; return; } if (e.Cell.Row.GetCellValue("itemUom").ToString() == "基吨") { e.Cell.Row.Cells["createQty"].Value = Math.Round(OutNum1 * conf, 4, MidpointRounding.AwayFromZero); } else { e.Cell.Row.Cells["createQty"].Value = Math.Round(OutNum1 / conf, 4, MidpointRounding.AwayFromZero); } double b_OutNum_q = 0;//出库总量 for (int i = 0; i < ultraGrid1.Rows.Count; i++) { if (Convert.ToBoolean(ultraGrid1.Rows[i].GetCellValue("CHK")) == true) { double b_OutNum = 0;//出库量 if (ultraGrid1.Rows[i].GetCellValue("itemUom").ToString() == "基吨") { double.TryParse(ultraGrid1.Rows[i].Cells["createQtyWeight"].Value.ToString(), out b_OutNum); } else { double.TryParse(ultraGrid1.Rows[i].Cells["createQty"].Value.ToString(), out b_OutNum); } b_OutNum_q += Math.Round(b_OutNum, 4, MidpointRounding.AwayFromZero); } } if (b_OutNum_q > canUse) { MessageUtil.ShowTips("已大于挂单量:" + canUse + ""); e.Cell.Value = o; return; } txt_usedQty.Text = b_OutNum_q.ToString(); } else if (e.Cell.Column.Key == "CHK") { double b_OutNum_q = 0;//出库总量 for (int i = 0; i < ultraGrid1.Rows.Count; i++) { if (Convert.ToBoolean(ultraGrid1.Rows[i].GetCellValue("CHK")) == true) { double b_OutNum = 0;//出库量 if (ultraGrid1.Rows[i].GetCellValue("itemUom").ToString() == "基吨") { double.TryParse(ultraGrid1.Rows[i].Cells["createQtyWeight"].Value.ToString(), out b_OutNum); } else { double.TryParse(ultraGrid1.Rows[i].Cells["createQty"].Value.ToString(), out b_OutNum); } b_OutNum_q += Math.Round(b_OutNum, 4, MidpointRounding.AwayFromZero); } } if (b_OutNum_q > canUse) { MessageUtil.ShowTips("已大于挂单量:" + canUse + ""); e.Cell.Value = o; return; } txt_usedQty.Text = b_OutNum_q.ToString(); } ultraGrid1.UpdateData(); } private void ultraGrid2_CellChange(object sender, CellEventArgs e) { if (e.Cell.Column.Key == "createQty" || e.Cell.Column.Key=="CHK")//采购数量 { double useQty_temp = 0; ultraGrid2.UpdateData(); foreach (UltraGridRow row in ultraGrid2.Rows) { if (Convert.ToBoolean(row.GetCellValue("CHK")) == true) { double useQty_sig = 0; double.TryParse(row.Cells["createQty"].Value.ToString(), out useQty_sig); useQty_temp = useQty_temp + Math.Round(useQty_sig, 4, MidpointRounding.AwayFromZero); } } txt_req_qty.Text = useQty_temp + ""; } } } }