frmBenefitPlan.cs 42 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971
  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 CoreFS.SA06;
  15. using Infragistics.Win;
  16. using Infragistics.Win.UltraWinGrid;
  17. using Pur.configure;
  18. using Pur.Entity;
  19. using Pur.Entity.configureEntity;
  20. using Pur.Entity.require_planEntiy;
  21. using Pur.Pop_upWindow;
  22. namespace Pur.require_plan
  23. {
  24. public partial class frmBenefitPlan : FrmPmsBase
  25. {
  26. //是否刷新
  27. private string tips = "0";
  28. //调整单位ID
  29. private string cg_itemUomId = "";
  30. public string Tips
  31. {
  32. get { return tips; }
  33. set { tips = value; }
  34. }
  35. string basecode_pop = "";//物料分类编码
  36. public frmBenefitPlan()
  37. {
  38. InitializeComponent();
  39. }
  40. public frmBenefitPlan(OpeBase OB)
  41. {
  42. this.ob = OB;
  43. InitializeComponent();
  44. }
  45. private void frmBenefitPlan_Load(object sender, EventArgs e)
  46. {
  47. ultraExpandableGroupBox1.Expanded = false;
  48. GridHelper.SetExcludeColumnsActive(ultraGrid1.DisplayLayout.Bands[0], "CHK","qtyPur","refuseReason");
  49. GridHelper.SetExcludeColumnsActive(ultraGrid2.DisplayLayout.Bands[0], "CHK");
  50. GridHelper.SetExcludeColumnsActive(ultraGrid3.DisplayLayout.Bands[0], "");
  51. GridHelper.SetExcludeColumnsActive(ultraGrid4.DisplayLayout.Bands[0], "");
  52. txt_Status.SelectedIndex = 3;
  53. txt_UrgencyType.SelectedIndex = 0;
  54. Ck_Ctime.Checked = false;
  55. Ck_ptime.Checked = false;
  56. txtMrPeriodStart.Enabled = false;
  57. txtMrPeriodEnd.Enabled = false;
  58. txtAuditedEnd.Enabled = false;
  59. txtAuditedStart.Enabled = false;
  60. txtMrPeriodStart.Value = DateTime.Now.AddMonths(-1).ToString();
  61. txtMrPeriodEnd.Value = DateTime.Now.AddHours(23).ToString();
  62. ck_Mtime.Checked = true;
  63. cop_planMouthStart.Value = DateTime.Now.AddMonths(-2);
  64. cop_planMouthEnd.Value = DateTime.Now < DateTime.Parse(DateTime.Now.ToString("yyyy/MM/26")) ? DateTime.Now: DateTime.Now.AddMonths(1);
  65. String strYear = DateTime.Now.Year + "";
  66. String strMouth = DateTime.Now.Month + "";
  67. String strStart = strYear + "-" + strMouth + "-" + "20 00:00:00";
  68. String strEnd = strYear + "-" + strMouth + "-" + "26 00:00:00";
  69. txtAuditedStart.Value = Convert.ToDateTime(strStart);
  70. txtAuditedEnd.Value = Convert.ToDateTime(strEnd);
  71. ultraTabControl1.SelectedTab = ultraTabControl1.Tabs[0];
  72. GetPUR_REQUIRE_PLAND();
  73. }
  74. #region toolbar工具栏
  75. public override void ToolBar_Click(object sender, string ToolbarKey)
  76. {
  77. switch (ToolbarKey)
  78. {
  79. case "Query"://刷新数据
  80. GetPUR_REQUIRE_PLAND();
  81. break;
  82. case "doChange":// 生成新采购计划
  83. ChangePUR_REQUIRE_PLAND();
  84. break;
  85. case "doAdd"://添加到采购计划
  86. addPUR_REQUIRE_PLAND();
  87. break;
  88. case "doReceive"://接收
  89. ReceivePUR_REQUIRE_PLAND();
  90. break;
  91. case "cancelReceive"://取消接收
  92. CancelPUR_REQUIRE_PLAND();
  93. break;
  94. case "doReject"://退回
  95. RejectPUR_REQUIRE_PLAND();
  96. break;
  97. case "cancelBenefit"://取消利计划
  98. cancelBenefit();
  99. break;
  100. case "doClose": // 关闭
  101. this.Close();
  102. break;
  103. }
  104. }
  105. /// <summary>
  106. /// 添加到新的采购计划
  107. /// </summary>
  108. private void addPUR_REQUIRE_PLAND()
  109. {
  110. ultraGrid2.UpdateData();
  111. IQueryable<UltraGridRow> checkRows = ultraGrid2.Rows.AsQueryable().Where("CHK = 'True' ");
  112. if (checkRows.Count() == 0)
  113. {
  114. Core.Mes.Client.Comm.Tool.MessageUtil.ShowWarning("未勾需求信息!");
  115. return;
  116. }
  117. ArrayList list = new ArrayList();
  118. foreach (UltraGridRow uRows in checkRows)
  119. {
  120. RequirePlanD ReqPD = new RequirePlanD();
  121. ReqPD.MrLineId = uRows.Cells["id"].Value.ToString();
  122. list.Add(ReqPD.MrLineId);
  123. }
  124. frmPopAddReceive FPRD = new frmPopAddReceive(this.ob, list);
  125. FPRD.ShowDialog();
  126. if (FPRD.tips == "1")
  127. {
  128. tips = "1";
  129. GetPUR_REQUIRE_PLAND();
  130. return;
  131. }
  132. }
  133. /// <summary>
  134. /// 调整
  135. /// </summary>
  136. private void ChangePUR_REQUIRE_PLAND()
  137. {
  138. ultraGrid2.UpdateData();
  139. IQueryable<UltraGridRow> checkRows = ultraGrid2.Rows.AsQueryable().Where("CHK = 'True' ");
  140. if (checkRows.Count() == 0)
  141. {
  142. Core.Mes.Client.Comm.Tool.MessageUtil.ShowWarning("未勾需求信息!");
  143. return;
  144. }
  145. ArrayList list = new ArrayList();
  146. foreach (UltraGridRow uRows in checkRows)
  147. {
  148. RequirePlanD ReqPD = new RequirePlanD();
  149. ReqPD.MrLineId = uRows.Cells["id"].Value.ToString();
  150. list.Add(ReqPD.MrLineId);
  151. }
  152. FrmPurRePlanChangeNew FPRD = new FrmPurRePlanChangeNew(this.ob, list);
  153. FPRD.ShowDialog();
  154. if (FPRD.Tips == "1")
  155. {
  156. tips = "1";
  157. GetPUR_REQUIRE_PLAND();
  158. return;
  159. }
  160. }
  161. /// <summary>
  162. /// 接收需求计划行
  163. /// </summary>
  164. private void ReceivePUR_REQUIRE_PLAND()
  165. {
  166. try
  167. {
  168. ultraGrid1.UpdateData();
  169. IQueryable<UltraGridRow> checkRows = ultraGrid1.Rows.AsQueryable().Where(a => a.GetValue("CHK") == "True" && a.GetValue("qtyPur") != "" && double.Parse(a.GetValue("qtyPur")) > 0);
  170. //IQueryable<UltraGridRow> checkRows = ultraGrid1.Rows.AsQueryable().Where("CHK = 'True' ");
  171. if (checkRows.Count() == 0)
  172. {
  173. MessageUtil.ShowWarning("未勾需求计划行信息或未输入有效的核准量!");
  174. return;
  175. }
  176. ArrayList list = new ArrayList();
  177. foreach (UltraGridRow uRows in checkRows)
  178. {
  179. RequirePlanD ReqPD = new RequirePlanD();
  180. ReqPD.MrLineId = uRows.Cells["mrLineId"].Value.ToString();
  181. ReqPD.QtyPur = Convert.ToDouble(uRows.Cells["qtyPur"].Value);
  182. ReqPD.Qty = Convert.ToDouble(uRows.Cells["qty"].Value);
  183. String strReason = uRows.GetCellValue("refuseReason").ToString().Trim();
  184. if (ReqPD.Qty > ReqPD.QtyPur)
  185. {
  186. if (String.IsNullOrEmpty(strReason))
  187. {
  188. MessageUtil.ShowTips("若您部分核准物料:" + uRows.GetCellValue("itemName") + "的需求量,需填写减量的【处理意见】");
  189. comm.doActiveSelRow(ultraGrid1, "mrLineId", ReqPD.MrLineId);
  190. return;
  191. }
  192. ReqPD.RefuseReason = "【减量】" + strReason;
  193. }
  194. else if (ReqPD.Qty == ReqPD.QtyPur)
  195. {
  196. ReqPD.RefuseReason = strReason;
  197. }
  198. else
  199. {
  200. MessageUtil.ShowTips("物料:" + uRows.GetCellValue("itemName") + "的核准的需求量不能大于需求量");
  201. comm.doActiveSelRow(ultraGrid1, "mrLineId", ReqPD.MrLineId);
  202. return;
  203. }
  204. ReqPD.ItemUomId = uRows.Cells["itemUomId"].Value.ToString();
  205. ReqPD.ItemUnique = uRows.Cells["itemUnique"].Value.ToString();
  206. if(string.IsNullOrEmpty(ReqPD.ItemUomId))
  207. {
  208. MessageUtil.ShowTips("未获取物料:" + uRows.GetCellValue("itemName") + "采购单位编码");
  209. comm.doActiveSelRow(ultraGrid1, "mrLineId", ReqPD.MrLineId);
  210. return;
  211. }
  212. if (string.IsNullOrEmpty(ReqPD.ItemUnique))
  213. {
  214. MessageUtil.ShowTips("未获取物料:" + uRows.GetCellValue("itemName") + "采购单位编码");
  215. comm.doActiveSelRow(ultraGrid1, "mrLineId", ReqPD.MrLineId);
  216. return;
  217. }
  218. ReqPD.CreateUserid = UserInfo.GetUserID();
  219. ReqPD.CreateTime = DateTime.Now;
  220. ReqPD.CreateName = UserInfo.GetUserName();
  221. list.Add(ReqPD);
  222. }
  223. if (MessageUtil.ShowYesNoAndQuestion("确定接收?") == DialogResult.No)
  224. {
  225. return;
  226. }
  227. CoreResult re = this.execute<CoreResult>("com.hnshituo.pur.requireplan.service.RequirePlanDService", "doReceive", new object[] { list, "1" });
  228. if (re.Resultcode == 0)
  229. {
  230. MessageUtil.ShowTips("接收成功");
  231. GetPUR_REQUIRE_PLAND();
  232. return;
  233. }
  234. else
  235. {
  236. MessageUtil.ShowTips("操作失败:" + re.Resultmsg);
  237. return;
  238. }
  239. }
  240. catch (Exception ex)
  241. {
  242. MessageUtil.ShowTips("操作失败:" + ex);
  243. }
  244. }
  245. /// <summary>
  246. /// 取消利计划
  247. /// </summary>
  248. private void cancelBenefit()
  249. {
  250. try
  251. {
  252. if (ultraGrid4.ActiveRow == null)
  253. {
  254. MessageUtil.ShowTips("请选择撤销利计划的拆分需求计划行!");
  255. return;
  256. }
  257. UltraGridRow rowP = ultraGrid4.ActiveRow;
  258. String strMrLineId = rowP.GetCellValue("mrlineid").ToString().Trim();
  259. String strItemUnique = rowP.GetCellValue("itemUnique").ToString().Trim();
  260. string strId = rowP.GetCellValue("id").ToString().Trim();
  261. if (testStatus(strMrLineId, 3) == false)
  262. {
  263. return;
  264. }
  265. ArrayList list = new ArrayList();
  266. //减少接收表数据
  267. //插入接收表数据
  268. //更新需求计划行行状态
  269. RequireReceive rr = new RequireReceive();
  270. rr.Id = rowP.GetCellValue("id").ToString().Trim();
  271. rr.MrLineId = strMrLineId;
  272. rr.PurLineId = rowP.GetCellValue("mrLineId").ToString().Trim();
  273. //rr.Qty = Convert.ToDouble(uRows.GetCellValue("QTYLJHTemp"));
  274. rr.CreateUserid = UserInfo.GetUserID();
  275. rr.CreateTime = DateTime.Now;
  276. rr.CreateName = UserInfo.GetUserName();
  277. list.Add(rr);
  278. if (MessageUtil.ShowYesNoAndQuestion("确定对需求计划行:" + strMrLineId + "进行撤销利计划操作?") != DialogResult.Yes)
  279. {
  280. return;
  281. }
  282. CoreResult re = this.execute<CoreResult>("com.hnshituo.pur.requireplan.service.RequireReceiveService", "doBenefit", new object[] { list, "2" });
  283. if (re.Resultcode == 0)
  284. {
  285. MessageUtil.ShowTips("撤销成功!");
  286. }
  287. else
  288. {
  289. MessageUtil.ShowTips("操作失败:" + re.Resultmsg + "!");
  290. return;
  291. }
  292. }
  293. catch (Exception ex)
  294. {
  295. MessageUtil.ShowTips("操作失败:" + ex.Message + "!");
  296. }
  297. }
  298. /// <summary>
  299. /// 取消接收
  300. /// </summary>
  301. private void CancelPUR_REQUIRE_PLAND()
  302. {
  303. try
  304. {
  305. ultraGrid2.UpdateData();
  306. IQueryable<UltraGridRow> checkRows = ultraGrid2.Rows.AsQueryable().Where("CHK = 'True' ");
  307. if (checkRows.Count() == 0)
  308. {
  309. MessageUtil.ShowWarning("未勾选需取消接收的需求计划行!");
  310. return;
  311. }
  312. ArrayList list = new ArrayList();
  313. foreach (UltraGridRow uRows in checkRows)
  314. {
  315. RequirePlanD ReqPD = new RequirePlanD();
  316. ReqPD.MrLineId = uRows.Cells["mrlineId"].Value.ToString();
  317. if (testStatus(ReqPD.MrLineId, 1) == false)
  318. {
  319. return;
  320. }
  321. //ReqPD.FlagGeneratedPurPlan = "1";//原则上只允许状态为1/2的才能转3
  322. ReqPD.CreateUserid = UserInfo.GetUserID();
  323. ReqPD.CreateTime = DateTime.Now;
  324. ReqPD.CreateName = UserInfo.GetUserName();
  325. list.Add(ReqPD);
  326. }
  327. if (MessageUtil.ShowYesNoAndQuestion("确定取消接收?") == DialogResult.No)
  328. {
  329. return;
  330. }
  331. CoreResult re = this.execute<CoreResult>("com.hnshituo.pur.requireplan.service.RequirePlanDService", "doReceive", new object[] { list, "2" });
  332. if (re.Resultcode == 0)
  333. {
  334. MessageUtil.ShowTips("取消成功");
  335. GetPUR_REQUIRE_PLAND();
  336. return;
  337. }
  338. else
  339. {
  340. MessageUtil.ShowTips("操作失败:" + re.Resultmsg);
  341. return;
  342. }
  343. }
  344. catch (Exception ex)
  345. {
  346. MessageUtil.ShowTips("操作失败:" + ex.Message);
  347. }
  348. }
  349. /// <summary>
  350. /// 退回需求计划行
  351. /// </summary>
  352. private void RejectPUR_REQUIRE_PLAND()
  353. {
  354. try
  355. {
  356. ultraGrid1.UpdateData();
  357. IQueryable<UltraGridRow> checkRows = ultraGrid1.Rows.AsQueryable().Where("CHK = 'True' ");
  358. if (checkRows.Count() == 0)
  359. {
  360. MessageUtil.ShowWarning("未勾选需要接收的需求计划行!");
  361. return;
  362. }
  363. ArrayList list = new ArrayList();
  364. foreach (UltraGridRow uRows in checkRows)
  365. {
  366. RequirePlanD ReqPD = new RequirePlanD();
  367. ReqPD.MrLineId = uRows.Cells["mrLineId"].Value.ToString();
  368. ReqPD.FlagGeneratedPurPlan = "3";//原则上只允许状态为1/2的才能转3
  369. String strReason = uRows.GetCellValue("refuseReason").ToString().Trim();
  370. if (String.IsNullOrEmpty(strReason))
  371. {
  372. MessageUtil.ShowTips("若您退回物料:" + uRows.GetCellValue("itemName") + "的需求,需填写您的【处理意见】");
  373. comm.doActiveSelRow(ultraGrid1,"mrLineId", ReqPD.MrLineId);
  374. return;
  375. }
  376. ReqPD.RefuseReason = "【退回】"+strReason;
  377. list.Add(ReqPD);
  378. }
  379. frmRequireReturnPop frm1 = new frmRequireReturnPop();
  380. frm1.ShowDialog();
  381. if (frm1.tips!="1")
  382. {
  383. return;
  384. }
  385. if (String.IsNullOrEmpty(frm1.status))
  386. {
  387. MessageUtil.ShowTips("请选择处理方式");
  388. return;
  389. }
  390. foreach (RequirePlanD ReqPD1 in list)
  391. {
  392. ReqPD1.IsAllowReturn = frm1.status;
  393. if (frm1.status == "1")
  394. {
  395. ReqPD1.RefuseReason = "【允许修改返回】" + ReqPD1.RefuseReason;
  396. }
  397. }
  398. CoreResult re = this.execute<CoreResult>("com.hnshituo.pur.requireplan.service.RequirePlanDService", "doReceive", new object[] { list, "3" });
  399. if (re.Resultcode == 0)
  400. {
  401. MessageUtil.ShowTips("退回成功");
  402. GetPUR_REQUIRE_PLAND();
  403. return;
  404. }
  405. else
  406. {
  407. MessageUtil.ShowTips("操作失败:" + re.Resultmsg);
  408. return;
  409. }
  410. }
  411. catch (Exception ex)
  412. {
  413. MessageUtil.ShowTips("操作失败:" + ex);
  414. }
  415. }
  416. /// <summary>
  417. /// 查询
  418. /// </summary>
  419. private void GetPUR_REQUIRE_PLAND()
  420. {
  421. try
  422. {
  423. this.Cursor = Cursors.WaitCursor;
  424. string adm = CoreUserInfo.UserInfo.GetUserID();
  425. Dictionary<string, object> ReqPnew = getQueryCondition(adm);
  426. if (ultraTabControl1.SelectedTab == ultraTabControl1.Tabs[0])
  427. {
  428. dataSet1.Clear();
  429. dataSet2.Clear();
  430. //审批未接收源需求计划
  431. ReqPnew.Add("statusCol", "1");//未接收
  432. DataTable dt1 = this.execute<DataTable>("com.hnshituo.pur.requireplan.service.RequirePlanDService", "get_RePDM", new object[] { ReqPnew });
  433. foreach (DataRow row in dt1.Rows)
  434. {
  435. row["qtypur"] = row["qty"];
  436. row["itemDescE"] = Convert.ToDateTime(row["itemDescE"]).ToString("yyyy/MM");
  437. }
  438. GridHelper.CopyDataToDatatable(dt1, dataTable1, true);
  439. GridHelper.RefreshAndAutoSize(ultraGrid1);
  440. //利计划计划
  441. ReqPnew["rStatus"] = "1";
  442. ReqPnew["lineSeq"] = "1";//非分拆开数据
  443. DataTable dt2 = this.execute<DataTable>("com.hnshituo.pur.requireplan.service.RequireReceiveService", "get_canUse", new object[] { ReqPnew });
  444. foreach (DataRow row in dt2.Rows)
  445. {
  446. row["itemDescE"] = Convert.ToDateTime(row["itemDescE"]).ToString("yyyy/MM");
  447. }
  448. GridHelper.CopyDataToDatatable(dt2, dataTable4, true);
  449. //已处理数据
  450. ReqPnew["rStatus"] = "2";
  451. ReqPnew["lineSeq"] = "2";//分拆开数据
  452. DataTable dt10 = this.execute<DataTable>("com.hnshituo.pur.requireplan.service.RequireReceiveService", "get_canUse", new object[] { ReqPnew });
  453. if (dt2.Rows.Count <= 0)
  454. {
  455. dt10.Clear();
  456. }
  457. else
  458. {
  459. for (int j = dt10.Rows.Count - 1; j >= 0; j--)
  460. {
  461. dt10.Rows[j]["itemDescE"] = Convert.ToDateTime(dt10.Rows[j]["itemDescE"]).ToString("yyyy/MM");
  462. String strMrLineId = dt10.Rows[j]["mrLineId"].ToString().Trim();
  463. DataRow[] rowss = dt2.Select("mrLineId='" + strMrLineId + "'");
  464. if (rowss.Count() <= 0)
  465. {
  466. dt10.Rows.RemoveAt(j);
  467. }
  468. }
  469. }
  470. GridHelper.CopyDataToDatatable(dt10, dataTable6, true);
  471. GridHelper.RefreshAndAutoSize(ultraGrid2);
  472. }
  473. else
  474. {
  475. dataSet3.Clear();
  476. dataSet4.Clear();
  477. //审批已接收源需求计划
  478. ReqPnew["statusCol"] = "2";//已接收(2已接收 4已编制)
  479. DataTable dt7 = this.execute<DataTable>("com.hnshituo.pur.requireplan.service.RequirePlanDService", "get_RePDM", new object[] { ReqPnew });
  480. foreach (DataRow row in dt7.Rows)
  481. {
  482. row["itemDescE"] = Convert.ToDateTime(row["itemDescE"]).ToString("yyyy/MM");
  483. }
  484. GridHelper.CopyDataToDatatable(dt7, dataTable2, true);
  485. GridHelper.RefreshAndAutoSize(ultraGrid3);
  486. }
  487. }
  488. catch (Exception ex)
  489. {
  490. MessageUtil.ShowTips("加载数据失败:" + ex);
  491. }
  492. finally
  493. {
  494. this.Cursor = Cursors.Default;
  495. }
  496. }
  497. #endregion
  498. #region 界面函数
  499. /// <summary>
  500. /// 校验状态
  501. /// </summary>
  502. /// <param name="mrlineId"></param>
  503. /// <param name="p2"></param>
  504. /// <returns></returns>
  505. private bool testStatus(string mrlineId, int p2)//校验状态
  506. {
  507. if (String.IsNullOrEmpty(mrlineId))
  508. {
  509. MessageUtil.ShowTips("为获取到需求计划行号!");
  510. return false;
  511. }
  512. if (p2 == 1)
  513. {
  514. RequireReceive rr = new RequireReceive();
  515. rr.MrLineId = mrlineId;
  516. rr.Validflag = "1";
  517. DataTable dt2 = this.execute<DataTable>("com.hnshituo.pur.requireplan.service.RequireReceiveService", "find", new object[] { rr,0,0});
  518. if (dt2.Rows.Count == 0)
  519. {
  520. MessageUtil.ShowTips("需求计划行:" + mrlineId + "已退回或已删除!");
  521. comm.doActiveSelRow(ultraGrid2, "mrlineId", mrlineId);
  522. return false;
  523. }
  524. if (dt2.Rows.Count > 1)
  525. {
  526. MessageUtil.ShowTips("需求计划行:" + mrlineId + "已利计划,请先撤销利计划再操作!");
  527. comm.doActiveSelRow(ultraGrid2, "mrlineId", mrlineId);
  528. return false;
  529. }
  530. if (dt2.Rows[0]["status"].ToString().Trim() == "2")
  531. {
  532. MessageUtil.ShowTips("需求计划行:" + mrlineId + "已编制汇总,请先撤销编制汇总再操作!");
  533. comm.doActiveSelRow(ultraGrid2, "mrlineId", mrlineId);
  534. return false;
  535. }
  536. }
  537. //是否可以利计划判断
  538. else if (p2 == 2)
  539. {
  540. RequireReceive rr = new RequireReceive();
  541. rr.MrLineId = mrlineId;
  542. rr.Purtype = "1";//编制类型
  543. rr.Validflag = "1";//有效数据
  544. List<RequireReceive> listR = this.execute<List<RequireReceive>>("com.hnshituo.pur.requireplan.service.RequireReceiveService", "find", new object[] { rr,0,0});
  545. if (listR.Count() == 0)
  546. {
  547. MessageUtil.ShowTips("未发现接收需求计划行:" + mrlineId+"信息记录,可能已被删除或退回,或请刷新重新操作!");
  548. return false;
  549. }
  550. else if (listR.Count() > 1)
  551. {
  552. MessageUtil.ShowTips("接收需求计划行:" + mrlineId + "数据异常,或请刷新重新操作!");
  553. return false;
  554. }
  555. else
  556. {
  557. rr = listR[0];
  558. if (rr.Status == "2")
  559. {
  560. MessageUtil.ShowTips("该接收需求计划行:" + mrlineId+"已编制汇总!");
  561. return false;
  562. }
  563. if (rr.Qty <= 0)
  564. {
  565. MessageUtil.ShowTips("该接收需求计划行:" + mrlineId + "剩余最大可利计划量【"+rr.Qty+rr.ItemUom+"】!");
  566. return false;
  567. }
  568. }
  569. }
  570. //是否可以利计划判断
  571. else if (p2 == 3)
  572. {
  573. RequireReceive rr = new RequireReceive();
  574. rr.MrLineId = mrlineId;
  575. rr.Purtype = "1";//编制类型
  576. rr.Validflag = "1";//有效数据
  577. List<RequireReceive> listR = this.execute<List<RequireReceive>>("com.hnshituo.pur.requireplan.service.RequireReceiveService", "find", new object[] { rr, 0, 0 });
  578. if (listR.Count() == 0)
  579. {
  580. MessageUtil.ShowTips("未发现接收需求计划行:" + mrlineId + "信息记录,可能已被删除或退回,或请刷新重新操作!");
  581. return false;
  582. }
  583. else if (listR.Count() > 1)
  584. {
  585. MessageUtil.ShowTips("接收需求计划行:" + mrlineId + "数据异常,或请刷新重新操作!");
  586. return false;
  587. }
  588. else
  589. {
  590. rr = listR[0];
  591. if (rr.Status == "2")
  592. {
  593. MessageUtil.ShowTips("该接收需求计划行:" + mrlineId + "已编制汇总!");
  594. return false;
  595. }
  596. }
  597. }
  598. else
  599. {
  600. MessageUtil.ShowTips("未知验证参数!");
  601. return false;
  602. }
  603. return true;
  604. }
  605. /// <summary>
  606. /// 获取查询条件
  607. /// </summary>
  608. /// <param name="adm"></param>
  609. /// <returns></returns>
  610. private Dictionary<string, object> getQueryCondition(string adm)
  611. {
  612. Dictionary<string, object> ReqPnew = new Dictionary<string, object>();
  613. if (Ck_Ctime.Checked)
  614. {
  615. if (txtMrPeriodStart.Text != "")
  616. {
  617. DateTime Start = Convert.ToDateTime(txtMrPeriodStart.Value);
  618. ReqPnew.Add("createTimeStart", Start);
  619. }
  620. if (txtMrPeriodEnd.Text != "")
  621. {
  622. DateTime End = Convert.ToDateTime(txtMrPeriodEnd.Value);
  623. ReqPnew.Add("createTimeEnd", End);
  624. }
  625. }
  626. if (Ck_ptime.Checked)
  627. {
  628. if (txtAuditedStart.Text != "")
  629. {
  630. DateTime Start1 = Convert.ToDateTime(txtAuditedStart.Value);
  631. ReqPnew.Add("auditedTimeStart", Start1);
  632. }
  633. if (txtAuditedEnd.Text != "")
  634. {
  635. DateTime End1 = Convert.ToDateTime(txtAuditedEnd.Value);
  636. ReqPnew.Add("auditedTimeEnd", End1);
  637. }
  638. }
  639. //计划时间
  640. if (ck_Mtime.Checked == true)
  641. {
  642. if (cop_planMouthStart.Text != "")
  643. {
  644. DateTime Start1 = DateTime.Parse(Convert.ToDateTime(cop_planMouthStart.Value).ToString("yyyy/MM"));
  645. ReqPnew.Add("mrPeriodStart", Start1);
  646. }
  647. if (cop_planMouthEnd.Text != "")
  648. {
  649. DateTime End1 = DateTime.Parse(Convert.ToDateTime(cop_planMouthEnd.Value).ToString("yyyy/MM"));
  650. ReqPnew.Add("mrPeriodEnd", End1);
  651. }
  652. }
  653. ReqPnew.Add("mStatus", txt_Status.Value == null ? "" : txt_Status.Value.ToString().Trim());
  654. ReqPnew.Add("urgencyType", txt_UrgencyType.Value == null ? "" : txt_UrgencyType.Value.ToString().Trim());
  655. ReqPnew.Add("mrId", txt_MrId.Text.Trim());
  656. ReqPnew.Add("itemCode", txt_ItemCode.Text.Trim());
  657. ReqPnew.Add("itemName", txt_ItemName.Text.Trim());
  658. ReqPnew.Add("baseCode", basecode_pop);
  659. ReqPnew.Add("buyerUnitDesc", adm);
  660. ReqPnew.Add("style", "1");//仅查有效数据
  661. return ReqPnew;
  662. }
  663. #endregion
  664. #region 界面事件
  665. private void Ck_Ctime_CheckedChanged(object sender, EventArgs e)
  666. {
  667. txtMrPeriodStart.Enabled = Ck_Ctime.Checked;
  668. txtMrPeriodEnd.Enabled = Ck_Ctime.Checked;
  669. }
  670. private void Ck_ptime_CheckedChanged(object sender, EventArgs e)
  671. {
  672. txtAuditedEnd.Enabled = Ck_ptime.Checked;
  673. txtAuditedStart.Enabled = Ck_ptime.Checked;
  674. }
  675. /// <summary>
  676. /// 物料大类弹窗
  677. /// </summary>
  678. /// <param name="sender"></param>
  679. /// <param name="e"></param>
  680. private void txt_itemClass_EditorButtonClick(object sender, Infragistics.Win.UltraWinEditors.EditorButtonEventArgs e)// 物料大类弹窗
  681. {
  682. FrmMatClassPop_ups PopMat = new FrmMatClassPop_ups(this.ob);
  683. PopMat.ShowDialog();
  684. if (PopMat.Basecode == null)
  685. return;
  686. txt_itemClass.Text = PopMat.Basename;
  687. basecode_pop = PopMat.Basecode;
  688. }
  689. private void ultraGrid1_CellChange(object sender, CellEventArgs e)
  690. {
  691. if (e.Cell.Column.Key.Equals("qtyPur"))
  692. {
  693. object oldv = e.Cell.Row.Cells["qtyPur"].Value;
  694. ultraGrid1.UpdateData();
  695. object newv = e.Cell.Row.Cells["qtyPur"].Value;
  696. double reqty = Convert.ToDouble(e.Cell.Row.Cells["qty"].Value);
  697. if (newv != DBNull.Value)
  698. {
  699. if (Convert.ToDouble(newv) > reqty)
  700. {
  701. e.Cell.Row.Cells["qtyPur"].Value = oldv;
  702. return;
  703. }
  704. }
  705. }
  706. }
  707. //查询筛选后待编制需求计划行
  708. private void btn_queryDate_Click(object sender, EventArgs e)
  709. {
  710. dataSet2.Clear();
  711. try
  712. {
  713. string adm = CoreUserInfo.UserInfo.GetUserID();
  714. Dictionary<string, object> ReqPnew = getQueryCondition(adm);
  715. ReqPnew["rStatus"] = "1";
  716. ReqPnew["lineSeq"] = "1";//非分拆开数据
  717. DataTable dt2 = this.execute<DataTable>("com.hnshituo.pur.requireplan.service.RequireReceiveService", "get_canUse", new object[] { ReqPnew });
  718. foreach (DataRow row in dt2.Rows)
  719. {
  720. row["itemDescE"] = Convert.ToDateTime(row["itemDescE"]).ToString("yyyy/MM");
  721. }
  722. ReqPnew["rStatus"] = "2";
  723. ReqPnew["lineSeq"] = "2";//分拆开数据
  724. DataTable dt10 = this.execute<DataTable>("com.hnshituo.pur.requireplan.service.RequireReceiveService", "get_canUse", new object[] { ReqPnew });
  725. if (dt2.Rows.Count <= 0)
  726. {
  727. dt10.Clear();
  728. }
  729. else
  730. {
  731. for (int j = dt10.Rows.Count - 1; j >= 0; j--)
  732. {
  733. dt10.Rows[j]["itemDescE"] = Convert.ToDateTime(dt10.Rows[j]["itemDescE"]).ToString("yyyy/MM");
  734. String strMrLineId = dt10.Rows[j]["mrLineId"].ToString().Trim();
  735. DataRow[] rowss = dt2.Select("mrLineId='" + strMrLineId + "'");
  736. if (rowss.Count() <= 0)
  737. {
  738. dt10.Rows.RemoveAt(j);
  739. }
  740. }
  741. }
  742. if (ck_isShowLi.Checked)
  743. {
  744. for (int j = dt2.Rows.Count - 1; j >= 0; j--)
  745. {
  746. if (dt10.Rows.Count > 0)
  747. {
  748. String strMrLineId = dt2.Rows[j]["mrLineId"].ToString().Trim();
  749. foreach (DataRow rows in dt10.Rows)
  750. {
  751. if (rows["mrLineId"].ToString().Trim() == strMrLineId)
  752. {
  753. }
  754. else
  755. {
  756. dt2.Rows.RemoveAt(j);
  757. }
  758. }
  759. }
  760. else
  761. {
  762. dt2.Rows.RemoveAt(j);
  763. }
  764. }
  765. }
  766. GridHelper.CopyDataToDatatable(dt2, dataTable4, true);
  767. GridHelper.CopyDataToDatatable(dt10, dataTable6, true);
  768. }
  769. catch (Exception ex)
  770. {
  771. MessageUtil.ShowTips("加载数据失败:" + ex);
  772. }
  773. }
  774. //查询拆分需求计划行
  775. private void ultraGrid3_ClickCell(object sender, ClickCellEventArgs e)
  776. {
  777. String strmrLineId = e.Cell.Row.GetCellValue("mrLineId").ToString().Trim();
  778. if (String.IsNullOrEmpty(strmrLineId))
  779. {
  780. return;
  781. }
  782. Dictionary<string, object> ReqPnew = new Dictionary<string, object>();
  783. ReqPnew["mrLineId"] = strmrLineId;
  784. ReqPnew["style"] = "1";//有效数据
  785. DataTable dt3 = this.execute<DataTable>("com.hnshituo.pur.requireplan.service.RequireReceiveService", "get_canUse", new object[] { ReqPnew });
  786. GridHelper.CopyDataToDatatable(dt3, dataTable3, true);
  787. GridHelper.RefreshAndAutoSize(ultraGrid4);
  788. }
  789. private void ultraTabControl1_SelectedTabChanged(object sender, Infragistics.Win.UltraWinTabControl.SelectedTabChangedEventArgs e)
  790. {
  791. if (e.Tab.TabControl.SelectedTab.Key.Equals("0"))
  792. {
  793. //if (toolMenu.Toolbars[0].Tools.Exists("doQuery")) { toolMenu.Toolbars[0].Tools["doQuery"].InstanceProps.Visible = DefaultableBoolean.True; }
  794. //if (toolMenu.Toolbars[0].Tools.Exists("doCreate")) { toolMenu.Toolbars[0].Tools["doCreate"].InstanceProps.Visible = DefaultableBoolean.False; }
  795. //if (toolMenu.Toolbars[0].Tools.Exists("cancelCreate")) { toolMenu.Toolbars[0].Tools["cancelCreate"].InstanceProps.Visible = DefaultableBoolean.True; }
  796. //if (toolMenu.Toolbars[0].Tools.Exists("doExcel")) { toolMenu.Toolbars[0].Tools["doExcel"].InstanceProps.Visible = DefaultableBoolean.True; }
  797. //if (toolMenu.Toolbars[0].Tools.Exists("doExit")) { toolMenu.Toolbars[0].Tools["doExit"].InstanceProps.Visible = DefaultableBoolean.True; }
  798. this.ToolBarItemEnable(this, "doReceive", true);
  799. this.ToolBarItemEnable(this, "doReject", true);
  800. this.ToolBarItemEnable(this, "cancelReceive", true);
  801. this.ToolBarItemEnable(this, "doChange", true);
  802. this.ToolBarItemEnable(this, "cancelBenefit", false);
  803. }
  804. else
  805. {
  806. //if (toolMenu.Toolbars[0].Tools.Exists("doQuery")) { toolMenu.Toolbars[0].Tools["doQuery"].InstanceProps.Visible = DefaultableBoolean.True; }
  807. //if (toolMenu.Toolbars[0].Tools.Exists("doCreate")) { toolMenu.Toolbars[0].Tools["doCreate"].InstanceProps.Visible = DefaultableBoolean.True; }
  808. //if (toolMenu.Toolbars[0].Tools.Exists("cancelCreate")) { toolMenu.Toolbars[0].Tools["cancelCreate"].InstanceProps.Visible = DefaultableBoolean.False; }
  809. //if (toolMenu.Toolbars[0].Tools.Exists("doExcel")) { toolMenu.Toolbars[0].Tools["doExcel"].InstanceProps.Visible = DefaultableBoolean.False; }
  810. //if (toolMenu.Toolbars[0].Tools.Exists("doExit")) { toolMenu.Toolbars[0].Tools["doExit"].InstanceProps.Visible = DefaultableBoolean.True; }
  811. this.ToolBarItemEnable(this, "doReceive", false);
  812. this.ToolBarItemEnable(this, "doReject", false);
  813. this.ToolBarItemEnable(this, "cancelReceive", false);
  814. this.ToolBarItemEnable(this, "doChange", false);
  815. this.ToolBarItemEnable(this, "cancelBenefit", true);
  816. }
  817. }
  818. private void ck_Mtime_CheckedChanged(object sender, EventArgs e)
  819. {
  820. cop_planMouthStart.Enabled = ck_Mtime.Checked;
  821. cop_planMouthEnd.Enabled = ck_Mtime.Checked;
  822. }
  823. #endregion
  824. private void ultraGrid1_ClickCell(object sender, ClickCellEventArgs e)
  825. {
  826. if (ultraExpandableGroupBox1.Expanded)
  827. {
  828. //加载单位
  829. String strItemCode = e.Cell.Row.GetCellValue("itemCode").ToString().Trim();
  830. if (String.IsNullOrEmpty(strItemCode))
  831. {
  832. return;
  833. }
  834. cg_itemName.Text = e.Cell.Row.GetCellValue("itemName").ToString().Trim();
  835. cg_itemUom.Text = e.Cell.Row.GetCellValue("itemUom").ToString().Trim();
  836. cg_Qty.Value = e.Cell.Row.GetCellValue("qty");
  837. cg_weightUnit.Text = e.Cell.Row.GetCellValue("weightUnit").ToString().Trim();
  838. cg_itemUomId = e.Cell.Row.GetCellValue("itemUomId").ToString().Trim();
  839. cg_conf.Text = e.Cell.Row.GetCellValue("itemUomConefficient").ToString().Trim();
  840. getMatUOM(strItemCode);
  841. cg_itemUom.Value = cg_itemUomId;
  842. }
  843. }
  844. // 获取单位转换
  845. private void getMatUOM(String strItemCode)
  846. {
  847. if (!string.IsNullOrEmpty(strItemCode))
  848. {
  849. PurMatUomsEntity MatUomsEntity = new PurMatUomsEntity();
  850. MatUomsEntity.ItemCode = strItemCode;
  851. MatUomsEntity.Validflag = "1";
  852. DataTable dt_matUOM = this.execute<DataTable>("com.hnshituo.pur.configure.service.MatUomsService", "find", new object[] { MatUomsEntity, 0, 0 });
  853. cg_itemUom.DataSource = dt_matUOM;
  854. cg_itemUom.ValueMember = "itemUomId";
  855. cg_itemUom.DisplayMember = "uomName";
  856. }
  857. }
  858. //选择单位
  859. private void cg_itemUom_ValueChanged(object sender, EventArgs e)
  860. {
  861. //获取改变之前的转化系数
  862. if (cg_itemUom.SelectedIndex==-1)
  863. {
  864. return;
  865. }
  866. if (String.IsNullOrEmpty(cg_conf.Text.Trim()))
  867. {
  868. return;
  869. }
  870. double oldCon = Convert.ToDouble(cg_conf.Text);
  871. cg_itemUomId = cg_itemUom.Value.ToString().Trim();
  872. //需改变数量
  873. PurMatUomsEntity dt_matUOM = this.execute<PurMatUomsEntity>("com.hnshituo.pur.configure.service.MatUomsService", "findById", new object[] { cg_itemUomId });
  874. if (dt_matUOM == null)
  875. {
  876. return;
  877. }
  878. double newCon = (double)dt_matUOM.ItemUomConefficient;
  879. double oldQtyPur = Convert.ToDouble(cg_Qty.Value);
  880. double newQtyPur = 0;
  881. if (oldCon != newCon)
  882. {
  883. newQtyPur = oldQtyPur * oldCon / newCon;
  884. cg_Qty.Value = newQtyPur;
  885. cg_conf.Text = newCon+"";
  886. }
  887. cg_weightUnit.Text = dt_matUOM.WeightUnit;
  888. cg_conf.Text = newCon + "";
  889. }
  890. //写到行信息里面
  891. private void btn_cg_Click(object sender, EventArgs e)
  892. {
  893. if (ultraGrid1.ActiveRow == null)
  894. {
  895. return;
  896. }
  897. UltraGridRow uge = ultraGrid1.ActiveRow;
  898. String strItemUomId = uge.GetCellValue("itemUomId").ToString().Trim();
  899. if (String.IsNullOrEmpty(strItemUomId))
  900. {
  901. MessageUtil.ShowTips("无法获取行单位ID");
  902. return;
  903. }
  904. if (String.IsNullOrEmpty(cg_itemUomId))
  905. {
  906. MessageUtil.ShowTips("请先选择采购单位");
  907. cg_itemUom.Focus();
  908. return;
  909. }
  910. if (cg_itemUomId == strItemUomId)
  911. {
  912. MessageUtil.ShowTips("未发现可调整项");
  913. cg_itemUom.Focus();
  914. return;
  915. }
  916. if (MessageUtil.ShowYesNoAndQuestion("确定调整该需求行物料:" + uge.GetCellValue("itemName")) != DialogResult.Yes)
  917. {
  918. return;
  919. }
  920. uge.Cells["itemUomId"].Value = cg_itemUomId;//记录新的单位换算ID
  921. uge.Cells["itemUnique"].Value = uge.GetCellValue("itemCode").ToString().Trim() + "@" + uge.GetCellValue("itemAttrId").ToString().Trim() + "@" + uge.GetCellValue("itemStandardsId").ToString().Trim() + "@" + cg_itemUomId;
  922. uge.Cells["qty"].Value = cg_Qty.Value;
  923. uge.Cells["weightUnit"].Value = cg_weightUnit.Text.Trim();
  924. uge.Cells["itemUom"].Value = cg_itemUom.Text.Trim();
  925. uge.Cells["itemUomConefficient"].Value = cg_conf.Text.Trim();
  926. uge.Cells["refuseReason"].Value = "【调整】采购单位调整";
  927. ultraGrid1.UpdateData();
  928. MessageUtil.ShowTips("已修改");
  929. //清空
  930. cg_itemName.Clear();
  931. cg_itemUom.SelectedIndex = -1;
  932. cg_itemUomId = "";
  933. cg_weightUnit.Clear();
  934. cg_conf.Clear();
  935. }
  936. }
  937. }