FrmPop_BalanceRegM.cs 9.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245
  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 Pur.Entity.balanceEntity;
  11. using Core.Mes.Client.Comm.Control;
  12. using System.Collections;
  13. using Pur.Entity.configureEntity;
  14. using Core.Mes.Client.Comm.Tool;
  15. using com.hnshituo.pur.vo;
  16. using Infragistics.Win;
  17. namespace Pur.balance
  18. {
  19. public partial class FrmPop_BalanceRegM : FrmPmsBase
  20. {
  21. public FrmPop_BalanceRegM(ArrayList al_BalanceId, OpeBase ob)
  22. {
  23. InitializeComponent();
  24. GridHelper.SetExcludeColumnsActive(ultraGrid1.DisplayLayout.Bands[0], "Check");
  25. this.ob = ob;
  26. getBalanceM(al_BalanceId);// 获取结算单信息
  27. }
  28. /// <summary>
  29. /// 获取结算单信息
  30. /// </summary>
  31. private void getBalanceM(ArrayList al)
  32. {
  33. DataTable dt = this.execute<DataTable>("com.hnshituo.pur.balance.service.BalanceBillMService", "getBalanceMToBalanceRegM", new object[] { al });
  34. //按创建时间降序
  35. dt.DefaultView.Sort = "CREATETIME DESC";
  36. dt = dt.DefaultView.ToTable();
  37. GridHelper.CopyDataToDatatable(ref dt, ref dataTable1, true);//结算信息
  38. }
  39. /// <summary>
  40. /// 获取含税总金额
  41. /// </summary>
  42. private void getBalanceAmtTax()
  43. {
  44. double summer = 0;//含税总金额
  45. for (int i = 0; i < ultraGrid1.Rows.Count; i++)
  46. {
  47. if ((Boolean)ultraGrid1.Rows[i].Cells["Check"].Value)
  48. {
  49. if (ultraGrid1.Rows[i].Cells["TOTALWITHAMTTAX"].Value.ToString().Trim() != "")
  50. {
  51. double d = 0;
  52. double.TryParse(ultraGrid1.Rows[i].Cells["TOTALWITHAMTTAX"].Value.ToString(), out d);
  53. summer += d;
  54. }
  55. }
  56. }
  57. txt_BALANCE_AMT_TAX.Text = summer.ToString();//含税总金额
  58. }
  59. /// <summary>
  60. /// 新增报销登记单
  61. /// </summary>
  62. private void addBalanceRegM()
  63. {
  64. if (txt_INVOICE_CODE.Text.Trim() == "")
  65. {
  66. MessageUtil.ShowTips("请填写发票号");
  67. return;
  68. }
  69. PurBalanceRegMEntity pbrmEntity = new PurBalanceRegMEntity();
  70. //报销单主表
  71. pbrmEntity.RegmId = Guid.NewGuid().ToString();//-
  72. pbrmEntity.Status = "1";//状态
  73. pbrmEntity.InvoiceCode = txt_INVOICE_CODE.Text;//发票编号
  74. pbrmEntity.InvoiceAmt = double.Parse(txt_BALANCE_AMT_TAX.Text);//发票总金额
  75. pbrmEntity.InvoiceDate = System.DateTime.Now;//发票开票日期-
  76. if (txt_BALANCE_AMT_TAX.Text != "")
  77. {
  78. pbrmEntity.RegAmt = double.Parse(txt_BALANCE_AMT_TAX.Text);//申报总金额
  79. }
  80. else
  81. {
  82. pbrmEntity.RegAmt = 0;
  83. }
  84. pbrmEntity.RegAmtUpCase = smallLettersTocapitalLetters(txt_BALANCE_AMT_TAX.Text);//申报总金额大写
  85. pbrmEntity.ConfirmUserid = UserInfo.GetUserID();
  86. pbrmEntity.ConfirmUsername = UserInfo.GetUserName();
  87. pbrmEntity.ConfirmDate = System.DateTime.Now;//票据确认日期-
  88. pbrmEntity.Validflag = "1";
  89. pbrmEntity.SuppCode = ultraGrid1.ActiveRow.Cells["SUPPCODE"].Value.ToString();
  90. pbrmEntity.SuppName = ultraGrid1.ActiveRow.Cells["SUPPNAME"].Value.ToString();
  91. pbrmEntity.CreateUserid = UserInfo.GetUserID();
  92. pbrmEntity.CreateName = UserInfo.GetUserName();
  93. //报销单行
  94. ArrayList albrc = new ArrayList();
  95. for (int i = 0; i < ultraGrid1.Rows.Count; i++)
  96. {
  97. if ((Boolean)ultraGrid1.Rows[i].Cells["Check"].Value)
  98. {
  99. PurBalanceRegCEntity pbrCEntity = new PurBalanceRegCEntity();
  100. pbrCEntity.Id = Guid.NewGuid().ToString();
  101. pbrCEntity.BalanceId = ultraGrid1.Rows[i].Cells["BALANCEID"].Value.ToString();//结算单号
  102. pbrCEntity.Validflag = "1";
  103. pbrCEntity.CreateUserid = UserInfo.GetUserID();
  104. pbrCEntity.CreateName = UserInfo.GetUserName();
  105. albrc.Add(pbrCEntity);
  106. }
  107. }
  108. if (albrc.Count < 1)
  109. {
  110. MessageUtil.ShowTips("请选择结算单");
  111. return;
  112. }
  113. CoreResult crt = this.execute<CoreResult>("com.hnshituo.pur.balance.service.BalanceRegMService", "addBalanceRegM", new object[] { pbrmEntity, albrc });
  114. if (crt.Resultcode != 0)
  115. {
  116. MessageUtil.ShowTips("报销单生成失败 " + crt.Resultmsg);
  117. return;
  118. }
  119. MessageUtil.ShowTips("报销单(" + crt.Resultmsg+ ")生成成功!");
  120. }
  121. /// <summary>
  122. /// 选择结算单
  123. /// </summary>
  124. /// <param name="sender"></param>
  125. /// <param name="e"></param>
  126. private void ultraGrid1_AfterCellUpdate(object sender, Infragistics.Win.UltraWinGrid.CellEventArgs e)
  127. {
  128. if (e.Cell.Column.Key == "Check")
  129. {
  130. getBalanceAmtTax();
  131. }
  132. }
  133. private void ultraGrid1_CellChange(object sender, Infragistics.Win.UltraWinGrid.CellEventArgs e)
  134. {
  135. ultraGrid1.UpdateData();
  136. }
  137. /// <summary>
  138. /// 按钮控件
  139. /// </summary>
  140. /// <param name="sender"></param>
  141. /// <param name="e"></param>
  142. private void barsManagerButon_ToolClick(object sender, Infragistics.Win.UltraWinToolbars.ToolClickEventArgs e)
  143. {
  144. switch (e.Tool.Key.ToString())
  145. {
  146. case "Query":
  147. {
  148. }
  149. break;
  150. case "conFirmation":
  151. {
  152. addBalanceRegM();
  153. }
  154. break;
  155. case "ESC":
  156. {
  157. this.Close();
  158. }
  159. break;
  160. }
  161. }
  162. //小写转换为大写
  163. private string smallLettersTocapitalLetters(string strSmallLetter)
  164. {
  165. string strCapitalLetters = "";//保存转化结果
  166. string[] strCapital = { "零", "壹", "贰", "叁", "肆", "伍", "陆", "柒", "捌", "玖" };//大写汉字
  167. string[] strUionIntger = { "十", "百", "千", "万", "十", "百", "千", "亿", "十", "百", "千", "万", "十", "百", "千"};//大写单位
  168. string[] strUionfloat = { "角", "分", "厘", "毫" };
  169. char[] c_IntgerSmallLetter = null;//传入数字整数部分
  170. char[] c_floatSmallLetter = null;//传入数字小数部分
  171. //获取整数部分和小数部分
  172. if (strSmallLetter.IndexOf('.') != -1)
  173. {
  174. c_IntgerSmallLetter = strSmallLetter.Substring(0, strSmallLetter.IndexOf('.')).ToCharArray();
  175. c_floatSmallLetter = strSmallLetter.Substring(strSmallLetter.IndexOf('.') + 1).ToCharArray();
  176. }
  177. else
  178. {
  179. c_IntgerSmallLetter = strSmallLetter.ToCharArray();
  180. }
  181. //转化整数部分
  182. for (int i = 0; i < c_IntgerSmallLetter.Length; i++)
  183. {
  184. int c = int.Parse(c_IntgerSmallLetter[i].ToString());
  185. if (strCapital[c] != "零")
  186. {
  187. strCapitalLetters += strCapital[c];
  188. if (i != c_IntgerSmallLetter.Length - 1)
  189. {
  190. strCapitalLetters += strUionIntger[c_IntgerSmallLetter.Length - 1 - 1 - i];
  191. }
  192. }
  193. else//如果数字为零
  194. {
  195. strCapitalLetters += "零零";
  196. }
  197. }
  198. strCapitalLetters += "元";//加上单位
  199. //转化小数部分
  200. if (c_floatSmallLetter != null)
  201. {
  202. for (int i = 0; i < c_floatSmallLetter.Length; i++)
  203. {
  204. int c = int.Parse(c_floatSmallLetter[i].ToString());
  205. if (strCapital[c] != "零")
  206. {
  207. strCapitalLetters += strCapital[c];
  208. strCapitalLetters += strUionfloat[i];
  209. }
  210. else//如果数字为零
  211. {
  212. strCapitalLetters += "零零";
  213. }
  214. }
  215. }
  216. //将有两个零的都替换成一个零
  217. while (strCapitalLetters.Contains("零零"))
  218. {
  219. strCapitalLetters = strCapitalLetters.Replace("零零", "零");
  220. }
  221. if (c_IntgerSmallLetter.Length > 1)//如果整数长度大于1,那么最后一位不能为零
  222. {
  223. if (strCapitalLetters.Substring(strCapitalLetters.IndexOf("元") - 1, 1) == "零")
  224. {
  225. strCapitalLetters = strCapitalLetters.Remove(strCapitalLetters.IndexOf("元") - 1, 1);
  226. }
  227. }
  228. if (strCapitalLetters.Substring(strCapitalLetters.Length - 1) == "零")//最后一位不能为零
  229. {
  230. strCapitalLetters = strCapitalLetters.Remove((strCapitalLetters.Length - 1));
  231. }
  232. //转化小数部分
  233. return strCapitalLetters;
  234. }
  235. }
  236. }