FrmPurInstockRequireChangePop.cs 20 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445
  1. using System;
  2. using System.Collections;
  3. using System.Collections.Generic;
  4. using System.ComponentModel;
  5. using System.Data;
  6. using System.Drawing;
  7. using System.Linq;
  8. using System.Text;
  9. using System.Windows.Forms;
  10. using com.hnshituo.pur.vo;
  11. using Core.Mes.Client.Comm.Control;
  12. using Core.Mes.Client.Comm.Tool;
  13. using CoreFS.CA06;
  14. using Infragistics.Win.UltraWinGrid;
  15. using Pur.Entity;
  16. using Pur.Entity.configureEntity;
  17. namespace Pur.require_plan
  18. {
  19. public partial class FrmPurInstockRequireChangePop : FrmPmsBase
  20. {
  21. public String strTips = "0";
  22. public String strInvId = "";//目标库存记录
  23. public String strpurLineId = "";//目标采购计划
  24. public double dbGdQty = 0;//挂单数量
  25. public string strGtype = "3";
  26. public FrmPurInstockRequireChangePop()
  27. {
  28. InitializeComponent();
  29. }
  30. public FrmPurInstockRequireChangePop(OpeBase Ob,String invId,String purLineId,double gdQty,string type)
  31. {
  32. InitializeComponent();
  33. this.strInvId = invId;
  34. this.strpurLineId = purLineId;
  35. this.dbGdQty = gdQty;
  36. this.ob = Ob;
  37. this.strGtype = type;
  38. if (strGtype == "4")
  39. {
  40. this.Text = "利库挂单确认";
  41. }
  42. dbGdNum_all.Text = gdQty.ToString();
  43. }
  44. private void FrmPurInstockRequireChangePop_Load(object sender, EventArgs e)
  45. {
  46. //设置
  47. GridHelper.SetExcludeColumnsActive(ultraGrid1.DisplayLayout.Bands[0], new string[] { "createQty", "createQtyWeight", "CHK" });
  48. GridHelper.SetExcludeColumnsActive(ultraGrid2.DisplayLayout.Bands[0], new string[] { "createQty", "CHK" });
  49. //初始化查询
  50. doQuery();
  51. }
  52. private void ultraToolbarsManager1_ToolClick(object sender, Infragistics.Win.UltraWinToolbars.ToolClickEventArgs e)
  53. {
  54. switch (e.Tool.Key)
  55. {
  56. case "doQuery": // 刷新
  57. doQuery();
  58. break;
  59. case "doSure": // 确定
  60. doSure();
  61. break;
  62. }
  63. }
  64. /// <summary>
  65. /// 确定
  66. /// </summary>
  67. private void doSure()
  68. {
  69. ArrayList list = new ArrayList();//pos
  70. ArrayList list1 = new ArrayList();
  71. double sumInvQty = 0;
  72. //验证数据--验证编制量是否和挂单量相等
  73. foreach (UltraGridRow row in ultraGrid1.Rows)
  74. {
  75. if (Convert.ToBoolean(row.GetCellValue("CHK")) == true)
  76. {
  77. if (row.GetCellValue("itemUom").ToString().Trim() == "基吨")
  78. {
  79. double invQty_sig = 0;
  80. double.TryParse(row.GetCellValue("createQtyWeight").ToString().Trim(), out invQty_sig);
  81. if (invQty_sig > 0)
  82. {
  83. sumInvQty = sumInvQty + Math.Round(invQty_sig, 4, MidpointRounding.AwayFromZero);
  84. PurCkStoragePosEntity pos = new PurCkStoragePosEntity();
  85. String strInvPosId = row.GetCellValue("invPosId").ToString().Trim();
  86. if (String.IsNullOrEmpty(strInvPosId))
  87. {
  88. MessageUtil.ShowTips("库存记录行号为空");
  89. return;
  90. }
  91. pos.InvPosId = strInvPosId;
  92. pos.InvQty = invQty_sig;
  93. list.Add(pos);
  94. }
  95. }
  96. else
  97. {
  98. double invQty_sig = 0;
  99. double.TryParse(row.GetCellValue("createQty").ToString().Trim(), out invQty_sig);
  100. if (invQty_sig > 0)
  101. {
  102. sumInvQty = sumInvQty + Math.Round(invQty_sig, 4, MidpointRounding.AwayFromZero);
  103. PurCkStoragePosEntity pos = new PurCkStoragePosEntity();
  104. String strInvPosId = row.GetCellValue("invPosId").ToString().Trim();
  105. if (String.IsNullOrEmpty(strInvPosId))
  106. {
  107. MessageUtil.ShowTips("库存记录行号为空");
  108. return;
  109. }
  110. pos.InvPosId = strInvPosId;
  111. pos.InvQty = invQty_sig;
  112. list.Add(pos);
  113. }
  114. }
  115. }
  116. }
  117. if (sumInvQty != dbGdQty)
  118. {
  119. MessageUtil.ShowTips("挂单量为:" + dbGdQty + ",选择的挂单储位总量需和挂单量相等!");
  120. return;
  121. }
  122. double sumInvQty1 = 0;
  123. foreach (UltraGridRow row in ultraGrid2.Rows)
  124. {
  125. if (Convert.ToBoolean(row.GetCellValue("CHK")) == true)
  126. {
  127. double invQty_sig = 0;
  128. double.TryParse(row.GetCellValue("createQty").ToString().Trim(), out invQty_sig);
  129. if (invQty_sig > 0)
  130. {
  131. sumInvQty1 = sumInvQty1 + Math.Round(invQty_sig, 4, MidpointRounding.AwayFromZero);
  132. RequireReceive rec = new RequireReceive();
  133. rec.Id = row.GetCellValue("id").ToString().Trim();
  134. rec.Qty = invQty_sig;
  135. list1.Add(rec);
  136. }
  137. }
  138. }
  139. if (sumInvQty1 > dbGdQty)
  140. {
  141. MessageUtil.ShowTips("单位所属挂单总量不能大于挂单量为:" + dbGdQty + "!");
  142. return;
  143. }
  144. //确定提交
  145. RequireReleaseInstockqty release = new RequireReleaseInstockqty();
  146. release.InvId = strInvId;
  147. release.ReleaseType = strGtype;
  148. release.PurLineId = strpurLineId;
  149. release.CreateName = UserInfo.GetUserName();
  150. release.CreateUserId = UserInfo.GetUserID();
  151. release.CreateTime = DateTime.Now;
  152. release.ReleaseQty = dbGdQty;
  153. if (MessageUtil.ShowYesNoAndQuestion("确定进行挂单操作?") != DialogResult.Yes)
  154. {
  155. return;
  156. }
  157. CoreResult crt = this.execute<CoreResult>("com.hnshituo.pur.requireplan.service.RequireReleaseInstockqtyService", "doGuadan", new object[] { release, list, list1 });
  158. if (crt.Resultcode == 0)
  159. {
  160. MessageUtil.ShowTips("操作成功");
  161. strTips = "1";
  162. this.Close();
  163. }
  164. else
  165. {
  166. MessageUtil.ShowTips("操作失败:"+crt.Resultmsg);
  167. }
  168. }
  169. /// <summary>
  170. /// 查询
  171. /// </summary>
  172. private void doQuery()
  173. {
  174. storage.Clear();
  175. requireD.Clear();
  176. //查询储位
  177. PurCkStoragePosEntity pos = new PurCkStoragePosEntity();
  178. pos.InvId = strInvId;
  179. DataTable dt = this.execute<DataTable>("com.hnshituo.pur.ck.service.CkStoragePosService", "getCkStoragePos", new object[] { pos });
  180. GridHelper.CopyDataToDatatable(dt, dataTable1, true);
  181. GridHelper.RefreshAndAutoSize(ultraGrid1);
  182. double canOutNum = dbGdQty;
  183. double tempCanUseQty = dbGdQty;
  184. double sunQty=0;
  185. foreach (UltraGridRow row in ultraGrid1.Rows)
  186. {
  187. if (row.GetCellValue("itemUom").ToString() == "基吨")
  188. {
  189. //row.Cells["itemUom"].Value = "吨";
  190. double needQty = 0;
  191. double dbItemUomConefficient = 1;
  192. double.TryParse(row.GetCellValue("INVQTYWEIGHT").ToString(), out needQty);//库存需出库量
  193. double.TryParse(row.GetCellValue("itemUomConefficient").ToString(), out dbItemUomConefficient);
  194. if (tempCanUseQty > 0 && needQty > 0)
  195. {
  196. if (needQty >= tempCanUseQty)
  197. {
  198. row.Cells["createQtyWeight"].Value = tempCanUseQty;//库存出库量
  199. sunQty = sunQty + tempCanUseQty;
  200. row.Cells["createQty"].Value = Math.Round(tempCanUseQty * dbItemUomConefficient, 4,MidpointRounding.AwayFromZero);//采购出库量
  201. tempCanUseQty = 0;
  202. row.Cells["CHK"].Value = true;
  203. }
  204. else
  205. {
  206. row.Cells["createQtyWeight"].Value = needQty;//库存出库量
  207. sunQty = sunQty + needQty;
  208. row.Cells["createQty"].Value = Math.Round(needQty * dbItemUomConefficient, 4, MidpointRounding.AwayFromZero);//采购出库量
  209. tempCanUseQty = tempCanUseQty - needQty;
  210. row.Cells["CHK"].Value = true;
  211. }
  212. }
  213. }
  214. else
  215. {
  216. double needQty = 0;
  217. double dbItemUomConefficient = 1;
  218. double.TryParse(row.GetCellValue("invqty").ToString(), out needQty);//采购需出库量
  219. double.TryParse(row.GetCellValue("itemUomConefficient").ToString(), out dbItemUomConefficient);
  220. if (tempCanUseQty > 0 && needQty > 0)
  221. {
  222. if (needQty >= tempCanUseQty)
  223. {
  224. row.Cells["createQty"].Value = tempCanUseQty;
  225. sunQty = sunQty + tempCanUseQty;
  226. row.Cells["createQtyWeight"].Value = Math.Round(tempCanUseQty / dbItemUomConefficient, 4, MidpointRounding.AwayFromZero);//采购出库量
  227. tempCanUseQty = 0;
  228. row.Cells["CHK"].Value = true;
  229. }
  230. else
  231. {
  232. row.Cells["createQty"].Value = needQty;
  233. sunQty = sunQty + needQty;
  234. row.Cells["createQtyWeight"].Value = Math.Round(needQty / dbItemUomConefficient, 4, MidpointRounding.AwayFromZero);//采购出库量
  235. tempCanUseQty = tempCanUseQty - needQty;
  236. row.Cells["CHK"].Value = true;
  237. }
  238. }
  239. }
  240. }
  241. txt_usedQty.Text = sunQty + "";
  242. //查询需求单位
  243. if (String.IsNullOrEmpty(strpurLineId))
  244. {
  245. return;
  246. }
  247. Dictionary<string, object> ReqPnew = new Dictionary<string, object>();
  248. ReqPnew["purLineId"] = strpurLineId;
  249. ReqPnew["gType"] = strGtype;
  250. DataTable dt2 = this.execute<DataTable>("com.hnshituo.pur.requireplan.service.RequireReceiveService", "get_canUse", new object[] { ReqPnew });
  251. foreach (DataRow row in dt2.Rows)
  252. {
  253. row["itemDescE"] = Convert.ToDateTime(row["itemDescE"]).ToString("yyyy/MM");
  254. }
  255. GridHelper.CopyDataToDatatable(dt2, dataTable2, true);
  256. GridHelper.RefreshAndAutoSize(ultraGrid2);
  257. double canOutNum1 = dbGdQty;
  258. double tempCanUseQty1 = dbGdQty;
  259. double useQty1 = 0;
  260. foreach (UltraGridRow row in ultraGrid2.Rows)
  261. {
  262. double needQty1 = 0;
  263. double.TryParse(row.GetCellValue("QTYPUR").ToString(), out needQty1);//需求量
  264. if (tempCanUseQty1 > 0 && needQty1 > 0)
  265. {
  266. if (needQty1 >= tempCanUseQty1)
  267. {
  268. row.Cells["createQty"].Value = Math.Round(tempCanUseQty1, 4, MidpointRounding.AwayFromZero);//编制量
  269. useQty1 = useQty1 + Math.Round(tempCanUseQty1, 4, MidpointRounding.AwayFromZero);//编制量
  270. tempCanUseQty1 = 0;
  271. row.Cells["CHK"].Value = true;
  272. }
  273. else
  274. {
  275. row.Cells["createQty"].Value = Math.Round(needQty1, 4, MidpointRounding.AwayFromZero);//采购出库量
  276. useQty1 = useQty1 + Math.Round(needQty1, 4, MidpointRounding.AwayFromZero);
  277. tempCanUseQty1 = tempCanUseQty1 - needQty1;
  278. row.Cells["CHK"].Value = true;
  279. }
  280. }
  281. }
  282. txt_req_qty.Text = useQty1 + "";
  283. }
  284. private void ultraGrid1_CellChange(object sender, CellEventArgs e)
  285. {
  286. object o = e.Cell.Value;
  287. ultraGrid1.UpdateData();
  288. double canUse = 0;
  289. double canUseUom = 0;
  290. double canUseWeight = 0;
  291. double conf = 0;
  292. double.TryParse(e.Cell.Row.GetCellValue("invqty").ToString(), out canUseUom);
  293. double.TryParse(e.Cell.Row.GetCellValue("INVQTYWEIGHT").ToString(), out canUseWeight);
  294. canUse = dbGdQty;
  295. double.TryParse(e.Cell.Row.GetCellValue("itemUomConefficient").ToString(), out conf);
  296. if (e.Cell.Column.Key == "createQty")//采购数量
  297. {
  298. double OutNum = 0;//出库量
  299. double.TryParse(e.Cell.Row.GetCellValue("createQty").ToString(), out OutNum);
  300. if (OutNum > canUseUom)
  301. {
  302. MessageUtil.ShowTips("已大于在库量(采购单位):" + canUseUom + "");
  303. e.Cell.Value = o;
  304. return;
  305. }
  306. if (e.Cell.Row.GetCellValue("itemUom").ToString() == "基吨")
  307. {
  308. e.Cell.Row.Cells["createQtyWeight"].Value = Math.Round(OutNum / conf, 4, MidpointRounding.AwayFromZero);
  309. }
  310. else
  311. {
  312. e.Cell.Row.Cells["createQtyWeight"].Value = Math.Round(conf * OutNum, 4, MidpointRounding.AwayFromZero);
  313. }
  314. double b_OutNum_q = 0;//出库总量
  315. for (int i = 0; i < ultraGrid1.Rows.Count; i++)
  316. {
  317. if (Convert.ToBoolean(ultraGrid1.Rows[i].GetCellValue("CHK")) == true)
  318. {
  319. double b_OutNum = 0;//出库量
  320. if (ultraGrid1.Rows[i].GetCellValue("itemUom").ToString() == "基吨")
  321. {
  322. double.TryParse(ultraGrid1.Rows[i].Cells["createQtyWeight"].Value.ToString(), out b_OutNum);
  323. }
  324. else
  325. {
  326. double.TryParse(ultraGrid1.Rows[i].Cells["createQty"].Value.ToString(), out b_OutNum);
  327. }
  328. b_OutNum_q += Math.Round(b_OutNum, 4, MidpointRounding.AwayFromZero);
  329. }
  330. }
  331. if (b_OutNum_q > canUse)
  332. {
  333. MessageUtil.ShowTips("已大于挂单量:" + canUse + "");
  334. e.Cell.Value = o;
  335. return;
  336. }
  337. txt_usedQty.Text = b_OutNum_q.ToString();
  338. }
  339. else if (e.Cell.Column.Key == "createQtyWeight")//库存数量
  340. {
  341. double OutNum1 = 0;//库存单位出库量
  342. double.TryParse(e.Cell.Row.GetCellValue("createQtyWeight").ToString(), out OutNum1);
  343. if (OutNum1 > canUseWeight)
  344. {
  345. MessageUtil.ShowTips("已大于在库量(库存单位):" + canUseWeight + "");
  346. e.Cell.Value = o;
  347. return;
  348. }
  349. if (e.Cell.Row.GetCellValue("itemUom").ToString() == "基吨")
  350. {
  351. e.Cell.Row.Cells["createQty"].Value = Math.Round(OutNum1 * conf, 4, MidpointRounding.AwayFromZero);
  352. }
  353. else
  354. {
  355. e.Cell.Row.Cells["createQty"].Value = Math.Round(OutNum1 / conf, 4, MidpointRounding.AwayFromZero);
  356. }
  357. double b_OutNum_q = 0;//出库总量
  358. for (int i = 0; i < ultraGrid1.Rows.Count; i++)
  359. {
  360. if (Convert.ToBoolean(ultraGrid1.Rows[i].GetCellValue("CHK")) == true)
  361. {
  362. double b_OutNum = 0;//出库量
  363. if (ultraGrid1.Rows[i].GetCellValue("itemUom").ToString() == "基吨")
  364. {
  365. double.TryParse(ultraGrid1.Rows[i].Cells["createQtyWeight"].Value.ToString(), out b_OutNum);
  366. }
  367. else
  368. {
  369. double.TryParse(ultraGrid1.Rows[i].Cells["createQty"].Value.ToString(), out b_OutNum);
  370. }
  371. b_OutNum_q += Math.Round(b_OutNum, 4, MidpointRounding.AwayFromZero);
  372. }
  373. }
  374. if (b_OutNum_q > canUse)
  375. {
  376. MessageUtil.ShowTips("已大于挂单量:" + canUse + "");
  377. e.Cell.Value = o;
  378. return;
  379. }
  380. txt_usedQty.Text = b_OutNum_q.ToString();
  381. }
  382. else if (e.Cell.Column.Key == "CHK")
  383. {
  384. double b_OutNum_q = 0;//出库总量
  385. for (int i = 0; i < ultraGrid1.Rows.Count; i++)
  386. {
  387. if (Convert.ToBoolean(ultraGrid1.Rows[i].GetCellValue("CHK")) == true)
  388. {
  389. double b_OutNum = 0;//出库量
  390. if (ultraGrid1.Rows[i].GetCellValue("itemUom").ToString() == "基吨")
  391. {
  392. double.TryParse(ultraGrid1.Rows[i].Cells["createQtyWeight"].Value.ToString(), out b_OutNum);
  393. }
  394. else
  395. {
  396. double.TryParse(ultraGrid1.Rows[i].Cells["createQty"].Value.ToString(), out b_OutNum);
  397. }
  398. b_OutNum_q += Math.Round(b_OutNum, 4, MidpointRounding.AwayFromZero);
  399. }
  400. }
  401. if (b_OutNum_q > canUse)
  402. {
  403. MessageUtil.ShowTips("已大于挂单量:" + canUse + "");
  404. e.Cell.Value = o;
  405. return;
  406. }
  407. txt_usedQty.Text = b_OutNum_q.ToString();
  408. }
  409. ultraGrid1.UpdateData();
  410. }
  411. private void ultraGrid2_CellChange(object sender, CellEventArgs e)
  412. {
  413. if (e.Cell.Column.Key == "createQty" || e.Cell.Column.Key=="CHK")//采购数量
  414. {
  415. double useQty_temp = 0;
  416. ultraGrid2.UpdateData();
  417. foreach (UltraGridRow row in ultraGrid2.Rows)
  418. {
  419. if (Convert.ToBoolean(row.GetCellValue("CHK")) == true)
  420. {
  421. double useQty_sig = 0;
  422. double.TryParse(row.Cells["createQty"].Value.ToString(), out useQty_sig);
  423. useQty_temp = useQty_temp + Math.Round(useQty_sig, 4, MidpointRounding.AwayFromZero);
  424. }
  425. }
  426. txt_req_qty.Text = useQty_temp + "";
  427. }
  428. }
  429. }
  430. }