You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

385 lines
19 KiB

2 years ago
  1. using Entity.Sugar;
  2. using Euro.Transfer.Base;
  3. using Newtonsoft.Json;
  4. using System;
  5. using System.Collections.Generic;
  6. using System.Linq;
  7. using System.Text;
  8. namespace Euro.Transfer
  9. {
  10. public class TransferService : ServiceTools
  11. {
  12. #region transferBill
  13. /// <summary>
  14. /// 文字檔轉換(帳單)
  15. /// </summary>
  16. /// <param name="txtBox">todo: describe txtBox parameter on TransferBill</param>
  17. /// <param name="lbCount">todo: describe lbCount parameter on TransferBill</param>
  18. /// <param name="sOrgID">todo: describe sOrgID parameter on TransferBill</param>
  19. /// <param name="sUserID">todo: describe sUserID parameter on TransferBill</param>
  20. /// <param name="sWord">todo: describe sWord parameter on TransferBill</param>
  21. public static void TransferBill(HubTransfer.WriteOrLogsHandler writer, string sOrgID, string sUserID, string sWord)
  22. {
  23. try
  24. {
  25. var bills = JsonConvert.DeserializeObject<List<OTB_OPM_Bills>>(sWord);
  26. var query = bills.GroupBy(p => p.CustomerCode);
  27. foreach (IGrouping<string, OTB_OPM_Bills> billsgroup in query)
  28. {
  29. foreach (OTB_OPM_Bills bill in billsgroup)
  30. {
  31. var sBillWords = PackBillWords(bill);
  32. WriteWords(sBillWords, sOrgID, ".025", "A_");
  33. }
  34. }
  35. var sbTxt = new StringBuilder();
  36. var sbLogAppend = new StringBuilder();
  37. var iCount = 0;
  38. foreach (OTB_OPM_Bills bill in bills)
  39. {
  40. sbLogAppend.Append("狀態: 帳單號碼:" + bill.BillNO + " 轉檔成功 拋轉人:" + sOrgID + "-" + sUserID + " " + DateTime.Now).Append("\n");
  41. iCount++;
  42. }
  43. writer(sbLogAppend.ToString(), iCount);
  44. WriteWordLog("", sbLogAppend.ToString(), true, "Bills");//記錄所有log
  45. }
  46. catch (Exception ex)
  47. {
  48. //写错误日志
  49. WriteLog(Errorlog_Path, ex.ToString(), true);
  50. }
  51. }
  52. #endregion transferBill
  53. #region transferCus
  54. /// <summary>
  55. /// 文字檔轉換(客戶)
  56. /// </summary>
  57. /// <param name="txtBox">todo: describe txtBox parameter on TransferCus</param>
  58. /// <param name="lbCount">todo: describe lbCount parameter on TransferCus</param>
  59. /// <param name="sOrg">todo: describe sOrg parameter on TransferCus</param>
  60. /// <param name="sUser">todo: describe sUser parameter on TransferCus</param>
  61. /// <param name="sWord">todo: describe sWord parameter on TransferCus</param>
  62. public static void TransferCus(HubTransfer.WriteOrLogsHandler writer, string sOrg, string sUser, string sWord)
  63. {
  64. try
  65. {
  66. var customers = JsonConvert.DeserializeObject<List<OTB_CRM_CustomersTransfer>>(sWord);
  67. var query = customers.GroupBy(p => p.Feild01);
  68. foreach (IGrouping<string, OTB_CRM_CustomersTransfer> customersgroup in query)
  69. {
  70. foreach (OTB_CRM_CustomersTransfer customer in customersgroup)
  71. {
  72. var sCustomersWords = PackCustomersWords(customer);
  73. WriteWords(sCustomersWords, sOrg, ".011");
  74. }
  75. }
  76. var sbTxt = new StringBuilder();
  77. var sbLogAppend = new StringBuilder();
  78. var iCount = 0;
  79. foreach (OTB_CRM_CustomersTransfer cus in customers)
  80. {
  81. sbLogAppend.Append("狀態: 客戶代號:" + cus.Feild01 + " 轉檔成功 拋轉人:" + sOrg + "-" + sUser + " " + DateTime.Now).Append("\n");
  82. iCount++;
  83. }
  84. writer(sbLogAppend.ToString(), iCount);
  85. WriteWordLog("", sbLogAppend.ToString(), true, "Customers");//記錄所有log
  86. }
  87. catch (Exception ex)
  88. {
  89. //写错误日志
  90. WriteLog(Errorlog_Path, ex.ToString(), true);
  91. }
  92. }
  93. #endregion transferCus
  94. #region transferPrj
  95. /// <summary>
  96. /// 文字檔轉換(專案|展覽)
  97. /// </summary>
  98. /// <param name="txtBox">todo: describe txtBox parameter on TransferPrj</param>
  99. /// <param name="lbCount">todo: describe lbCount parameter on TransferPrj</param>
  100. /// <param name="sOrg">todo: describe sOrg parameter on TransferPrj</param>
  101. /// <param name="sUser">todo: describe sUser parameter on TransferPrj</param>
  102. /// <param name="sWord">todo: describe sWord parameter on TransferPrj</param>
  103. public static void TransferPrj(HubTransfer.WriteOrLogsHandler writer, string sOrg, string sUser, string sWord)
  104. {
  105. try
  106. {
  107. var exhibitions = JsonConvert.DeserializeObject<List<OTB_OPM_ExhibitionsTransfer>>(sWord);
  108. var query = exhibitions.GroupBy(p => p.PrjNO);
  109. foreach (IGrouping<string, OTB_OPM_ExhibitionsTransfer> exhibitionsgroup in query)
  110. {
  111. foreach (OTB_OPM_ExhibitionsTransfer exhibition in exhibitionsgroup)
  112. {
  113. var sExhibitionWords = PackExhibitionsWords(exhibition);
  114. WriteWords(sExhibitionWords, sOrg, ".034", "A_");
  115. }
  116. }
  117. var sbTxt = new StringBuilder();
  118. var sbLogAppend = new StringBuilder();
  119. var iCount = 0;
  120. foreach (OTB_OPM_ExhibitionsTransfer cus in exhibitions)
  121. {
  122. sbLogAppend.Append("狀態: 專案代號:" + cus.PrjNO + " 轉檔成功 拋轉人:" + sOrg + "-" + sUser + " " + DateTime.Now).Append("\n");
  123. iCount++;
  124. }
  125. writer(sbLogAppend.ToString(), iCount);
  126. WriteWordLog("", sbLogAppend.ToString(), true, "Exhibitions");//記錄所有log
  127. }
  128. catch (Exception ex)
  129. {
  130. //写错误日志
  131. WriteLog(Errorlog_Path, ex.ToString(), true);
  132. }
  133. }
  134. #endregion transferPrj
  135. #region packBillWords
  136. /// <summary>
  137. /// 組裝文字檔(帳單)
  138. /// </summary>
  139. /// <param name="bills">帳單資料</param>
  140. /// <returns></returns>
  141. private static string PackBillWords(OTB_OPM_Bills bill)
  142. {
  143. //sb.Append("\n"); //換行(目前第一行抓不到,不知道什麼原因)
  144. var sb = new StringBuilder();
  145. sb.Append(bill.BillNO.PadRight(15, ' '));//帳款號碼(1)
  146. sb.Append(bill.CheckDate.PadRight(8, ' ')); //對帳日期(2)【帳單日期:BillFirstCheckDate】
  147. sb.Append(bill.BillType.PadRight(2, ' '));//帳別(收付)(3)
  148. sb.Append(bill.CustomerCode.PadRight(10, ' ')); //客戶供應商代號(4)
  149. sb.Append(bill.ResponsiblePersonCode.PadRight(11, ' ')); //業務員代號(5)
  150. sb.Append(bill.LastGetBillDate.PadRight(8, ' ')); //最近收付日(6)
  151. sb.Append(bill.LastGetBillNO.PadRight(15, ' ')); //最近收付單號(7)
  152. sb.Append(bill.TaxType.PadRight(1, ' ')); //稅別(8)
  153. sb.Append(bill.NOTaxAmount.PadRight(15, ' ')); //未稅金額(9)
  154. sb.Append(bill.BillAmount.PadRight(15, ' ')); //帳款金額(10)
  155. sb.Append(bill.PaymentAmount.PadRight(15, ' ')); //收付金額(11)
  156. sb.Append(bill.Allowance.PadRight(15, ' ')); //折讓金額(12)
  157. sb.Append(bill.DebtAmount.PadRight(15, ' ')); //呆帳金額(13)
  158. sb.Append(bill.ExchangeAmount.PadRight(15, ' ')); //匯兌損益金額(14)
  159. sb.Append(bill.Settle.PadRight(1, ' ')); //結清否(15)
  160. sb.Append(bill.InvoiceStartNumber.PadRight(10, ' ')); //發票號碼(起)(16)
  161. sb.Append(bill.InvoiceEndNumber.PadRight(10, ' ')); //發票號碼(迄)(17)
  162. sb.Append(bill.Category.PadRight(4, ' ')); //傳票類別(18)
  163. sb.Append(bill.OrderNo.PadRight(15, ' ')); //訂單單號(19)
  164. sb.Append(bill.ClosingNote.PadRight(1, ' ')); //結帳註記(20)
  165. sb.Append(bill.GeneralInvoiceNumber.PadRight(15, ' ')); //立帳總帳傳票號碼(21)
  166. sb.Append(bill.GeneralSerialNumber.PadRight(4, ' ')); //立帳總帳傳票序號(22)
  167. sb.Append(bill.Remark1.PadRight(30, ' ')); //備註一(30C)(23)
  168. sb.Append(bill.AccountSource.PadRight(1, ' ')); //帳款來源(24)
  169. sb.Append(bill.UpdateDate.PadRight(20, ' ')); //更新日期(25)
  170. sb.Append(bill.UpdatePersonnel.PadRight(12, ' ')); //更新人員(26)
  171. sb.Append(bill.DepartmentSiteNumber.PadRight(10, ' ')); //部門\ 工地編號(27)
  172. sb.Append(bill.ProjectNumber.PadRight(10, ' ')); //專案\ 項目編號(28)
  173. sb.Append(bill.TransferBNotes.PadRight(1, ' ')); //轉B 帳註記(29)
  174. sb.Append(bill.ABNumber.PadRight(12, ' ')); //A|B 帳唯一流水號(30)
  175. sb.Append(bill.EnterNumber.PadRight(15, ' ')); //進銷單號(31)
  176. sb.Append(bill.ForeignCurrencyCode.PadRight(3, ' ')); //外幣代號(32)
  177. sb.Append(bill.ExchangeRate.PadRight(8, ' ')); //匯率(33)
  178. sb.Append(bill.ForeignAmount.PadRight(15, ' ')); //外幣金額(34)
  179. sb.Append(bill.PayAmount.PadRight(15, ' ')); //收付沖抵金額(35)
  180. sb.Append(bill.RefundAmount.PadRight(15, ' ')); //退款金額(36)
  181. sb.Append(bill.PaymentTerms.PadRight(1, ' ')); //收付條件(37)
  182. sb.Append(bill.AccountDate.PadRight(8, ' ')); //帳款日期(38)【帳單日期:BillFirstCheckDate】
  183. sb.Append(bill.DCreditCardNumber.PadRight(16, ' ')); //預設信用卡號(39)
  184. sb.Append(bill.ClosingDate.PadRight(8, ' '));//結帳日期(40)
  185. sb.Append(bill.CusField1.PadRight(100, ' '));//自定義欄位一(41)
  186. sb.Append(bill.CusField2.PadRight(100, ' '));//自定義欄位二(42)
  187. sb.Append(bill.CusField3.PadRight(100, ' '));//自定義欄位三(43)
  188. sb.Append(bill.CusField4.PadRight(100, ' '));//自定義欄位四(44)
  189. sb.Append(bill.CusField5.PadRight(100, ' '));//自定義欄位五(45)
  190. sb.Append(bill.CusField6.PadRight(15, ' ')); //自定義欄位六(46)
  191. sb.Append(bill.CusField7.PadRight(15, ' ')); //自定義欄位七(47)
  192. sb.Append(bill.CusField8.PadRight(15, ' ')); //自定義欄位八(48)
  193. sb.Append(bill.CusField9.PadRight(15, ' ')); //自定義欄位九(49)
  194. sb.Append(bill.CusField10.PadRight(15, ' ')); //自定義欄位十(50)
  195. sb.Append(bill.CusField11.PadRight(8, ' ')); //自定義欄位十一(51)
  196. sb.Append(bill.CusField12.PadRight(8, ' ')); //自定義欄位十二(52)
  197. sb.Append(bill.Remark2.PadRight(250, ' ')); //備註二(M)(53)
  198. sb.Append(bill.TWNOTaxAmount.PadRight(15, ' ')); //台幣未稅金額(54)
  199. sb.Append(bill.TWAmount.PadRight(15, ' ')); //台幣帳款金額(55)
  200. sb.Append("".PadRight(10, ' '));
  201. return sb.ToString();
  202. }
  203. #endregion packBillWords
  204. #region packCustomersWords
  205. /// <summary>
  206. /// 組裝文字檔(客戶)
  207. /// </summary>
  208. /// <param name="customers">todo: describe customers parameter on PackCustomersWords</param>
  209. /// <returns></returns>
  210. private static string PackCustomersWords(OTB_CRM_CustomersTransfer cus)
  211. {
  212. var sb = new StringBuilder();
  213. sb.Append(cus.Feild01.PadRight(10, ' '));
  214. sb.Append(cus.Feild02.PadRight(1, ' '));
  215. sb.Append(ChineseStringUtility.ToTraditional(Common.PadRightEx(cus.Feild03, 12, ' ')));
  216. sb.Append(ChineseStringUtility.ToTraditional(Common.PadRightEx(cus.Feild04, 60, ' ')));
  217. sb.Append(cus.Feild05.PadRight(12, ' '));
  218. sb.Append(cus.Feild06.PadRight(4, ' '));
  219. sb.Append(cus.Feild07.PadRight(8, ' '));
  220. sb.Append(cus.Feild08.PadRight(9, ' '));
  221. sb.Append(cus.Feild09.PadRight(5, ' '));
  222. sb.Append(ChineseStringUtility.ToTraditional(Common.PadRightEx(cus.Feild10, 60, ' ')));
  223. sb.Append(ChineseStringUtility.ToTraditional(Common.PadRightEx(cus.Feild11, 60, ' ')));
  224. sb.Append(ChineseStringUtility.ToTraditional(Common.PadRightEx(cus.Feild12, 60, ' ')));
  225. sb.Append(cus.Feild13.PadRight(20, ' '));
  226. sb.Append(cus.Feild14.PadRight(20, ' '));
  227. sb.Append(cus.Feild15.PadRight(20, ' '));
  228. sb.Append(cus.Feild16.PadRight(20, ' '));
  229. sb.Append(cus.Feild17.PadRight(20, ' '));
  230. sb.Append(cus.Feild18.PadRight(20, ' '));
  231. sb.Append(cus.Feild19.PadRight(20, ' '));
  232. sb.Append(cus.Feild20.PadRight(30, ' '));
  233. sb.Append(cus.Feild21.PadRight(12, ' '));
  234. sb.Append(cus.Feild22.PadRight(12, ' '));
  235. sb.Append(ChineseStringUtility.ToTraditional(Common.PadRightEx(cus.Feild23, 30, ' ')));
  236. sb.Append(cus.Feild24.PadRight(18, ' '));
  237. sb.Append(cus.Feild25.PadRight(1, ' '));
  238. sb.Append(cus.Feild26.PadRight(5, ' '));
  239. sb.Append(cus.Feild27.PadRight(15, ' '));
  240. sb.Append(cus.Feild28.PadRight(10, ' '));
  241. sb.Append(cus.Feild29.PadRight(11, ' '));
  242. sb.Append(cus.Feild30.PadRight(11, ' '));
  243. sb.Append(cus.Feild31.PadRight(8, ' '));
  244. sb.Append(cus.Feild32.PadRight(8, ' '));
  245. sb.Append(cus.Feild33.PadRight(15, ' '));
  246. sb.Append(cus.Feild34.PadRight(15, ' '));
  247. sb.Append(cus.Feild35.PadRight(15, ' '));
  248. sb.Append(cus.Feild36.PadRight(15, ' '));
  249. sb.Append(cus.Feild37.PadRight(1, ' '));
  250. sb.Append(cus.Feild38.PadRight(1, ' '));
  251. sb.Append(cus.Feild39.PadRight(30, ' '));
  252. sb.Append(cus.Feild40.PadRight(30, ' '));
  253. sb.Append(cus.Feild41.PadRight(1, ' '));
  254. sb.Append(cus.Feild42.PadRight(2, ' '));
  255. sb.Append(cus.Feild43.PadRight(2, ' '));
  256. sb.Append(cus.Feild44.PadRight(2, ' '));
  257. sb.Append(cus.Feild45.PadRight(2, ' '));
  258. sb.Append(cus.Feild46.PadRight(2, ' '));
  259. sb.Append(cus.Feild47.PadRight(2, ' '));
  260. sb.Append(cus.Feild48.PadRight(2, ' '));
  261. sb.Append(cus.Feild49.PadRight(2, ' '));
  262. sb.Append(cus.Feild50.PadRight(2, ' '));
  263. sb.Append(cus.Feild51.PadRight(2, ' '));
  264. sb.Append(cus.Feild52.PadRight(2, ' '));
  265. sb.Append(cus.Feild53.PadRight(2, ' '));
  266. sb.Append(cus.Feild54.PadRight(5, ' '));
  267. sb.Append(cus.Feild55.PadRight(5, ' '));
  268. sb.Append(cus.Feild56.PadRight(20, ' '));
  269. sb.Append(cus.Feild57.PadRight(10, ' '));
  270. sb.Append(cus.Feild58.PadRight(10, ' '));
  271. sb.Append(cus.Feild59.PadRight(250, ' '));
  272. sb.Append(cus.Feild60.PadRight(250, ' '));
  273. sb.Append(cus.Feild61.PadRight(250, ' '));
  274. sb.Append(cus.Feild62.PadRight(6, ' '));
  275. sb.Append(cus.Feild63.PadRight(3, ' '));
  276. sb.Append(cus.Feild64.PadRight(50, ' '));
  277. sb.Append(cus.Feild65.PadRight(50, ' '));
  278. sb.Append(cus.Feild66.PadRight(1, ' '));
  279. sb.Append(cus.Feild67.PadRight(1, ' '));
  280. sb.Append(cus.Feild68.PadRight(10, ' '));
  281. sb.Append(cus.Feild69.PadRight(100, ' '));
  282. sb.Append(cus.Feild70.PadRight(100, ' '));
  283. sb.Append(cus.Feild71.PadRight(100, ' '));
  284. sb.Append(cus.Feild72.PadRight(100, ' '));
  285. sb.Append(cus.Feild73.PadRight(100, ' '));
  286. sb.Append(cus.Feild74.PadRight(15, ' '));
  287. sb.Append(cus.Feild75.PadRight(15, ' '));
  288. sb.Append(cus.Feild76.PadRight(15, ' '));
  289. sb.Append(cus.Feild77.PadRight(15, ' '));
  290. sb.Append(cus.Feild78.PadRight(15, ' '));
  291. sb.Append(cus.Feild79.PadRight(8, ' '));
  292. sb.Append(cus.Feild80.PadRight(8, ' '));
  293. sb.Append(cus.Feild81.PadRight(11, ' '));
  294. sb.Append(cus.Feild82.PadRight(120, ' '));
  295. sb.Append(cus.Feild83.PadRight(240, ' '));
  296. sb.Append(cus.Feild84.PadRight(2, ' '));
  297. sb.Append(cus.Feild85.PadRight(2, ' '));
  298. sb.Append(cus.Feild86.PadRight(1, ' '));
  299. sb.Append(cus.Feild87.PadRight(1, ' '));
  300. sb.Append(cus.Feild88.PadRight(1, ' '));
  301. sb.Append(cus.Feild89.PadRight(20, ' '));
  302. sb.Append(cus.Feild90.PadRight(250, ' '));
  303. sb.Append(cus.Feild91.PadRight(1, ' '));
  304. sb.Append(cus.Feild92.PadRight(1, ' '));
  305. sb.Append(cus.Feild93.PadRight(1, ' '));
  306. sb.Append(cus.Feild94.PadRight(128, ' '));
  307. sb.Append(cus.Feild95.PadRight(20, ' '));
  308. sb.Append(cus.Feild96.PadRight(20, ' '));
  309. sb.Append(cus.Feild97.PadRight(1, ' '));
  310. sb.Append(cus.Feild98.PadRight(1, ' '));
  311. sb.Append(cus.Feild99.PadRight(1, ' '));
  312. sb.Append("".PadRight(10, ' '));
  313. return sb.ToString();
  314. }
  315. #endregion packCustomersWords
  316. #region packExhibitionsWords
  317. /// <summary>
  318. /// 組裝文字檔(專案|展覽)
  319. /// </summary>
  320. /// <param name="exhibitions">todo: describe exhibitions parameter on PackExhibitionsWords</param>
  321. /// <returns></returns>
  322. private static string PackExhibitionsWords(OTB_OPM_ExhibitionsTransfer exhibition)
  323. {
  324. var sb = new StringBuilder();
  325. sb.Append(exhibition.PrjNO.PadRight(10, ' '));
  326. sb.Append(ChineseStringUtility.ToTraditional(Common.PadRightEx(exhibition.PrjName, 60, ' ')));
  327. sb.Append(Common.PadRightEx(exhibition.PrjCharger, 11, ' '));
  328. sb.Append(exhibition.EndDate.PadRight(8, ' '));
  329. sb.Append("".PadRight(10, ' '));
  330. return sb.ToString();
  331. }
  332. #endregion packExhibitionsWords
  333. #region preBlank
  334. /// <summary>
  335. /// 欄位前方補空白
  336. /// </summary>
  337. /// <param name="len"></param>
  338. /// <param name="word">todo: describe word parameter on PreBlank</param>
  339. private static string PreBlank(string word, int len)
  340. {
  341. return word.PadLeft(len, ' ');
  342. }
  343. #endregion preBlank
  344. #region preBlank
  345. /// <summary>
  346. /// 欄位後方補空白
  347. /// </summary>
  348. /// <param name="len"></param>
  349. /// <param name="word">todo: describe word parameter on AfterBlank</param>
  350. private static string AfterBlank(string word, int len)
  351. {
  352. return word.PadRight(len, ' ');
  353. }
  354. #endregion preBlank
  355. }
  356. }