frm_PlanBenefit.cs 14 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304
  1. using System;
  2. using System.Collections.Generic;
  3. using System.ComponentModel;
  4. using System.Data;
  5. using System.Drawing;
  6. using System.Linq;
  7. using System.Text;
  8. using System.Windows.Forms;
  9. using CoreFS.CA06;using Pur.Entity;using Pur.Entity;
  10. using Core.Mes.Client.Comm.Control;
  11. using System.Collections;
  12. using Core.Mes.Client.Comm.Tool;
  13. using Infragistics.Win;
  14. using Pur.Entity.ck;
  15. using Pur.Entity.configureEntity;
  16. using com.hnshituo.pur.vo;
  17. namespace Pur.Pop_upWindow
  18. {
  19. public partial class frm_PlanBenefit : FrmPmsBase
  20. {
  21. public frm_PlanBenefit(OpeBase ob, string strMrId)
  22. {
  23. InitializeComponent();
  24. this.ob = ob;
  25. get_PUR_PLAN_D(strMrId);
  26. GridHelper.SetExcludeColumnsActive(ultraGrid3.DisplayLayout.Bands[0], "QTYLJHTemp");
  27. GridHelper.SetExcludeColumnsActive(ultraGrid2.DisplayLayout.Bands[0]);
  28. }
  29. /// <summary>
  30. /// 按钮控件
  31. /// </summary>
  32. /// <param name="sender"></param>
  33. /// <param name="e"></param>
  34. private void barsManagerButon_ToolClick(object sender, Infragistics.Win.UltraWinToolbars.ToolClickEventArgs e)
  35. {
  36. switch (e.Tool.Key.ToString())
  37. {
  38. case "Query":
  39. {
  40. }
  41. break;
  42. case "conFirmation":
  43. {
  44. conFirmation();
  45. }
  46. break;
  47. case "ESC":
  48. {
  49. this.Close();
  50. }
  51. break;
  52. }
  53. }
  54. /// <summary>
  55. /// 查询采购计划详表
  56. /// </summary>
  57. /// <param name="PurPlanMEntity"></param>
  58. public void get_PUR_PLAN_D(string strMrId)
  59. {
  60. EntityPurPlanD PurPlanDEntity = new EntityPurPlanD();
  61. PurPlanDEntity.Validflag = "1";
  62. PurPlanDEntity.MrId = strMrId;
  63. DataTable dt = this.execute<DataTable>("com.hnshituo.pur.purplan.service.PurPlanDService", "find", new object[] { PurPlanDEntity, 0, 0 });
  64. GridHelper.CopyDataToDatatable(ref dt, ref dataTable5, true);//绑定目标采购计划行表
  65. //查询源采购计划行
  66. EntityPurPlanD PurPlanDEntitys = new EntityPurPlanD();
  67. PurPlanDEntitys.Validflag = "1";
  68. PurPlanDEntitys.MrId = strMrId;
  69. DataTable dt1 = this.execute<DataTable>("com.hnshituo.pur.purplan.service.PurPlanDService", "getPlanBenefit", new object[] { PurPlanDEntitys });
  70. GridHelper.CopyDataToDatatable(ref dt1, ref dataTable2, true);//绑定源采购计划行表
  71. }
  72. /// <summary>
  73. /// 激活采购计划行
  74. /// </summary>
  75. /// <param name="sender"></param>
  76. /// <param name="e"></param>
  77. private void ultraGrid2_AfterRowActivate(object sender, EventArgs e)
  78. {
  79. showItemUgridRow();
  80. }
  81. /// <summary>
  82. /// 显示采购计划激活行的物料
  83. /// </summary>
  84. private void showItemUgridRow()
  85. {
  86. for (int i = 0; i < ultraGrid3.Rows.Count; i++)
  87. {
  88. if (ultraGrid3.Rows[i].Cells["ITEMCODE"].Value.ToString() != ultraGrid2.ActiveRow.Cells["ITEMCODE"].Value.ToString() || ultraGrid3.Rows[i].Cells["ITEMUOM"].Value.ToString().Trim() != ultraGrid2.ActiveRow.Cells["ITEMUOM"].Value.ToString().Trim())
  89. {
  90. ultraGrid3.Rows[i].Hidden = true;
  91. }
  92. else
  93. {
  94. ultraGrid3.Rows[i].Hidden = false;
  95. }
  96. }
  97. }
  98. /// <summary>
  99. /// 确认操作
  100. /// </summary>
  101. /// <param name="PurPlanMEntity"></param>
  102. public void conFirmation()
  103. {
  104. ultraGrid2.UpdateData();
  105. ultraGrid3.UpdateData();
  106. ArrayList alpbd = new ArrayList();//目标采购计划行
  107. ArrayList alpbds = new ArrayList();//源采购计划行
  108. ArrayList alpbdsu = new ArrayList();//采购计划占用表
  109. //循环采购计划行表
  110. for (int i = 0; i < ultraGrid2.Rows.Count; i++)
  111. {
  112. //更新采购计划行表
  113. EntityPurPlanD pbd = new EntityPurPlanD();//采购计划行
  114. pbd.MrLineId = ultraGrid2.Rows[i].Cells["MrLineId"].Value.ToString();//采购单行号
  115. double bPurQTYLJH = 0;//采购行利计划量
  116. if (ultraGrid2.Rows[i].Cells["QTYLJH"].Value != null && ultraGrid2.Rows[i].Cells["QTYLJH"].Value.ToString() != "")
  117. {
  118. double.TryParse(ultraGrid2.Rows[i].Cells["QTYLJH"].Value.ToString(), out bPurQTYLJH);
  119. }
  120. double bQty = 0;//采购数量
  121. if (ultraGrid2.Rows[i].Cells["QTY"].Value != null && ultraGrid2.Rows[i].Cells["QTY"].Value.ToString() != "")
  122. {
  123. double.TryParse(ultraGrid2.Rows[i].Cells["QTY"].Value.ToString(), out bQty);
  124. }
  125. pbd.Qty = bQty;//采购数量
  126. pbd.QtyLjh = bPurQTYLJH;//利计划
  127. pbd.UpdateTime = System.DateTime.Now;
  128. pbd.UpdateName = UserInfo.GetUserName();
  129. pbd.UpdateUserid = UserInfo.GetUserID();
  130. alpbd.Add(pbd);
  131. for (int j = 0; j < ultraGrid3.Rows.Count; j++)
  132. {
  133. //if (ultraGrid3.Rows[j].Cells["ITEMUOMCONEFFICIENT"].Value.ToString() != "" && double.Parse(ultraGrid3.Rows[j].Cells["ITEMUOMCONEFFICIENT"].Value.ToString()) != 0)
  134. //{
  135. if (ultraGrid3.Rows[j].Cells["ITEMCODE"].Value.ToString() != ultraGrid2.Rows[i].Cells["ITEMCODE"].Value.ToString() || ultraGrid3.Rows[j].Cells["ITEMUOM"].Value.ToString().Trim() != ultraGrid2.Rows[i].Cells["ITEMUOM"].Value.ToString().Trim())
  136. { continue; }
  137. EntityPurPlanD pbds = new EntityPurPlanD();
  138. pbds.MrLineId = ultraGrid3.Rows[j].Cells["MrLineId"].Value.ToString();//采购单行号
  139. double bQTYYCUSEABLE = 0;//预采可分配量
  140. if (ultraGrid3.Rows[j].Cells["QTYYCUSEABLE"].Value != null && ultraGrid3.Rows[j].Cells["QTYYCUSEABLE"].Value.ToString() != "")
  141. {
  142. double.TryParse(ultraGrid3.Rows[j].Cells["QTYYCUSEABLE"].Value.ToString(), out bQTYYCUSEABLE);
  143. }
  144. double bQTYYCUSED = 0;//预采已分配量
  145. if (ultraGrid3.Rows[j].Cells["QTYYCUSED"].Value != null && ultraGrid3.Rows[j].Cells["QTYYCUSED"].Value.ToString() != "")
  146. {
  147. double.TryParse(ultraGrid3.Rows[j].Cells["QTYYCUSED"].Value.ToString(), out bQTYYCUSED);
  148. }
  149. double bQTYLJHTemp = 0;//本次利计划量
  150. if (ultraGrid3.Rows[j].Cells["QTYLJHTemp"].Value != null && ultraGrid3.Rows[j].Cells["QTYLJHTemp"].Value.ToString() != "")
  151. {
  152. double.TryParse(ultraGrid3.Rows[j].Cells["QTYLJHTemp"].Value.ToString(), out bQTYLJHTemp);
  153. }
  154. double bQTYLJHLast = 0;//上次利计划量
  155. if (ultraGrid3.Rows[j].Cells["QTYLJHLast"].Value != null && ultraGrid3.Rows[j].Cells["QTYLJHLast"].Value.ToString() != "")
  156. {
  157. double.TryParse(ultraGrid3.Rows[j].Cells["QTYLJHLast"].Value.ToString(), out bQTYLJHLast);
  158. }
  159. pbds.QtyYcUseable = bQTYYCUSEABLE +bQTYLJHLast-bQTYLJHTemp;//预采可分配量
  160. pbds.QtyYcUsed = bQTYYCUSED + bQTYLJHTemp - bQTYLJHLast;//预采已分配量
  161. pbds.UpdateTime = System.DateTime.Now;
  162. pbds.UpdateName = UserInfo.GetUserName();
  163. pbds.UpdateUserid = UserInfo.GetUserID();
  164. alpbds.Add(pbds);
  165. //库存占用量
  166. PurPurPlanUseEntity PlanUseEntity = new PurPurPlanUseEntity();
  167. PlanUseEntity.PurLineIdObject = pbd.MrLineId;//目标采购计划行
  168. PlanUseEntity.PurLineIdSource = ultraGrid3.Rows[j].Cells["MrLineId"].Value.ToString();//源采购计划行
  169. PlanUseEntity.Status = "1";//状态1:领用中2:已领用9:已取消
  170. PlanUseEntity.InvOrQty = bQTYLJHTemp;//占用量
  171. PlanUseEntity.Validflag = "1";
  172. PlanUseEntity.UpdateTime = System.DateTime.Now;
  173. PlanUseEntity.UpdateName = UserInfo.GetUserName();
  174. PlanUseEntity.UpdateUserid = UserInfo.GetUserID();
  175. alpbdsu.Add(PlanUseEntity);
  176. //}
  177. }
  178. //}
  179. }
  180. if (alpbd.Count < 1)
  181. {
  182. MessageUtil.ShowTips("利计划条件不符,未进行利库操作");
  183. return;
  184. }
  185. CoreResult crt = this.execute<CoreResult>("com.hnshituo.pur.purplan.service.PurPlanMService", "PlanBenefit", new object[] { alpbd, alpbds, alpbdsu });
  186. if (crt.Resultcode != 0)
  187. {
  188. MessageUtil.ShowTips("利计划失败 " + crt.Resultmsg);
  189. return;
  190. }
  191. MessageUtil.ShowTips("利计划成功");
  192. }
  193. /// <summary>
  194. /// 输入利库量
  195. /// </summary>
  196. /// <param name="sender"></param>
  197. /// <param name="e"></param>
  198. private void ultraGrid3_CellChange(object sender, Infragistics.Win.UltraWinGrid.CellEventArgs e)
  199. {
  200. validate_New(sender, e);
  201. //validate(sender, e);
  202. }
  203. /// <summary>
  204. /// 验证利库数量,当每次修改输入的利库量时使用
  205. /// </summary>
  206. /// <param name="sender"></param>
  207. /// <param name="e"></param>
  208. private void validate_New(object sender, Infragistics.Win.UltraWinGrid.CellEventArgs e)
  209. {
  210. //输入的利计划量不能>预采可分配量
  211. if (e.Cell.Column.Key == "QTYLJHTemp")
  212. {
  213. //---------------------计算源采购计划
  214. double num = 0; //利计划量
  215. if (e.Cell.Value != null && e.Cell.Value.ToString() != "")
  216. {
  217. double.TryParse(e.Cell.Value.ToString(), out num);
  218. }
  219. ultraGrid3.UpdateData();//更新输入的利计划量
  220. double numNew = 0; //利计划量
  221. if (e.Cell.Value != null && e.Cell.Value.ToString() != "")
  222. {
  223. double.TryParse(e.Cell.Value.ToString(), out numNew);
  224. }
  225. double bQTYYCUSEABLE = 0;//预采可分配量
  226. if (e.Cell.Row.Cells["QTYYCUSEABLE"].Value != null && e.Cell.Row.Cells["QTYYCUSEABLE"].Value.ToString() != "")
  227. {
  228. double.TryParse(e.Cell.Row.Cells["QTYYCUSEABLE"].Value.ToString(), out bQTYYCUSEABLE);
  229. }
  230. double bQTYLJHLast = 0;//上次利计划量
  231. if (e.Cell.Row.Cells["QTYLJHLast"].Value != null && e.Cell.Row.Cells["QTYLJHLast"].Value.ToString() != "")
  232. {
  233. double.TryParse(e.Cell.Row.Cells["QTYLJHLast"].Value.ToString(), out bQTYLJHLast);
  234. }
  235. //-----------------计算目标采购计划
  236. double Purnum = 0; //采购行新利计划量
  237. for (int i = 0; i < ultraGrid3.Rows.Count; i++)
  238. {
  239. if (ultraGrid3.Rows[i].Hidden == false)
  240. {
  241. if (ultraGrid3.Rows[i].Cells["QTYLJHTemp"].Value != null && ultraGrid3.Rows[i].Cells["QTYLJHTemp"].Value.ToString() != "")
  242. {
  243. Purnum += double.Parse(ultraGrid3.Rows[i].Cells["QTYLJHTemp"].Value.ToString());
  244. }
  245. }
  246. }
  247. double bQTYLJH = 0;//采购行原利库量
  248. if (ultraGrid2.ActiveRow.Cells["QTYLJH"].Value != null && ultraGrid2.ActiveRow.Cells["QTYLJH"].Value.ToString() != "")
  249. {
  250. double.TryParse(ultraGrid2.ActiveRow.Cells["QTYLJH"].Value.ToString(), out bQTYLJH);
  251. }
  252. double bQTYLK = 0;//采购行利库量
  253. if (ultraGrid2.ActiveRow.Cells["QTYLK"].Value != null && ultraGrid2.ActiveRow.Cells["QTYLK"].Value.ToString() != "")
  254. {
  255. double.TryParse(ultraGrid2.ActiveRow.Cells["QTYLK"].Value.ToString(), out bQTYLK);
  256. }
  257. double bQTY = 0;//采购数量
  258. if (ultraGrid2.ActiveRow.Cells["QTY"].Value != null && ultraGrid2.ActiveRow.Cells["QTY"].Value.ToString() != "")
  259. {
  260. double.TryParse(ultraGrid2.ActiveRow.Cells["QTY"].Value.ToString(), out bQTY);
  261. }
  262. if (numNew > bQTYYCUSEABLE + bQTYLJHLast || Purnum > bQTY + bQTYLJH)
  263. {
  264. //MessageUtil.ShowTips("已结算量必须小于入库量才能选择结算");
  265. e.Cell.Value = num;
  266. return;
  267. }
  268. else
  269. {
  270. ultraGrid2.ActiveRow.Cells["QTYLJH"].Value = Purnum;//利计划
  271. ultraGrid2.ActiveRow.Cells["QTY"].Value = bQTY + bQTYLJH - Purnum;//采购数量=采购数量+(新利计划量-原来利计划量)
  272. ultraGrid3.UpdateData();
  273. ultraGrid2.UpdateData();
  274. }
  275. }
  276. }
  277. }
  278. }