using Entity.Sugar; using Euro.Transfer.Base; using Newtonsoft.Json; using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace Euro.Transfer { public class TransferService : ServiceTools { #region transferBill /// /// 文字檔轉換(帳單) /// /// todo: describe txtBox parameter on TransferBill /// todo: describe lbCount parameter on TransferBill /// todo: describe sOrgID parameter on TransferBill /// todo: describe sUserID parameter on TransferBill /// todo: describe sWord parameter on TransferBill public static void TransferBill(HubTransfer.WriteOrLogsHandler writer, string sOrgID, string sUserID, string sWord) { try { var bills = JsonConvert.DeserializeObject>(sWord); var query = bills.GroupBy(p => p.CustomerCode); foreach (IGrouping billsgroup in query) { foreach (OTB_OPM_Bills bill in billsgroup) { var sBillWords = PackBillWords(bill); WriteWords(sBillWords, sOrgID, ".025", "A_"); } } var sbTxt = new StringBuilder(); var sbLogAppend = new StringBuilder(); var iCount = 0; foreach (OTB_OPM_Bills bill in bills) { sbLogAppend.Append("狀態: 帳單號碼:" + bill.BillNO + " 轉檔成功 拋轉人:" + sOrgID + "-" + sUserID + " " + DateTime.Now).Append("\n"); iCount++; } writer(sbLogAppend.ToString(), iCount); WriteWordLog("", sbLogAppend.ToString(), true, "Bills");//記錄所有log } catch (Exception ex) { //写错误日志 WriteLog(Errorlog_Path, ex.ToString(), true); } } #endregion transferBill #region transferCus /// /// 文字檔轉換(客戶) /// /// todo: describe txtBox parameter on TransferCus /// todo: describe lbCount parameter on TransferCus /// todo: describe sOrg parameter on TransferCus /// todo: describe sUser parameter on TransferCus /// todo: describe sWord parameter on TransferCus public static void TransferCus(HubTransfer.WriteOrLogsHandler writer, string sOrg, string sUser, string sWord) { try { var customers = JsonConvert.DeserializeObject>(sWord); var query = customers.GroupBy(p => p.Feild01); foreach (IGrouping customersgroup in query) { foreach (OTB_CRM_CustomersTransfer customer in customersgroup) { var sCustomersWords = PackCustomersWords(customer); WriteWords(sCustomersWords, sOrg, ".011"); } } var sbTxt = new StringBuilder(); var sbLogAppend = new StringBuilder(); var iCount = 0; foreach (OTB_CRM_CustomersTransfer cus in customers) { sbLogAppend.Append("狀態: 客戶代號:" + cus.Feild01 + " 轉檔成功 拋轉人:" + sOrg + "-" + sUser + " " + DateTime.Now).Append("\n"); iCount++; } writer(sbLogAppend.ToString(), iCount); WriteWordLog("", sbLogAppend.ToString(), true, "Customers");//記錄所有log } catch (Exception ex) { //写错误日志 WriteLog(Errorlog_Path, ex.ToString(), true); } } #endregion transferCus #region transferPrj /// /// 文字檔轉換(專案|展覽) /// /// todo: describe txtBox parameter on TransferPrj /// todo: describe lbCount parameter on TransferPrj /// todo: describe sOrg parameter on TransferPrj /// todo: describe sUser parameter on TransferPrj /// todo: describe sWord parameter on TransferPrj public static void TransferPrj(HubTransfer.WriteOrLogsHandler writer, string sOrg, string sUser, string sWord) { try { var exhibitions = JsonConvert.DeserializeObject>(sWord); var query = exhibitions.GroupBy(p => p.PrjNO); foreach (IGrouping exhibitionsgroup in query) { foreach (OTB_OPM_ExhibitionsTransfer exhibition in exhibitionsgroup) { var sExhibitionWords = PackExhibitionsWords(exhibition); WriteWords(sExhibitionWords, sOrg, ".034", "A_"); } } var sbTxt = new StringBuilder(); var sbLogAppend = new StringBuilder(); var iCount = 0; foreach (OTB_OPM_ExhibitionsTransfer cus in exhibitions) { sbLogAppend.Append("狀態: 專案代號:" + cus.PrjNO + " 轉檔成功 拋轉人:" + sOrg + "-" + sUser + " " + DateTime.Now).Append("\n"); iCount++; } writer(sbLogAppend.ToString(), iCount); WriteWordLog("", sbLogAppend.ToString(), true, "Exhibitions");//記錄所有log } catch (Exception ex) { //写错误日志 WriteLog(Errorlog_Path, ex.ToString(), true); } } #endregion transferPrj #region packBillWords /// /// 組裝文字檔(帳單) /// /// 帳單資料 /// private static string PackBillWords(OTB_OPM_Bills bill) { //sb.Append("\n"); //換行(目前第一行抓不到,不知道什麼原因) var sb = new StringBuilder(); sb.Append(bill.BillNO.PadRight(15, ' '));//帳款號碼(1) sb.Append(bill.CheckDate.PadRight(8, ' ')); //對帳日期(2)【帳單日期:BillFirstCheckDate】 sb.Append(bill.BillType.PadRight(2, ' '));//帳別(收付)(3) sb.Append(bill.CustomerCode.PadRight(10, ' ')); //客戶供應商代號(4) sb.Append(bill.ResponsiblePersonCode.PadRight(11, ' ')); //業務員代號(5) sb.Append(bill.LastGetBillDate.PadRight(8, ' ')); //最近收付日(6) sb.Append(bill.LastGetBillNO.PadRight(15, ' ')); //最近收付單號(7) sb.Append(bill.TaxType.PadRight(1, ' ')); //稅別(8) sb.Append(bill.NOTaxAmount.PadRight(15, ' ')); //未稅金額(9) sb.Append(bill.BillAmount.PadRight(15, ' ')); //帳款金額(10) sb.Append(bill.PaymentAmount.PadRight(15, ' ')); //收付金額(11) sb.Append(bill.Allowance.PadRight(15, ' ')); //折讓金額(12) sb.Append(bill.DebtAmount.PadRight(15, ' ')); //呆帳金額(13) sb.Append(bill.ExchangeAmount.PadRight(15, ' ')); //匯兌損益金額(14) sb.Append(bill.Settle.PadRight(1, ' ')); //結清否(15) sb.Append(bill.InvoiceStartNumber.PadRight(10, ' ')); //發票號碼(起)(16) sb.Append(bill.InvoiceEndNumber.PadRight(10, ' ')); //發票號碼(迄)(17) sb.Append(bill.Category.PadRight(4, ' ')); //傳票類別(18) sb.Append(bill.OrderNo.PadRight(15, ' ')); //訂單單號(19) sb.Append(bill.ClosingNote.PadRight(1, ' ')); //結帳註記(20) sb.Append(bill.GeneralInvoiceNumber.PadRight(15, ' ')); //立帳總帳傳票號碼(21) sb.Append(bill.GeneralSerialNumber.PadRight(4, ' ')); //立帳總帳傳票序號(22) sb.Append(bill.Remark1.PadRight(30, ' ')); //備註一(30C)(23) sb.Append(bill.AccountSource.PadRight(1, ' ')); //帳款來源(24) sb.Append(bill.UpdateDate.PadRight(20, ' ')); //更新日期(25) sb.Append(bill.UpdatePersonnel.PadRight(12, ' ')); //更新人員(26) sb.Append(bill.DepartmentSiteNumber.PadRight(10, ' ')); //部門\ 工地編號(27) sb.Append(bill.ProjectNumber.PadRight(10, ' ')); //專案\ 項目編號(28) sb.Append(bill.TransferBNotes.PadRight(1, ' ')); //轉B 帳註記(29) sb.Append(bill.ABNumber.PadRight(12, ' ')); //A|B 帳唯一流水號(30) sb.Append(bill.EnterNumber.PadRight(15, ' ')); //進銷單號(31) sb.Append(bill.ForeignCurrencyCode.PadRight(3, ' ')); //外幣代號(32) sb.Append(bill.ExchangeRate.PadRight(8, ' ')); //匯率(33) sb.Append(bill.ForeignAmount.PadRight(15, ' ')); //外幣金額(34) sb.Append(bill.PayAmount.PadRight(15, ' ')); //收付沖抵金額(35) sb.Append(bill.RefundAmount.PadRight(15, ' ')); //退款金額(36) sb.Append(bill.PaymentTerms.PadRight(1, ' ')); //收付條件(37) sb.Append(bill.AccountDate.PadRight(8, ' ')); //帳款日期(38)【帳單日期:BillFirstCheckDate】 sb.Append(bill.DCreditCardNumber.PadRight(16, ' ')); //預設信用卡號(39) sb.Append(bill.ClosingDate.PadRight(8, ' '));//結帳日期(40) sb.Append(bill.CusField1.PadRight(100, ' '));//自定義欄位一(41) sb.Append(bill.CusField2.PadRight(100, ' '));//自定義欄位二(42) sb.Append(bill.CusField3.PadRight(100, ' '));//自定義欄位三(43) sb.Append(bill.CusField4.PadRight(100, ' '));//自定義欄位四(44) sb.Append(bill.CusField5.PadRight(100, ' '));//自定義欄位五(45) sb.Append(bill.CusField6.PadRight(15, ' ')); //自定義欄位六(46) sb.Append(bill.CusField7.PadRight(15, ' ')); //自定義欄位七(47) sb.Append(bill.CusField8.PadRight(15, ' ')); //自定義欄位八(48) sb.Append(bill.CusField9.PadRight(15, ' ')); //自定義欄位九(49) sb.Append(bill.CusField10.PadRight(15, ' ')); //自定義欄位十(50) sb.Append(bill.CusField11.PadRight(8, ' ')); //自定義欄位十一(51) sb.Append(bill.CusField12.PadRight(8, ' ')); //自定義欄位十二(52) sb.Append(bill.Remark2.PadRight(250, ' ')); //備註二(M)(53) sb.Append(bill.TWNOTaxAmount.PadRight(15, ' ')); //台幣未稅金額(54) sb.Append(bill.TWAmount.PadRight(15, ' ')); //台幣帳款金額(55) sb.Append("".PadRight(10, ' ')); return sb.ToString(); } #endregion packBillWords #region packCustomersWords /// /// 組裝文字檔(客戶) /// /// todo: describe customers parameter on PackCustomersWords /// private static string PackCustomersWords(OTB_CRM_CustomersTransfer cus) { var sb = new StringBuilder(); sb.Append(cus.Feild01.PadRight(10, ' ')); sb.Append(cus.Feild02.PadRight(1, ' ')); sb.Append(ChineseStringUtility.ToTraditional(Common.PadRightEx(cus.Feild03, 12, ' '))); sb.Append(ChineseStringUtility.ToTraditional(Common.PadRightEx(cus.Feild04, 60, ' '))); sb.Append(cus.Feild05.PadRight(12, ' ')); sb.Append(cus.Feild06.PadRight(4, ' ')); sb.Append(cus.Feild07.PadRight(8, ' ')); sb.Append(cus.Feild08.PadRight(9, ' ')); sb.Append(cus.Feild09.PadRight(5, ' ')); sb.Append(ChineseStringUtility.ToTraditional(Common.PadRightEx(cus.Feild10, 60, ' '))); sb.Append(ChineseStringUtility.ToTraditional(Common.PadRightEx(cus.Feild11, 60, ' '))); sb.Append(ChineseStringUtility.ToTraditional(Common.PadRightEx(cus.Feild12, 60, ' '))); sb.Append(cus.Feild13.PadRight(20, ' ')); sb.Append(cus.Feild14.PadRight(20, ' ')); sb.Append(cus.Feild15.PadRight(20, ' ')); sb.Append(cus.Feild16.PadRight(20, ' ')); sb.Append(cus.Feild17.PadRight(20, ' ')); sb.Append(cus.Feild18.PadRight(20, ' ')); sb.Append(cus.Feild19.PadRight(20, ' ')); sb.Append(cus.Feild20.PadRight(30, ' ')); sb.Append(cus.Feild21.PadRight(12, ' ')); sb.Append(cus.Feild22.PadRight(12, ' ')); sb.Append(ChineseStringUtility.ToTraditional(Common.PadRightEx(cus.Feild23, 30, ' '))); sb.Append(cus.Feild24.PadRight(18, ' ')); sb.Append(cus.Feild25.PadRight(1, ' ')); sb.Append(cus.Feild26.PadRight(5, ' ')); sb.Append(cus.Feild27.PadRight(15, ' ')); sb.Append(cus.Feild28.PadRight(10, ' ')); sb.Append(cus.Feild29.PadRight(11, ' ')); sb.Append(cus.Feild30.PadRight(11, ' ')); sb.Append(cus.Feild31.PadRight(8, ' ')); sb.Append(cus.Feild32.PadRight(8, ' ')); sb.Append(cus.Feild33.PadRight(15, ' ')); sb.Append(cus.Feild34.PadRight(15, ' ')); sb.Append(cus.Feild35.PadRight(15, ' ')); sb.Append(cus.Feild36.PadRight(15, ' ')); sb.Append(cus.Feild37.PadRight(1, ' ')); sb.Append(cus.Feild38.PadRight(1, ' ')); sb.Append(cus.Feild39.PadRight(30, ' ')); sb.Append(cus.Feild40.PadRight(30, ' ')); sb.Append(cus.Feild41.PadRight(1, ' ')); sb.Append(cus.Feild42.PadRight(2, ' ')); sb.Append(cus.Feild43.PadRight(2, ' ')); sb.Append(cus.Feild44.PadRight(2, ' ')); sb.Append(cus.Feild45.PadRight(2, ' ')); sb.Append(cus.Feild46.PadRight(2, ' ')); sb.Append(cus.Feild47.PadRight(2, ' ')); sb.Append(cus.Feild48.PadRight(2, ' ')); sb.Append(cus.Feild49.PadRight(2, ' ')); sb.Append(cus.Feild50.PadRight(2, ' ')); sb.Append(cus.Feild51.PadRight(2, ' ')); sb.Append(cus.Feild52.PadRight(2, ' ')); sb.Append(cus.Feild53.PadRight(2, ' ')); sb.Append(cus.Feild54.PadRight(5, ' ')); sb.Append(cus.Feild55.PadRight(5, ' ')); sb.Append(cus.Feild56.PadRight(20, ' ')); sb.Append(cus.Feild57.PadRight(10, ' ')); sb.Append(cus.Feild58.PadRight(10, ' ')); sb.Append(cus.Feild59.PadRight(250, ' ')); sb.Append(cus.Feild60.PadRight(250, ' ')); sb.Append(cus.Feild61.PadRight(250, ' ')); sb.Append(cus.Feild62.PadRight(6, ' ')); sb.Append(cus.Feild63.PadRight(3, ' ')); sb.Append(cus.Feild64.PadRight(50, ' ')); sb.Append(cus.Feild65.PadRight(50, ' ')); sb.Append(cus.Feild66.PadRight(1, ' ')); sb.Append(cus.Feild67.PadRight(1, ' ')); sb.Append(cus.Feild68.PadRight(10, ' ')); sb.Append(cus.Feild69.PadRight(100, ' ')); sb.Append(cus.Feild70.PadRight(100, ' ')); sb.Append(cus.Feild71.PadRight(100, ' ')); sb.Append(cus.Feild72.PadRight(100, ' ')); sb.Append(cus.Feild73.PadRight(100, ' ')); sb.Append(cus.Feild74.PadRight(15, ' ')); sb.Append(cus.Feild75.PadRight(15, ' ')); sb.Append(cus.Feild76.PadRight(15, ' ')); sb.Append(cus.Feild77.PadRight(15, ' ')); sb.Append(cus.Feild78.PadRight(15, ' ')); sb.Append(cus.Feild79.PadRight(8, ' ')); sb.Append(cus.Feild80.PadRight(8, ' ')); sb.Append(cus.Feild81.PadRight(11, ' ')); sb.Append(cus.Feild82.PadRight(120, ' ')); sb.Append(cus.Feild83.PadRight(240, ' ')); sb.Append(cus.Feild84.PadRight(2, ' ')); sb.Append(cus.Feild85.PadRight(2, ' ')); sb.Append(cus.Feild86.PadRight(1, ' ')); sb.Append(cus.Feild87.PadRight(1, ' ')); sb.Append(cus.Feild88.PadRight(1, ' ')); sb.Append(cus.Feild89.PadRight(20, ' ')); sb.Append(cus.Feild90.PadRight(250, ' ')); sb.Append(cus.Feild91.PadRight(1, ' ')); sb.Append(cus.Feild92.PadRight(1, ' ')); sb.Append(cus.Feild93.PadRight(1, ' ')); sb.Append(cus.Feild94.PadRight(128, ' ')); sb.Append(cus.Feild95.PadRight(20, ' ')); sb.Append(cus.Feild96.PadRight(20, ' ')); sb.Append(cus.Feild97.PadRight(1, ' ')); sb.Append(cus.Feild98.PadRight(1, ' ')); sb.Append(cus.Feild99.PadRight(1, ' ')); sb.Append("".PadRight(10, ' ')); return sb.ToString(); } #endregion packCustomersWords #region packExhibitionsWords /// /// 組裝文字檔(專案|展覽) /// /// todo: describe exhibitions parameter on PackExhibitionsWords /// private static string PackExhibitionsWords(OTB_OPM_ExhibitionsTransfer exhibition) { var sb = new StringBuilder(); sb.Append(exhibition.PrjNO.PadRight(10, ' ')); sb.Append(ChineseStringUtility.ToTraditional(Common.PadRightEx(exhibition.PrjName, 60, ' '))); sb.Append(Common.PadRightEx(exhibition.PrjCharger, 11, ' ')); sb.Append(exhibition.EndDate.PadRight(8, ' ')); sb.Append("".PadRight(10, ' ')); return sb.ToString(); } #endregion packExhibitionsWords #region preBlank /// /// 欄位前方補空白 /// /// /// todo: describe word parameter on PreBlank private static string PreBlank(string word, int len) { return word.PadLeft(len, ' '); } #endregion preBlank #region preBlank /// /// 欄位後方補空白 /// /// /// todo: describe word parameter on AfterBlank private static string AfterBlank(string word, int len) { return word.PadRight(len, ' '); } #endregion preBlank } }