frmConfirmBalance.cs 30 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622
  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;
  10. using Core.Mes.Client.Comm.Tool;
  11. using Core.Mes.Client.Comm.Control;
  12. using System.Collections;
  13. using Pur.Entity.balanceEntity;
  14. using Pur.Entity.configureEntity;
  15. using com.hnshituo.pur.vo;
  16. using Infragistics.Win;
  17. using Infragistics.Win.UltraWinGrid;
  18. namespace Pur.balance
  19. {
  20. public partial class frmConfirmBalance : FrmPmsBase
  21. {
  22. string QstrSuppCode = "";
  23. Hashtable Qhs = new Hashtable();
  24. public frmConfirmBalance(OpeBase ob, ArrayList strOrder, string strSuppName, string strSuppCode)
  25. {
  26. InitializeComponent();
  27. this.ob = ob;
  28. txt_SuppName.Text = strSuppName;
  29. QstrSuppCode = strSuppCode;
  30. getBalance(strOrder);
  31. }
  32. protected override void OnLoad(EventArgs e)
  33. {
  34. base.OnLoad(e);
  35. GridHelper.SetExcludeColumnsActive(ultraGrid1.DisplayLayout.Bands[0], "Check", "BASEQTY");
  36. ultraGrid1.DisplayLayout.Bands[0].PerformAutoResizeColumns(true, PerformAutoSizeType.AllRowsInBand);//自Á?适º¨º应®|列¢D宽¨ª
  37. }
  38. /// <summary>
  39. /// 获取结算单信息
  40. /// </summary>
  41. private void getBalance(ArrayList strOrder)
  42. {
  43. DataTable dt = this.execute<DataTable>("com.hnshituo.pur.balance.service.BalanceBillCService", "getBalance", new object[] { strOrder });
  44. //基础数量默认为入库量
  45. GridHelper.CopyDataToDatatable(ref dt, ref dataTable1, true);//结算信息
  46. ultraGrid1.UpdateData();
  47. bandListValue();// 绑定grid下拉框
  48. saveBalanceBillCD();// 建立保存结算单明细说明保存库
  49. }
  50. /// <summary>
  51. /// 建立保存结算单明细说明保存库
  52. /// </summary>
  53. private void saveBalanceBillCD()
  54. {
  55. for (int i = 0; i < dataTable1.Rows.Count; i++)
  56. {
  57. Hashtable hs = new Hashtable();
  58. hs.Add(0, dataTable2.Copy());
  59. hs.Add(1, dataTable3.Copy());
  60. hs.Add(2, dataTable4.Copy());
  61. Qhs.Add(ultraGrid1.Rows[i].Cells["INSTOCKNO"].Value.ToString(), hs);
  62. }
  63. }
  64. /// <summary>
  65. /// 绑定grid下拉框
  66. /// </summary>
  67. private void bandListValue()
  68. {
  69. //参考结算标准类别
  70. Infragistics.Win.ValueList valueList2 = new Infragistics.Win.ValueList();
  71. valueList2.ValueListItems.Add("1", "基准计价");
  72. valueList2.ValueListItems.Add("2", "成分计价");
  73. valueList2.ValueListItems.Add("3", "批量计价");
  74. //设置默认选项
  75. if (valueList2.ValueListItems.Count > 0)
  76. {
  77. valueList2.SelectedIndex = 0;
  78. }
  79. Infragistics.Win.ValueList valueList3 = new Infragistics.Win.ValueList();
  80. valueList3.ValueListItems.Add("1", "基准计价");
  81. valueList3.ValueListItems.Add("2", "成分计价");
  82. valueList3.ValueListItems.Add("3", "批量计价");
  83. //设置默认选项
  84. if (valueList3.ValueListItems.Count > 0)
  85. {
  86. valueList3.SelectedIndex = 0;
  87. }
  88. Infragistics.Win.ValueList valueList4 = new Infragistics.Win.ValueList();
  89. valueList4.ValueListItems.Add("1", "基准计价");
  90. valueList4.ValueListItems.Add("2", "成分计价");
  91. valueList4.ValueListItems.Add("3", "批量计价");
  92. //设置默认选项
  93. if (valueList4.ValueListItems.Count > 0)
  94. {
  95. valueList4.SelectedIndex = 0;
  96. }
  97. ultraGrid2.DisplayLayout.Bands[0].Columns["REFSTANDARDMTYPE"].ValueList = valueList2;
  98. ultraGrid3.DisplayLayout.Bands[0].Columns["REFSTANDARDMTYPE"].ValueList = valueList3;
  99. ultraGrid4.DisplayLayout.Bands[0].Columns["REFSTANDARDMTYPE"].ValueList = valueList4;
  100. }
  101. /// <summary>
  102. /// 结算操作
  103. /// </summary>
  104. private void addBalance()
  105. {
  106. getData();
  107. ultraGrid1.UpdateData();
  108. ArrayList alpbbc = new ArrayList();
  109. PurBalanceBillMEntity pbbm = new PurBalanceBillMEntity();//结算主表
  110. ArrayList alpbbcd = new ArrayList();
  111. //结算主表
  112. pbbm.BalanceId = Guid.NewGuid().ToString();//结算单号
  113. pbbm.Status = "1";//结算状态
  114. pbbm.SuppName = txt_SuppName.Text;//供应商名称
  115. pbbm.SuppCode = QstrSuppCode;//供应商代码
  116. pbbm.OpOrgId = UserInfo.GetDeptid();//操作者机构ID
  117. pbbm.OpOrgName = UserInfo.GetDepartment();//操作者机构名称
  118. pbbm.SettleDate = System.DateTime.Now;//结算日期
  119. if (string.IsNullOrEmpty(txt_BALANCE_AMT_TAX.Text))
  120. {
  121. pbbm.TotalWithoutAmtTax = 0;//含税总金额
  122. }
  123. else
  124. {
  125. pbbm.TotalWithoutAmtTax = double.Parse(txt_BALANCE_AMT_TAX.Text);//含税总金额
  126. }
  127. if (string.IsNullOrEmpty(txt_BALANCE_AMT_WITHOUT_TAX.Text))
  128. {
  129. pbbm.TotalWithAmtTax = double.Parse(txt_BALANCE_AMT_WITHOUT_TAX.Text);//不含税总金额
  130. }
  131. else
  132. {
  133. pbbm.TotalWithAmtTax = double.Parse(txt_BALANCE_AMT_WITHOUT_TAX.Text);//不含税总金额
  134. }
  135. pbbm.Validflag = "1";
  136. pbbm.CreateUserid = UserInfo.GetUserID();
  137. pbbm.CreateName = UserInfo.GetUserName();
  138. pbbm.CreateTime = System.DateTime.Now;
  139. //结算明细
  140. for (int i = 0; i < ultraGrid1.Rows.Count; i++)
  141. {
  142. if ((Boolean)ultraGrid1.Rows[i].Cells["Check"].Value)
  143. {
  144. double bINNUM = 0;//入库量
  145. double.TryParse(ultraGrid1.Rows[i].Cells["INNUM"].Value.ToString(), out bINNUM);
  146. double bINVOICEDQTY = 0;//已结算量
  147. double.TryParse(ultraGrid1.Rows[i].Cells["INVOICEDQTY"].Value.ToString(), out bINVOICEDQTY);
  148. double bBASEQTY = 0;//基础数量
  149. double.TryParse(ultraGrid1.Rows[i].Cells["BASEQTY"].Value.ToString(), out bBASEQTY);
  150. if (bBASEQTY > (bINNUM-bINVOICEDQTY))
  151. {
  152. MessageUtil.ShowTips("单号【" + ultraGrid1.Rows[i].Cells["INSTOCKNO"].Value.ToString() + "】的基础数量不能大于入库量和已结算量的差值");
  153. return;
  154. }
  155. PurCkInBillEntity pckb = new PurCkInBillEntity();//入库单表
  156. pckb = this.execute<PurCkInBillEntity>("com.hnshituo.pur.ck.service.CkInBillService", "findById", new object[] { ultraGrid1.Rows[i].Cells["INSTOCKNO"].Value.ToString() });
  157. PurBalanceBillCEntity pbbc = new PurBalanceBillCEntity();//结算明细
  158. pbbc = EntityHelper.CopyEntity<PurBalanceBillCEntity>(pckb);
  159. pbbc.Validflag = "1";
  160. pbbc.Id = Guid.NewGuid().ToString();//主键
  161. pbbc.BalanceId = pbbm.BalanceId;//结算单号
  162. if (ultraGrid1.ActiveRow.Cells["BASEQTY"].Value.ToString().Trim() != "")
  163. {
  164. pbbc.BaseQty = double.Parse(ultraGrid1.Rows[i].Cells["BASEQTY"].Value.ToString());//基础数量
  165. }
  166. if (ultraGrid1.ActiveRow.Cells["PRICEWITHOUTTAX"].Value.ToString().Trim() != "")
  167. {
  168. pbbc.BaseQty = double.Parse(ultraGrid1.Rows[i].Cells["PRICEWITHOUTTAX"].Value.ToString());//基础单价
  169. }
  170. if (ultraGrid1.Rows[i].Cells["ADDSUBTQTY"].Value.ToString().Trim() != "")
  171. {
  172. pbbc.AddSubtQty = double.Parse(ultraGrid1.Rows[i].Cells["ADDSUBTQTY"].Value.ToString());//加扣数量
  173. }
  174. if (ultraGrid1.Rows[i].Cells["ADDSUBTPRICE"].Value.ToString().Trim() != "")
  175. {
  176. pbbc.AddSubtPrice = double.Parse(ultraGrid1.Rows[i].Cells["ADDSUBTPRICE"].Value.ToString());//加扣单价
  177. }
  178. if (ultraGrid1.Rows[i].Cells["BALANCEQTY"].Value.ToString().Trim() != "")
  179. {
  180. pbbc.BalanceQty = double.Parse(ultraGrid1.Rows[i].Cells["BALANCEQTY"].Value.ToString());//结算数量
  181. }
  182. if (ultraGrid1.Rows[i].Cells["BALANCEPRICE"].Value.ToString().Trim() != "")
  183. {
  184. pbbc.BalancePrice = double.Parse(ultraGrid1.Rows[i].Cells["BALANCEPRICE"].Value.ToString());//结算单价
  185. }
  186. if (ultraGrid1.Rows[i].Cells["ADDSUBTAMT"].Value.ToString().Trim() != "")
  187. {
  188. pbbc.AddSubtAmt = double.Parse(ultraGrid1.Rows[i].Cells["ADDSUBTAMT"].Value.ToString());//加扣金额
  189. }
  190. if (ultraGrid1.Rows[i].Cells["BALANCEAMT"].Value.ToString().Trim() != "")
  191. {
  192. pbbc.BalanceAmt = double.Parse(ultraGrid1.Rows[i].Cells["BALANCEAMT"].Value.ToString());//结算金额
  193. pbbc.BalanceAmtWithoutTax = pbbc.BalanceAmt * 1.13;
  194. }
  195. pbbc.CreateUserid = UserInfo.GetUserID();
  196. pbbc.CreateName = UserInfo.GetUserName();
  197. pbbc.CreateTime = System.DateTime.Now;
  198. pbbc.UpdateName = null;
  199. pbbc.UpdateTime = null;
  200. pbbc.UpdateUserid = null;
  201. alpbbc.Add(pbbc);//结算明细
  202. //结算明细说明
  203. Hashtable hs = (Hashtable)Qhs[ultraGrid1.Rows[i].Cells["INSTOCKNO"].Value.ToString()];
  204. DataTable dtQty = (DataTable)hs[0];
  205. DataTable dtPrice = (DataTable)hs[1];
  206. DataTable dtAmt = (DataTable)hs[2];
  207. ///加扣数量
  208. for (int j = 0; j < dtQty.Rows.Count; j++)
  209. {
  210. PurBalanceBillCDEntity pbbcd = new PurBalanceBillCDEntity();//结算明细说明
  211. pbbcd.Id = Guid.NewGuid().ToString();
  212. pbbcd.BalanceCId = pbbc.Id;
  213. pbbcd.BalanceId = pbbc.BalanceId;
  214. pbbcd.AddSubtValue = double.Parse(dtQty.Rows[j]["ADDSUBTVALUE"].ToString());
  215. pbbcd.BalanceDesc = dtQty.Rows[j]["BALANCEDESC"].ToString();
  216. pbbcd.Validflag = "1";
  217. pbbcd.RefStandardMType = dtQty.Rows[j]["REFSTANDARDMTYPE"].ToString().Trim();//参考结算标准类别
  218. pbbcd.RefStandardCId = dtQty.Rows[j]["REFSTANDARDCID"].ToString();
  219. pbbcd.RefStandardMId = dtQty.Rows[j]["REFSTANDARDMID"].ToString();
  220. pbbcd.Type = "3";//类别
  221. pbbcd.CreateUserid = UserInfo.GetUserID();
  222. pbbcd.CreateName = UserInfo.GetUserName();
  223. pbbcd.CreateTime = System.DateTime.Now;
  224. pbbcd.UpdateName = null;
  225. pbbcd.UpdateTime = null;
  226. pbbcd.UpdateUserid = null;
  227. alpbbcd.Add(pbbcd);//结算明细说明
  228. }
  229. ///加扣单价
  230. for (int j = 0; j < dtPrice.Rows.Count; j++)
  231. {
  232. PurBalanceBillCDEntity pbbcd = new PurBalanceBillCDEntity();//结算明细说明
  233. pbbcd.Id = Guid.NewGuid().ToString();
  234. pbbcd.BalanceCId = pbbc.Id;
  235. pbbcd.BalanceId = pbbc.BalanceId;
  236. pbbcd.AddSubtValue = double.Parse(dtPrice.Rows[j]["ADDSUBTVALUE"].ToString());
  237. pbbcd.BalanceDesc = dtPrice.Rows[j]["BALANCEDESC"].ToString();
  238. pbbcd.RefStandardMType = dtPrice.Rows[j]["REFSTANDARDMTYPE"].ToString().Trim();//参考结算标准类别
  239. pbbcd.RefStandardCId = dtPrice.Rows[j]["REFSTANDARDCID"].ToString();
  240. pbbcd.RefStandardMId = dtPrice.Rows[j]["REFSTANDARDMID"].ToString();
  241. pbbcd.Validflag = "1";
  242. pbbcd.Type = "2";//类别
  243. pbbcd.CreateUserid = UserInfo.GetUserID();
  244. pbbcd.CreateName = UserInfo.GetUserName();
  245. pbbcd.CreateTime = System.DateTime.Now;
  246. pbbcd.UpdateName = null;
  247. pbbcd.UpdateTime = null;
  248. pbbcd.UpdateUserid = null;
  249. alpbbcd.Add(pbbcd);//结算明细说明
  250. }
  251. ///加扣金额
  252. for (int j = 0; j < dtAmt.Rows.Count; j++)
  253. {
  254. PurBalanceBillCDEntity pbbcd = new PurBalanceBillCDEntity();//结算明细说明
  255. pbbcd.Id = Guid.NewGuid().ToString();
  256. pbbcd.BalanceCId = pbbc.Id;
  257. pbbcd.BalanceId = pbbc.BalanceId;
  258. pbbcd.AddSubtValue = double.Parse(dtAmt.Rows[j]["ADDSUBTVALUE"].ToString());
  259. pbbcd.BalanceDesc = dtAmt.Rows[j]["BALANCEDESC"].ToString();
  260. pbbcd.RefStandardMType = dtAmt.Rows[j]["REFSTANDARDMTYPE"].ToString().Trim();//参考结算标准类别
  261. pbbcd.RefStandardCId = dtAmt.Rows[j]["REFSTANDARDCID"].ToString();
  262. pbbcd.RefStandardMId = dtAmt.Rows[j]["REFSTANDARDMID"].ToString();
  263. pbbcd.Validflag = "1";
  264. pbbcd.Type = "4";//类别
  265. pbbcd.CreateUserid = UserInfo.GetUserID();
  266. pbbcd.CreateName = UserInfo.GetUserName();
  267. pbbcd.CreateTime = System.DateTime.Now;
  268. pbbcd.UpdateName = null;
  269. pbbcd.UpdateTime = null;
  270. pbbcd.UpdateUserid = null;
  271. alpbbcd.Add(pbbcd);//结算明细说明
  272. }
  273. }
  274. }
  275. if (alpbbc.Count < 1)
  276. {
  277. MessageUtil.ShowTips("请选择入库单行信息结算");
  278. return;
  279. }
  280. CoreResult crt = this.execute<CoreResult>("com.hnshituo.pur.balance.service.BalanceBillMService", "AddBalance", new object[] { pbbm, alpbbc, alpbbcd });
  281. if (crt.Resultcode != 0)
  282. {
  283. MessageUtil.ShowTips("结算失败 " + crt.Resultmsg);
  284. return;
  285. }
  286. MessageUtil.ShowTips("结算成功,结算单号:" + crt.Resultmsg);
  287. }
  288. private void getData()
  289. {
  290. for (int i = 0; i < ultraGrid1.Rows.Count; i++)
  291. {
  292. double bINNUM = 0;//入库量
  293. if (ultraGrid1.Rows[i].Cells["INNUM"].Value != null)
  294. {
  295. double.TryParse(ultraGrid1.Rows[i].Cells["INNUM"].Value.ToString(), out bINNUM);
  296. }
  297. double bINVOICEDQTY = 0;//已结算量
  298. if (ultraGrid1.Rows[i].Cells["INVOICEDQTY"].Value != null)
  299. {
  300. double.TryParse(ultraGrid1.Rows[i].Cells["INVOICEDQTY"].Value.ToString(), out bINVOICEDQTY);
  301. }
  302. ultraGrid1.Rows[i].Cells["BASEQTY"].Value = bINNUM - bINVOICEDQTY;//基础数量
  303. ultraGrid1.Rows[i].Cells["BALANCEQTY"].Value = ultraGrid1.Rows[i].Cells["BASEQTY"].Value;//结算数量
  304. ultraGrid1.Rows[i].Cells["BALANCEPRICE"].Value = ultraGrid1.Rows[i].Cells["PRICEWITHOUTTAX"].Value;//结算单价
  305. double bBALANCEQTY = 0;//结算数量
  306. if (ultraGrid1.Rows[i].Cells["BALANCEQTY"].Value != null)
  307. {
  308. double.TryParse(ultraGrid1.Rows[i].Cells["BALANCEQTY"].Value.ToString(), out bBALANCEQTY);
  309. }
  310. double bBALANCEPRICE = 0;//结算单价
  311. if (ultraGrid1.Rows[i].Cells["BALANCEPRICE"].Value != null)
  312. {
  313. double.TryParse(ultraGrid1.Rows[i].Cells["BALANCEPRICE"].Value.ToString(), out bBALANCEPRICE);
  314. }
  315. ultraGrid1.Rows[i].Cells["BALANCEAMT"].Value = bBALANCEQTY * bBALANCEPRICE;//含税金额
  316. }
  317. ultraGrid1.UpdateData();
  318. double summer = 0;//含税总金额
  319. for (int i = 0; i < ultraGrid1.Rows.Count; i++)
  320. {
  321. if ((Boolean)ultraGrid1.Rows[i].Cells["Check"].Value)
  322. {
  323. if (ultraGrid1.Rows[i].Cells["BALANCEAMT"].Value.ToString().Trim() != "")
  324. {
  325. double d = 0;
  326. double.TryParse(ultraGrid1.Rows[i].Cells["BALANCEAMT"].Value.ToString(), out d);
  327. summer += d;
  328. }
  329. }
  330. }
  331. txt_BALANCE_AMT_WITHOUT_TAX.Text = summer.ToString(); //不含税总金额
  332. txt_TAX_AMT.Text = (summer * 0.13).ToString();//税额
  333. txt_BALANCE_AMT_TAX.Text = (summer * 1.13).ToString();//含税总金额
  334. }
  335. private void ultraGrid1_CellChange(object sender, Infragistics.Win.UltraWinGrid.CellEventArgs e)
  336. {
  337. ultraGrid1.UpdateData();
  338. //如果已结算量大于入库量,则不让其结算
  339. if (e.Cell.Column.Key == "Check")
  340. {
  341. if ((Boolean)(e.Cell.Value))
  342. {
  343. double bINNUM = 0;//入库量
  344. if (e.Cell.Row.Cells["INNUM"].Value != null)
  345. {
  346. double.TryParse(e.Cell.Row.Cells["INNUM"].Value.ToString(), out bINNUM);
  347. }
  348. double bINVOICEDQTY = 0;//已结算量
  349. if (e.Cell.Row.Cells["INVOICEDQTY"].Value != null)
  350. {
  351. double.TryParse(e.Cell.Row.Cells["INVOICEDQTY"].Value.ToString(), out bINVOICEDQTY);
  352. }
  353. if (bINVOICEDQTY >= bINNUM)
  354. {
  355. MessageUtil.ShowTips("已结算量必须小于入库量才能选择结算");
  356. e.Cell.Value = false;
  357. }
  358. }
  359. }
  360. }
  361. private void ultraGrid1_AfterCellUpdate(object sender, Infragistics.Win.UltraWinGrid.CellEventArgs e)
  362. {
  363. if (ultraGrid1.ActiveRow != null)
  364. {
  365. if (e.Cell.Column.Key == "BASEQTY")//基础数量
  366. {
  367. double b_BASEQTY = 0;//基础数量
  368. double.TryParse(e.Cell.Value.ToString(), out b_BASEQTY);
  369. double b_ADDSUBTQTY = 0;//加减数量
  370. double.TryParse(e.Cell.Row.Cells["ADDSUBTQTY"].Value.ToString(), out b_ADDSUBTQTY);
  371. //结算数量
  372. e.Cell.Row.Cells["BALANCEQTY"].Value = b_BASEQTY + b_ADDSUBTQTY;
  373. //结算单价
  374. double d_BALANCEPRICE = 0;
  375. if (ultraGrid1.ActiveRow.Cells["BALANCEPRICE"].Value != null)
  376. {
  377. double.TryParse(ultraGrid1.ActiveRow.Cells["BALANCEPRICE"].Value.ToString(), out d_BALANCEPRICE);
  378. }
  379. //加减金额
  380. double d_ADDSUBTAMT = 0;//加减金额
  381. if (ultraGrid1.ActiveRow.Cells["ADDSUBTAMT"].Value != null)
  382. double.TryParse(ultraGrid1.ActiveRow.Cells["ADDSUBTAMT"].Value.ToString(), out d_ADDSUBTAMT);
  383. ultraGrid1.ActiveRow.Cells["BALANCEAMT"].Value = (b_BASEQTY + b_ADDSUBTQTY) * d_BALANCEPRICE + d_ADDSUBTAMT;//计算结算单总金额
  384. }
  385. if (e.Cell.Column.Key == "BALANCEAMT")//计算含税总金额和不含税总金额
  386. {
  387. double summer = 0;//含税总金额
  388. for (int i = 0; i < ultraGrid1.Rows.Count; i++)
  389. {
  390. if (ultraGrid1.Rows[i].Cells["BALANCEAMT"].Value.ToString().Trim() != "")
  391. {
  392. double d = 0;
  393. double.TryParse(ultraGrid1.Rows[i].Cells["BALANCEAMT"].Value.ToString(), out d);
  394. summer += d;
  395. }
  396. }
  397. txt_BALANCE_AMT_WITHOUT_TAX.Text = summer.ToString(); //不含税总金额
  398. txt_TAX_AMT.Text = (summer * 0.13).ToString();//税额
  399. txt_BALANCE_AMT_TAX.Text = (summer * 1.13).ToString();//含税总金额
  400. }
  401. }
  402. }
  403. /// <summary>
  404. /// 按钮控件
  405. /// </summary>
  406. /// <param name="sender"></param>
  407. /// <param name="e"></param>
  408. private void barsManagerButon_ToolClick(object sender, Infragistics.Win.UltraWinToolbars.ToolClickEventArgs e)
  409. {
  410. switch (e.Tool.Key.ToString())
  411. {
  412. case "Query":
  413. {
  414. }
  415. break;
  416. case "conFirmation":
  417. {
  418. if (ultraGrid1.Rows.Count < 1)
  419. {
  420. MessageUtil.ShowTips("没有入库单,不能进行结算操作");
  421. return;
  422. }
  423. addBalance();
  424. }
  425. break;
  426. case "ESC":
  427. {
  428. this.Close();
  429. }
  430. break;
  431. }
  432. }
  433. /// <summary>
  434. /// 加减额度改变事件
  435. /// </summary>
  436. /// <param name="sender"></param>
  437. /// <param name="e"></param>
  438. private void ultraGrid2_CellChange(object sender, Infragistics.Win.UltraWinGrid.CellEventArgs e)
  439. {
  440. if (ultraGrid1.Rows.Count < 1)
  441. {
  442. return;
  443. }
  444. if (sender.Equals(ultraGrid2))
  445. {
  446. ultraGrid2.UpdateData();
  447. //保存当前结算单行加减数量表
  448. Hashtable hs = (Hashtable)Qhs[ultraGrid1.ActiveRow.Cells["INSTOCKNO"].Value.ToString()];
  449. hs[0] = dataTable2.Copy();
  450. }
  451. else if (sender.Equals(ultraGrid3))
  452. {
  453. ultraGrid3.UpdateData();
  454. //保存当前结算单行加减数量表
  455. Hashtable hs = (Hashtable)Qhs[ultraGrid1.ActiveRow.Cells["INSTOCKNO"].Value.ToString()];
  456. hs[1] = dataTable3.Copy();
  457. }
  458. else if (sender.Equals(ultraGrid4))
  459. {
  460. ultraGrid4.UpdateData();
  461. //保存当前结算单行加减数量表
  462. Hashtable hs = (Hashtable)Qhs[ultraGrid1.ActiveRow.Cells["INSTOCKNO"].Value.ToString()];
  463. hs[2] = dataTable4.Copy();
  464. }
  465. }
  466. /// <summary>
  467. /// 加减额度更新事件
  468. /// </summary>
  469. /// <param name="sender"></param>
  470. /// <param name="e"></param>
  471. private void ultraGrid2_AfterCellUpdate(object sender, Infragistics.Win.UltraWinGrid.CellEventArgs e)
  472. {
  473. if (ultraGrid1.ActiveRow != null)
  474. {
  475. if (sender.Equals(ultraGrid2))//数量
  476. {
  477. if (e.Cell.Column.Key == "ADDSUBTVALUE")//输入字段为数量加减额度
  478. {
  479. double summer = 0;
  480. for (int i = 0; i < ultraGrid2.Rows.Count; i++)
  481. {
  482. if (ultraGrid2.Rows[i].Cells["ADDSUBTVALUE"].Value.ToString().Trim() != "")
  483. {
  484. double d = 0;
  485. double.TryParse(ultraGrid2.Rows[i].Cells["ADDSUBTVALUE"].Value.ToString(), out d);
  486. summer += d;
  487. }
  488. }
  489. ultraGrid1.ActiveRow.Cells["ADDSUBTQTY"].Value = summer.ToString();//结算单加减数量
  490. //改变结算单的 结算数量 和 结算金额
  491. //结算数量=基础数量+加减数量
  492. double d_BASEQTY = 0;//基础数量
  493. double.TryParse(ultraGrid1.ActiveRow.Cells["BASEQTY"].Value.ToString(), out d_BASEQTY);
  494. ultraGrid1.ActiveRow.Cells["BALANCEQTY"].Value = summer + d_BASEQTY;//结算数量
  495. //结算金额=结算数量*结算单价+加减金额
  496. double d_BALANCEPRICE = 0;//结算单价
  497. double.TryParse(ultraGrid1.ActiveRow.Cells["BALANCEPRICE"].Value.ToString(), out d_BALANCEPRICE);
  498. //加减金额
  499. double d_ADDSUBTAMT = 0;//加减金额
  500. double.TryParse(ultraGrid1.ActiveRow.Cells["ADDSUBTAMT"].Value.ToString(), out d_ADDSUBTAMT);
  501. ultraGrid1.ActiveRow.Cells["BALANCEAMT"].Value = (summer + d_BASEQTY) * d_BALANCEPRICE + d_ADDSUBTAMT;//计算结算单总金额
  502. }
  503. }
  504. else if (sender.Equals(ultraGrid3))//单价
  505. {
  506. if (e.Cell.Column.Key == "ADDSUBTVALUE")//输入字段为单价加减额度
  507. {
  508. double summer = 0;
  509. for (int i = 0; i < ultraGrid3.Rows.Count; i++)
  510. {
  511. if (ultraGrid3.Rows[i].Cells["ADDSUBTVALUE"].Value.ToString().Trim() != "")
  512. {
  513. double d = 0;
  514. double.TryParse(ultraGrid3.Rows[i].Cells["ADDSUBTVALUE"].Value.ToString(), out d);
  515. summer += d;
  516. }
  517. }
  518. ultraGrid1.ActiveRow.Cells["ADDSUBTPRICE"].Value = summer.ToString();//加减单价
  519. //改变结算单的 结算单价 和 结算金额
  520. //结算单价=基础单价+加减单价
  521. double d_PRICEWITHTAX = 0;//基础单价
  522. double.TryParse(ultraGrid1.ActiveRow.Cells["PRICEWITHOUTTAX"].Value.ToString(), out d_PRICEWITHTAX);
  523. ultraGrid1.ActiveRow.Cells["BALANCEPRICE"].Value = summer + d_PRICEWITHTAX;//结算单价
  524. //结算金额=结算数量*结算单价+加减金额
  525. double d_BALANCEQTY = 0;//结算数量
  526. double.TryParse(ultraGrid1.ActiveRow.Cells["BALANCEQTY"].Value.ToString(), out d_BALANCEQTY);
  527. //加减金额
  528. double d_ADDSUBTAMT = 0;//加减金额
  529. double.TryParse(ultraGrid1.ActiveRow.Cells["ADDSUBTAMT"].Value.ToString(), out d_ADDSUBTAMT);
  530. ultraGrid1.ActiveRow.Cells["BALANCEAMT"].Value = d_BALANCEQTY * (summer + d_PRICEWITHTAX) + d_ADDSUBTAMT;//计算结算单总金额
  531. }
  532. }
  533. else if (sender.Equals(ultraGrid4))//金额
  534. {
  535. if (e.Cell.Column.Key == "ADDSUBTVALUE")//输入字段为金额加减额度
  536. {
  537. double summer = 0;
  538. for (int i = 0; i < ultraGrid4.Rows.Count; i++)
  539. {
  540. if (ultraGrid4.Rows[i].Cells["ADDSUBTVALUE"].Value.ToString().Trim() != "")
  541. {
  542. double d = 0;
  543. double.TryParse(ultraGrid4.Rows[i].Cells["ADDSUBTVALUE"].Value.ToString(), out d);
  544. summer += d;
  545. }
  546. }
  547. //改变结算单的 结算金额
  548. //结算金额=结算金额-原加减金额+新加减金额
  549. double d_BALANCEAMT = 0;//新结算金额
  550. double.TryParse(ultraGrid1.ActiveRow.Cells["BALANCEAMT"].Value.ToString(), out d_BALANCEAMT);
  551. double d_ADDSUBTAMT = 0;//原加减金额
  552. double.TryParse(ultraGrid1.ActiveRow.Cells["ADDSUBTAMT"].Value.ToString(), out d_ADDSUBTAMT);
  553. ultraGrid1.ActiveRow.Cells["BALANCEAMT"].Value = d_BALANCEAMT - d_ADDSUBTAMT + summer;//计算结算单总金额
  554. ultraGrid1.ActiveRow.Cells["ADDSUBTAMT"].Value = summer.ToString();//计算结算单加减金额
  555. }
  556. }
  557. }
  558. }
  559. /// <summary>
  560. /// 选中结算行事件
  561. /// </summary>
  562. /// <param name="sender"></param>
  563. /// <param name="e"></param>
  564. private void ultraGrid1_AfterRowActivate(object sender, EventArgs e)
  565. {
  566. //保存当前结算单行加减数量表
  567. Hashtable hs = (Hashtable)Qhs[ultraGrid1.ActiveRow.Cells["INSTOCKNO"].Value.ToString()];
  568. DataTable dt = (DataTable)hs[0];
  569. GridHelper.CopyDataToDatatable(ref dt, ref dataTable2, true);
  570. dt = (DataTable)hs[1];
  571. GridHelper.CopyDataToDatatable(ref dt, ref dataTable3, true);
  572. dt = (DataTable)hs[2];
  573. GridHelper.CopyDataToDatatable(ref dt, ref dataTable4, true);
  574. }
  575. }
  576. }