using DocumentFormat.OpenXml.Packaging; using DocumentFormat.OpenXml.Wordprocessing; using EasyBL.WebApi.Message; using EasyNet; using Entity.Sugar; using Newtonsoft.Json; using Newtonsoft.Json.Linq; using SqlSugar; using SqlSugar.Base; using System; using System.Collections.Generic; using System.Data; using System.IO; using System.Linq; using System.Threading; namespace EasyBL.WEBAPP.OPM { public class ExhibitionImport_UpdService : ServiceBase { #region 進口報價和預估成本提交審核 /// /// 進口報價和預估成本提交審核 /// /// todo: describe i_crm parameter on ToAuditForQuote /// public ResponseMessage ToAuditForQuote(RequestMessage i_crm) { ResponseMessage rm = null; string sMsg = null; try { rm = SugarBase.ExecTran(db => { do { var data = i_crm.DATA as Dictionary; var sImportBillNO = _fetchString(i_crm, OTB_OPM_ImportExhibition.CN_IMPORTBILLNO); var sSourceID = ((JObject)data[OTB_OPM_ImportExhibition.CN_QUOTE])[EasyNetGlobalConstWord.GUID].ToString(); var sdb = new SimpleClient(db); var oOpm = sdb.GetById(sImportBillNO); if (oOpm == null) { sMsg = @"系統找不到對應的基本資料,請核查!"; break; } var sTitle = @"「進口」" + oOpm.ImportBillName + @"(" + oOpm.RefNumber + @")" + @"「報價單/預估成本審核」"; if (i_crm.LANG == @"zh") { sTitle = ChineseStringUtility.ToSimplified(sTitle); } //更新基本資料 var oOpmUpd = new OTB_OPM_ImportExhibition { Quote = data[OTB_OPM_ImportExhibition.CN_QUOTE].ToString(), EstimatedCost = data[OTB_OPM_ImportExhibition.CN_ESTIMATEDCOST].ToString(), ModifyUser = i_crm.USERID, ModifyDate = DateTime.Now }; db.Updateable(oOpmUpd) .UpdateColumns(it => new { it.Quote, it.EstimatedCost, it.ModifyUser, it.ModifyDate }) .Where(it => it.ImportBillNO == sImportBillNO).ExecuteCommand(); //更新代辦 SYS.Task_QryService.TaskStatusUpd(db, i_crm.ORIGID, sSourceID); var saSupervisor = new List(); var member = db.Queryable().Single(x => x.OrgID == i_crm.ORIGID && x.MemberID == i_crm.USERID); if (member.MemberID != null) { if (!string.IsNullOrEmpty(member.ImmediateSupervisor)) { saSupervisor.Add(member.ImmediateSupervisor); } var oDept = db.Queryable().Single(it => it.OrgID == i_crm.ORIGID && it.DepartmentID == member.DepartmentID); if (oDept != null) { saSupervisor.Add(oDept.ChiefOfDepartmentID); } } var sBillAuditor = Common.GetSystemSetting(db, i_crm.ORIGID, WebAppGlobalConstWord.BILLAUDITOR); if (sBillAuditor != @"") { var saBillAuditor = sBillAuditor.Split(new string[] { @";", @",", @",", @"|" }, StringSplitOptions.RemoveEmptyEntries); foreach (string auditor in saBillAuditor) { saSupervisor.Add(auditor); } } saSupervisor = saSupervisor.Distinct().ToList(); var listTips = new List(); var listTask = new List(); if (saSupervisor.Count > 0) { foreach (string supervisor in saSupervisor) { //添加提醒消息 var oTipsAdd = SYS.Task_QryService.TipsAdd(i_crm, sTitle, supervisor, i_crm.CUSTOMDATA[@"program_id"] + @"|?Action=Upd&GoTab=3&ImportBillNO=" + oOpm.ImportBillNO, WebAppGlobalConstWord.BELL); listTips.Add(oTipsAdd); //添加代辦 var oTaskAdd = SYS.Task_QryService.TaskAdd(i_crm, sSourceID, supervisor, sTitle, @"ExhibitionImport_Qry", @"?Action=Upd&GoTab=3&ImportBillNO=" + oOpm.ImportBillNO); listTask.Add(oTaskAdd); } } else { sMsg = @"您沒有對應的直屬主管或部門主管,請核查!"; break; } if (listTips.Count > 0) { db.Insertable(listTips).ExecuteCommand(); } if (listTask.Count > 0) { db.Insertable(listTask).ExecuteCommand(); } rm = new SuccessResponseMessage(null, i_crm); rm.DATA.Add(BLWording.REL, saSupervisor); } while (false); return rm; }); } catch (Exception ex) { sMsg = Util.GetLastExceptionMsg(ex); LogAndSendEmail(sMsg + @"Param:" + JsonToString(i_crm), ex, i_crm.ORIGID, i_crm.USERID, nameof(ExhibitionImport_UpdService), @"進口", @"ToAuditForQuote(進口報價和預估成本提交審核)", @"", @"", @""); } finally { if (null != sMsg) { rm = new ErrorResponseMessage(sMsg, i_crm); } Logger.Debug(@"ExhibitionImport_UpdService.ToAuditForQuote Debug(Param:" + JsonToString(i_crm) + @";Response:" + JsonToString(rm) + @")------------------"); } return rm; } #endregion 進口報價和預估成本提交審核 #region 進口報價和預估成本(主管)審核 /// /// 進口報價和預估成本(主管)審核 /// /// todo: describe i_crm parameter on AuditForQuote /// public ResponseMessage AuditForQuote(RequestMessage i_crm) { ResponseMessage rm = null; string sMsg = null; try { rm = SugarBase.ExecTran(db => { do { var data = i_crm.DATA as Dictionary; var sImportBillNO = _fetchString(i_crm, OTB_OPM_ImportExhibition.CN_IMPORTBILLNO); var sSourceID = ((JObject)data[OTB_OPM_ImportExhibition.CN_QUOTE])[EasyNetGlobalConstWord.GUID].ToString(); var TipsType = WebAppGlobalConstWord.CHECK; var sdb = new SimpleClient(db); var oOpm = sdb.GetById(sImportBillNO); if (oOpm == null) { sMsg = @"系統找不到對應的基本資料,請核查!"; break; } var member = db.Queryable().Single(x => x.OrgID == i_crm.ORIGID && x.MemberID == i_crm.USERID); var sTitle = member.MemberName + @"審核了您的「進口」活動名稱:" + oOpm.ImportBillName + @")的「報價單/預估成本審核」"; //更新報價和預估成本 var oOpmUpd = new OTB_OPM_ImportExhibition { Quote = data[OTB_OPM_ImportExhibition.CN_QUOTE].ToString(), EstimatedCost = data[OTB_OPM_ImportExhibition.CN_ESTIMATEDCOST].ToString(), Bills = data[OTB_OPM_ImportExhibition.CN_BILLS].ToString(), ModifyUser = i_crm.USERID, ModifyDate = DateTime.Now }; var sAuditVal = ((JObject)data[OTB_OPM_ImportExhibition.CN_QUOTE])[@"AuditVal"].ToString(); if (sAuditVal == @"2") { sTitle += @",審核結果:通過"; } else { sTitle += @",審核結果:不通過"; TipsType = WebAppGlobalConstWord.FAIL; } if (i_crm.LANG == @"zh") { sTitle = ChineseStringUtility.ToSimplified(sTitle); } db.Updateable(oOpmUpd) .UpdateColumns(it => new { it.Quote, it.EstimatedCost, it.Bills, it.ModifyUser, it.ModifyDate }) .Where(it => it.ImportBillNO == sImportBillNO).ExecuteCommand(); //更新代辦 SYS.Task_QryService.TaskStatusUpd(db, i_crm.ORIGID, sSourceID); //添加提醒消息 var oTipsAdd = SYS.Task_QryService.TipsAdd(i_crm, sTitle, oOpm.ResponsiblePerson, i_crm.CUSTOMDATA[@"program_id"] + @"|?Action=Upd&GoTab=3&ImportBillNO=" + oOpm.ImportBillNO, TipsType); db.Insertable(oTipsAdd).ExecuteCommand(); if (sAuditVal != @"2") { //添加代辦 var oTaskAdd = SYS.Task_QryService.TaskAdd(i_crm, sSourceID, oOpm.ResponsiblePerson, sTitle, @"ExhibitionImport_Qry", @"?Action=Upd&GoTab=3&ImportBillNO=" + oOpm.ImportBillNO); db.Insertable(oTaskAdd).ExecuteCommand(); } rm = new SuccessResponseMessage(null, i_crm); rm.DATA.Add(BLWording.REL, oOpm.ResponsiblePerson); } while (false); return rm; }); } catch (Exception ex) { sMsg = Util.GetLastExceptionMsg(ex); LogAndSendEmail(sMsg + @"Param:" + JsonToString(i_crm), ex, i_crm.ORIGID, i_crm.USERID, nameof(ExhibitionImport_UpdService), @"進口", @"AuditForQuote(進口報價和預估成本(主管)審核)", @"", @"", @""); } finally { if (null != sMsg) { rm = new ErrorResponseMessage(sMsg, i_crm); } Logger.Debug(@"ExhibitionImport_UpdService.AuditForQuote Debug(Param:" + JsonToString(i_crm) + @";Response:" + JsonToString(rm) + @")------------------"); } return rm; } #endregion 進口報價和預估成本(主管)審核 #region 進口帳單提交審核 /// /// 進口帳單提交審核 /// /// todo: describe i_crm parameter on ToAuditForBill /// public ResponseMessage ToAuditForBill(RequestMessage i_crm) { ResponseMessage rm = null; string sMsg = null; try { rm = SugarBase.ExecTran(db => { do { var data = i_crm.DATA as Dictionary; var oBill = (JObject)data[@"Bill"]; var sImportBillNO = _fetchString(i_crm, OTB_OPM_ImportExhibition.CN_IMPORTBILLNO); var sSourceID = oBill[EasyNetGlobalConstWord.GUID].ToString(); var sBillNO = oBill[@"BillNO"].ToString(); var sdb = new SimpleClient(db); var oOpm = sdb.GetById(sImportBillNO); if (oOpm == null) { sMsg = @"系統找不到對應的基本資料,請核查!"; break; } var sTitle = @"「進口」" + oOpm.ImportBillName + @"帳單(" + sBillNO + @")" + @"審核"; if (i_crm.LANG == @"zh") { sTitle = ChineseStringUtility.ToSimplified(sTitle); } //更新帳單 var oOpmUpd = new OTB_OPM_ImportExhibition { Bills = data[OTB_OPM_ImportExhibition.CN_BILLS].ToString(), ModifyUser = i_crm.USERID, ModifyDate = DateTime.Now }; db.Updateable(oOpmUpd).UpdateColumns(it => new { it.Bills, it.ModifyUser, it.ModifyDate }) .Where(it => it.ImportBillNO == sImportBillNO).ExecuteCommand(); //更新代辦 SYS.Task_QryService.TaskStatusUpd(db, i_crm.ORIGID, sSourceID); var saSupervisor = new List(); var member = db.Queryable().Single(x => x.OrgID == i_crm.ORIGID && x.MemberID == i_crm.USERID); if (member.MemberID != null) { if (!string.IsNullOrEmpty(member.ImmediateSupervisor)) { saSupervisor.Add(member.ImmediateSupervisor); } var oDept = db.Queryable().Single(it => it.OrgID == i_crm.ORIGID && it.DepartmentID == member.DepartmentID); if (oDept != null) { saSupervisor.Add(oDept.ChiefOfDepartmentID); } } var sBillAuditor = Common.GetSystemSetting(db, i_crm.ORIGID, WebAppGlobalConstWord.BILLAUDITOR); if (sBillAuditor != @"") { var saBillAuditor = sBillAuditor.Split(new string[] { @";", @",", @",", @"|" }, StringSplitOptions.RemoveEmptyEntries); foreach (string auditor in saBillAuditor) { saSupervisor.Add(auditor); } } saSupervisor = saSupervisor.Distinct().ToList(); var listTips = new List(); var listTask = new List(); if (saSupervisor.Count > 0) { foreach (string supervisor in saSupervisor) { //添加提醒消息 var oTipsAdd = SYS.Task_QryService.TipsAdd(i_crm, sTitle, supervisor, i_crm.CUSTOMDATA[@"program_id"] + @"|?Action=Upd&GoTab=3&ImportBillNO=" + oOpm.ImportBillNO + @"&BillNO=" + sBillNO, WebAppGlobalConstWord.BELL); listTips.Add(oTipsAdd); //添加代辦 var oTaskAdd = SYS.Task_QryService.TaskAdd(i_crm, sSourceID, supervisor, sTitle, @"ExhibitionImport_Qry", @"?Action=Upd&GoTab=3&ImportBillNO=" + oOpm.ImportBillNO + @"&BillNO=" + sBillNO); listTask.Add(oTaskAdd); } } else { sMsg = @"您沒有對應的直屬主管或部門主管,請核查!"; break; } if (listTips.Count > 0) { db.Insertable(listTips).ExecuteCommand(); } if (listTask.Count > 0) { db.Insertable(listTask).ExecuteCommand(); } rm = new SuccessResponseMessage(null, i_crm); rm.DATA.Add(BLWording.REL, saSupervisor); } while (false); return rm; }); } catch (Exception ex) { sMsg = Util.GetLastExceptionMsg(ex); LogAndSendEmail(sMsg + @"Param:" + JsonToString(i_crm), ex, i_crm.ORIGID, i_crm.USERID, nameof(ExhibitionImport_UpdService), @"進口", @"ToAuditForBill(進口帳單提交審核)", @"", @"", @""); } finally { if (null != sMsg) { rm = new ErrorResponseMessage(sMsg, i_crm); } Logger.Debug(@"ExhibitionImport_UpdService.ToAuditForBill Debug(Param:" + JsonToString(i_crm) + @";Response:" + JsonToString(rm) + @")------------------"); } return rm; } #endregion 進口帳單提交審核 #region 進口帳單(主管)審核 /// /// 進口帳單(主管)審核 /// /// todo: describe i_crm parameter on AuditForBill /// public ResponseMessage AuditForBill(RequestMessage i_crm) { ResponseMessage rm = null; string sMsg = null; try { rm = SugarBase.ExecTran(db => { do { var data = i_crm.DATA as Dictionary; var oBill = (JObject)data[@"Bill"]; var pm = new Dictionary(); var sImportBillNO = _fetchString(i_crm, OTB_OPM_ImportExhibition.CN_IMPORTBILLNO); var sBillNO = oBill[@"BillNO"].ToString(); var sSourceID = oBill[EasyNetGlobalConstWord.GUID].ToString(); var TipsType = WebAppGlobalConstWord.CHECK; var sdb = new SimpleClient(db); var oOpm = sdb.GetById(sImportBillNO); if (oOpm == null) { sMsg = @"系統找不到對應的基本資料,請核查!"; break; } var oPayer = new OTB_CRM_Customers(); if (!string.IsNullOrEmpty(oBill[@"Payer"].ToString())) { oPayer = db.Queryable().Single(it => it.guid == oBill[@"Payer"].ToString()); if (oPayer == null) { sMsg = @"系統找不到付款人資訊"; break; } } var member = db.Queryable().Single(x => x.OrgID == i_crm.ORIGID && x.MemberID == i_crm.USERID); var sTitle = member.MemberName + @"審核了您的「進口」(活動名稱:" + oOpm.ImportBillName + @")的「帳單(" + sBillNO + @")」"; var sAuditVal = oBill[@"AuditVal"].ToString(); if (sAuditVal == @"2") { sTitle += @",審核結果:通過"; } else { sTitle += @",審核結果:不通過"; TipsType = WebAppGlobalConstWord.FAIL; } if (i_crm.LANG == @"zh") { sTitle = ChineseStringUtility.ToSimplified(sTitle); } //更新帳單 var oOpmUpd = new OTB_OPM_ImportExhibition { Bills = data[OTB_OPM_ImportExhibition.CN_BILLS].ToString(), ModifyUser = i_crm.USERID, ModifyDate = DateTime.Now }; db.Updateable(oOpmUpd).UpdateColumns(it => new { it.Bills, it.ModifyUser, it.ModifyDate }) .Where(it => it.ImportBillNO == sImportBillNO).ExecuteCommand(); //更新代辦 SYS.Task_QryService.TaskStatusUpd(db, i_crm.ORIGID, sSourceID); //添加提醒消息 var oTipsAdd = SYS.Task_QryService.TipsAdd(i_crm, sTitle, oOpm.ResponsiblePerson, i_crm.CUSTOMDATA[@"program_id"] + @"|?Action=Upd&GoTab=3&ImportBillNO=" + oOpm.ImportBillNO + @"&BillNO=" + sBillNO, TipsType); db.Insertable(oTipsAdd).ExecuteCommand(); if (sAuditVal != @"2") { //添加代辦 var oTaskAdd = SYS.Task_QryService.TaskAdd(i_crm, sSourceID, oOpm.ResponsiblePerson, sTitle, @"ExhibitionImport_Qry", @"?Action=Upd&GoTab=3&ImportBillNO=" + oOpm.ImportBillNO + @"&BillNO=" + sBillNO); db.Insertable(oTaskAdd).ExecuteCommand(); } if (sAuditVal == @"2") { var oBillsAdd = new OTB_OPM_Bills { OrgID = i_crm.ORIGID, BillNO = oBill[@"BillNO"].ToString(), //帳款號碼(1) CheckDate = Common.FnToTWDate(oBill[@"BillFirstCheckDate"]),//對帳日期(2) BillType = @"20",//帳別(收付)(3) CustomerCode = oPayer.CustomerNO //客戶供應商代號(4) }; var sResponsiblePerson = oOpm.ResponsiblePerson.Split('.')[0]; oBillsAdd.ResponsiblePersonCode = Common.CutByteString(sResponsiblePerson, 11); //業務員代號(5) oBillsAdd.ResponsiblePersonFullCode = oOpm.ResponsiblePerson; //業務員全代號 oBillsAdd.LastGetBillDate = @""; //最近收付日(6) oBillsAdd.LastGetBillNO = @""; //最近收付單號(7) oBillsAdd.TaxType = decimal.Parse(oBill[@"TaxSum"].ToString().Replace(@",", @"")) > 0 ? @"5" : @"6";//稅別(8) oBillsAdd.NOTaxAmount = oBill[@"AmountSum"].ToString(); //未稅金額(9) oBillsAdd.BillAmount = oBill[@"AmountTaxSum"].ToString(); //帳款金額(10) oBillsAdd.PaymentAmount = @"0"; //收付金額(11) oBillsAdd.Allowance = @"0"; //折讓金額(12) oBillsAdd.DebtAmount = @"0"; //呆帳金額(13) oBillsAdd.ExchangeAmount = @"0"; //匯兌損益金額(14) oBillsAdd.Settle = @"N"; //結清否(15) oBillsAdd.InvoiceStartNumber = @""; //發票號碼(起)(16) oBillsAdd.InvoiceEndNumber = @"";//發票號碼(迄)(17) oBillsAdd.Category = @"";//傳票類別(18) oBillsAdd.OrderNo = @"";//訂單單號(19) oBillsAdd.ClosingNote = @"N"; //結帳註記(20) oBillsAdd.GeneralInvoiceNumber = @""; //立帳總帳傳票號碼(21) oBillsAdd.GeneralSerialNumber = @""; //立帳總帳傳票序號(22) oBillsAdd.Remark1 = @""; //備註一(30C)(23) oBillsAdd.AccountSource = @"0"; //帳款來源(24) oBillsAdd.UpdateDate = @""; //更新日期(25) oBillsAdd.UpdatePersonnel = @""; //更新人員(26) oBillsAdd.DepartmentSiteNumber = oOpm.DepartmentID; //部門\ 工地編號(27) if (!string.IsNullOrWhiteSpace(oOpm.ExhibitionNO)) { var oExhibition = db.Queryable().Single(it => it.SN == oOpm.ExhibitionNO.ObjToInt()); oBillsAdd.ProjectNumber = oExhibition == null ? @"" : oExhibition.ExhibitionCode; //專案\ 項目編號(28) } else { oBillsAdd.ProjectNumber = @""; //專案\ 項目編號(28) } oBillsAdd.TransferBNotes = @""; //轉B 帳註記(29) oBillsAdd.ABNumber = @""; //A|B 帳唯一流水號(30) oBillsAdd.EnterNumber = @""; //進銷單號(31) var sCurrency = oBill[@"Currency"].ToString(); if (i_crm.ORIGID == "SG") { if (sCurrency == "RMB") { sCurrency = ""; } } else { if (sCurrency == "NTD") { sCurrency = ""; } } oBillsAdd.ForeignCurrencyCode = sCurrency; //外幣代號(32) var sExchangeRate = oBill[@"ExchangeRate"].ToString(); oBillsAdd.ExchangeRate = sExchangeRate; //匯率(33) oBillsAdd.ForeignAmount = (decimal.Parse(oBill[@"AmountTaxSum"].ToString()) * decimal.Parse(sExchangeRate == @"" ? @"1" : sExchangeRate)).ToString(); //外幣金額(34) oBillsAdd.PayAmount = @"0"; //收付沖抵金額(35) oBillsAdd.RefundAmount = @"0"; //退款金額(36) oBillsAdd.PaymentTerms = @""; //收付條件(37) oBillsAdd.AccountDate = Common.FnToTWDate(oBill[@"BillFirstCheckDate"]); //帳款日期(38) oBillsAdd.DCreditCardNumber = @""; //預設信用卡號(39) oBillsAdd.ClosingDate = @""; //結帳日期(40) oBillsAdd.CusField1 = @""; //自定義欄位一(41) oBillsAdd.CusField2 = @""; //自定義欄位二(42) oBillsAdd.CusField3 = @""; //自定義欄位三(43) oBillsAdd.CusField4 = @""; //自定義欄位四(44) oBillsAdd.CusField5 = @""; //自定義欄位五(45) oBillsAdd.CusField6 = @"0"; //自定義欄位六(46) oBillsAdd.CusField7 = @"0"; //自定義欄位七(47) oBillsAdd.CusField8 = @"0"; //自定義欄位八(48) oBillsAdd.CusField9 = @"0"; //自定義欄位九(49) oBillsAdd.CusField10 = @"0"; //自定義欄位十(50) oBillsAdd.CusField11 = @""; //自定義欄位十一(51) oBillsAdd.CusField12 = @""; //自定義欄位十二(52) oBillsAdd.Remark2 = @""; //備註二(M)(53) oBillsAdd.TWNOTaxAmount = oBill[@"AmountSum"].ToString(); //台幣未稅金額(54) oBillsAdd.TWAmount = oBill[@"AmountTaxSum"].ToString(); //台幣帳款金額(55) oBillsAdd.CreateUser = i_crm.USERID; oBillsAdd.CreateDate = oBill[@"CreateDate"] == null ? DateTime.Now.ToString(@"yyyy/MM/dd HH:mm:ss") : oBill[@"CreateDate"].ToString(); oBillsAdd.BillFirstCheckDate = oBill[@"BillFirstCheckDate"] == null ? DateTime.Now.ToString(@"yyyy/MM/dd HH:mm:ss") : oBill[@"BillFirstCheckDate"].ToString(); oBillsAdd.Advance = oBill[@"Advance"].ToString(); //預收 oBillsAdd.TaxSum = oBill[@"TaxSum"].ToString(); //稅額 oBillsAdd.TotalReceivable = oBill[@"TotalReceivable"].ToString(); //總應收 oBillsAdd.IsRetn = oBill[@"IsRetn"] == null ? @"N" : oBill[@"IsRetn"].ToString(); //是否為退運 oBillsAdd.Url = i_crm.CUSTOMDATA[@"program_id"] + @"|?Action=Upd&GoTab=3&ImportBillNO=" + oOpm.ImportBillNO + @"&BillNO=" + sBillNO; //Url db.Insertable(oBillsAdd).ExecuteCommand(); } var oLogInfo = new OTB_SYS_LogInfo { OrgID = i_crm.ORIGID, SouseId = sBillNO, LogType = "billnoupdate", LogInfo = data[@"Bill"].ToString(), CreateUser = i_crm.USERID, CreateDate = DateTime.Now, Memo = "「進口帳單」(主管)審核" }; db.Insertable(oLogInfo).ExecuteCommand(); rm = new SuccessResponseMessage(null, i_crm); rm.DATA.Add(BLWording.REL, oOpm.ResponsiblePerson); } while (false); return rm; }); } catch (Exception ex) { sMsg = Util.GetLastExceptionMsg(ex); LogAndSendEmail(sMsg + @"Param:" + JsonToString(i_crm), ex, i_crm.ORIGID, i_crm.USERID, nameof(ExhibitionImport_UpdService), @"進口", @"ToAuditForBill(進口帳單(主管)審核)", @"", @"", @""); } finally { if (null != sMsg) { rm = new ErrorResponseMessage(sMsg, i_crm); } Logger.Debug(@"ExhibitionImport_UpdService.ToAuditForBill Debug(Param:" + JsonToString(i_crm) + @";Response:" + JsonToString(rm) + @")------------------"); } return rm; } #endregion 進口帳單(主管)審核 #region 進口帳單(會計)審核 /// /// 進口帳單(會計)審核 /// /// todo: describe i_crm parameter on AccountAuditForBill /// public ResponseMessage AccountAuditForBill(RequestMessage i_crm) { ResponseMessage rm = null; string sMsg = null; try { rm = SugarBase.ExecTran(db => { do { var data = i_crm.DATA as Dictionary; var oBill = (JObject)data[@"Bill"]; var sImportBillNO = _fetchString(i_crm, OTB_OPM_ImportExhibition.CN_IMPORTBILLNO); var sSourceID = oBill[EasyNetGlobalConstWord.GUID].ToString(); var sBillNO = oBill[@"BillNO"].ToString(); var sdb = new SimpleClient(db); var oOpm = sdb.GetById(sImportBillNO); if (oOpm == null) { sMsg = @"系統找不到對應的基本資料,請核查!"; break; } var member = db.Queryable().Single(x => x.OrgID == i_crm.ORIGID && x.MemberID == i_crm.USERID); var sTitle = @"會計(" + member.MemberName + @")審核了您的「進口」(活動名稱:" + oOpm.ImportBillName + @")的「帳單(" + sBillNO + @")」"; if (i_crm.LANG == @"zh") { sTitle = ChineseStringUtility.ToSimplified(sTitle); } //更新帳單 var oOpmUpd = new OTB_OPM_ImportExhibition { Bills = data[OTB_OPM_ImportExhibition.CN_BILLS].ToString(), ModifyUser = i_crm.USERID, ModifyDate = DateTime.Now }; db.Updateable(oOpmUpd).UpdateColumns(it => new { it.Bills, it.ModifyUser, it.ModifyDate }) .Where(it => it.ImportBillNO == sImportBillNO).ExecuteCommand(); //更新代辦 SYS.Task_QryService.TaskStatusUpd(db, i_crm.ORIGID, sSourceID); //添加提醒消息 var oTipsAdd = SYS.Task_QryService.TipsAdd(i_crm, sTitle, oOpm.ResponsiblePerson, i_crm.CUSTOMDATA[@"program_id"] + @"|?Action=Upd&GoTab=3&ImportBillNO=" + oOpm.ImportBillNO + @"&BillNO=" + sBillNO, WebAppGlobalConstWord.CHECK); db.Insertable(oTipsAdd).ExecuteCommand(); rm = new SuccessResponseMessage(null, i_crm); rm.DATA.Add(BLWording.REL, oOpm.ResponsiblePerson); } while (false); return rm; }); } catch (Exception ex) { sMsg = Util.GetLastExceptionMsg(ex); LogAndSendEmail(sMsg + @"Param:" + JsonToString(i_crm), ex, i_crm.ORIGID, i_crm.USERID, nameof(ExhibitionImport_UpdService), @"進口", @"AccountAuditForBill(進口帳單(會計)審核)", @"", @"", @""); } finally { if (null != sMsg) { rm = new ErrorResponseMessage(sMsg, i_crm); } Logger.Debug(@"ExhibitionImport_UpdService.AccountAuditForBill Debug(Param:" + JsonToString(i_crm) + @";Response:" + JsonToString(rm) + @")------------------"); } return rm; } #endregion 進口帳單(會計)審核 #region (會計)取消審核 /// /// (會計)取消審核 /// /// todo: describe i_crm parameter on CancelAudit /// public ResponseMessage CancelAudit(RequestMessage i_crm) { ResponseMessage rm = null; string sMsg = null; try { rm = SugarBase.ExecTran(db => { do { var data = i_crm.DATA as Dictionary; var oBill = (JObject)data[@"Bill"]; var sImportBillNO = _fetchString(i_crm, OTB_OPM_ImportExhibition.CN_IMPORTBILLNO); var sBillNO = oBill[@"BillNO"].ToString(); var sSourceID = oBill[EasyNetGlobalConstWord.GUID].ToString(); var sdb = new SimpleClient(db); var oOpm = sdb.GetById(sImportBillNO); if (oOpm == null) { sMsg = @"系統找不到對應的基本資料,請核查!"; break; } var LogData = _fetchString(i_crm, @"LogData"); var LogResult = BillLogs.InsertBillChangeLog(db, LogData, ActionType.取消審核, i_crm.ORIGID, i_crm.USERID); if (!LogResult.Item1) { sMsg = LogResult.Item2; break; } var member = db.Queryable().Single(x => x.OrgID == i_crm.ORIGID && x.MemberID == i_crm.USERID); var sTitle = @"會計(" + member.MemberName + @")取消審核了您的「進口」(活動名稱:" + oOpm.ImportBillName + @")的帳單(" + sBillNO + @")"; if (i_crm.LANG == @"zh") { sTitle = ChineseStringUtility.ToSimplified(sTitle); } //更新帳單 var oOpmUpd = new OTB_OPM_ImportExhibition { Bills = data[OTB_OPM_ImportExhibition.CN_BILLS].ToString(), ModifyUser = i_crm.USERID, ModifyDate = DateTime.Now }; db.Updateable(oOpmUpd).UpdateColumns(it => new { it.Bills, it.ModifyUser, it.ModifyDate }) .Where(it => it.ImportBillNO == sImportBillNO).ExecuteCommand(); //更新代辦 SYS.Task_QryService.TaskStatusUpd(db, i_crm.ORIGID, sSourceID); //添加提醒消息 var oTipsAdd = SYS.Task_QryService.TipsAdd(i_crm, sTitle, oOpm.ResponsiblePerson, i_crm.CUSTOMDATA[@"program_id"] + @"|?Action=Upd&GoTab=3&ImportBillNO=" + oOpm.ImportBillNO + @"&BillNO=" + sBillNO, WebAppGlobalConstWord.BELL); db.Insertable(oTipsAdd).ExecuteCommand(); //添加代辦 var oTaskAdd = SYS.Task_QryService.TaskAdd(i_crm, sSourceID, oOpm.ResponsiblePerson, sTitle, @"ExhibitionImport_Qry", @"?Action=Upd&GoTab=3&ImportBillNO=" + oOpm.ImportBillNO + @"&BillNO=" + sBillNO); db.Insertable(oTaskAdd).ExecuteCommand(); rm = new SuccessResponseMessage(null, i_crm); rm.DATA.Add(BLWording.REL, oOpm.ResponsiblePerson); } while (false); return rm; }); } catch (Exception ex) { sMsg = Util.GetLastExceptionMsg(ex); LogAndSendEmail(sMsg + @"Param:" + JsonToString(i_crm), ex, i_crm.ORIGID, i_crm.USERID, nameof(ExhibitionImport_UpdService), @"進口", @"CancelAudit((會計)取消審核)", @"", @"", @""); } finally { if (null != sMsg) { rm = new ErrorResponseMessage(sMsg, i_crm); } Logger.Debug(@"ExhibitionImport_UpdService.CancelAudit Debug(Param:" + JsonToString(i_crm) + @";Response:" + JsonToString(rm) + @")------------------"); } return rm; } #endregion (會計)取消審核 #region (會計)銷帳 /// /// (會計)銷帳 /// /// todo: describe i_crm parameter on WriteOff /// public ResponseMessage WriteOff(RequestMessage i_crm) { ResponseMessage rm = null; string sMsg = null; try { rm = SugarBase.ExecTran(db => { do { var data = i_crm.DATA as Dictionary; var oBill = (JObject)data[@"Bill"]; var sImportBillNO = _fetchString(i_crm, OTB_OPM_ImportExhibition.CN_IMPORTBILLNO); var sBillNO = oBill[@"BillNO"].ToString(); var sdb = new SimpleClient(db); var oOpm = sdb.GetById(sImportBillNO); if (oOpm == null) { sMsg = @"系統找不到對應的基本資料,請核查!"; break; } var member = db.Queryable().Single(x => x.OrgID == i_crm.ORIGID && x.MemberID == i_crm.USERID); var sTitle = @"會計(" + member.MemberName + @")對您的「進口」(活動名稱:" + oOpm.ImportBillName + @")的帳單(" + sBillNO + @")進行了銷帳"; if (i_crm.LANG == @"zh") { sTitle = ChineseStringUtility.ToSimplified(sTitle); } //更新帳單 var oOpmUpd = new OTB_OPM_ImportExhibition { Bills = data[OTB_OPM_ImportExhibition.CN_BILLS].ToString(), ModifyUser = i_crm.USERID, ModifyDate = DateTime.Now }; db.Updateable(oOpmUpd).UpdateColumns(it => new { it.Bills, it.ModifyUser, it.ModifyDate }) .Where(it => it.ImportBillNO == sImportBillNO).ExecuteCommand(); //添加提醒消息 var oTipsAdd = SYS.Task_QryService.TipsAdd(i_crm, sTitle, oOpm.ResponsiblePerson, i_crm.CUSTOMDATA[@"program_id"] + @"|?Action=Upd&GoTab=3&ImportBillNO=" + oOpm.ImportBillNO + @"&BillNO=" + sBillNO, WebAppGlobalConstWord.BELL); db.Insertable(oTipsAdd).ExecuteCommand(); rm = new SuccessResponseMessage(null, i_crm); rm.DATA.Add(BLWording.REL, oOpm.ResponsiblePerson); } while (false); return rm; }); } catch (Exception ex) { sMsg = Util.GetLastExceptionMsg(ex); LogAndSendEmail(sMsg + @"Param:" + JsonToString(i_crm), ex, i_crm.ORIGID, i_crm.USERID, nameof(ExhibitionImport_UpdService), @"進口", @"WriteOff((會計)銷帳)", @"", @"", @""); } finally { if (null != sMsg) { rm = new ErrorResponseMessage(sMsg, i_crm); } Logger.Debug(@"ExhibitionImport_UpdService.WriteOff Debug(Param:" + JsonToString(i_crm) + @";Response:" + JsonToString(rm) + @")------------------"); } return rm; } #endregion (會計)銷帳 #region (會計)取消銷帳 /// /// (會計)取消銷帳 /// /// todo: describe i_crm parameter on CancelWriteOff /// public ResponseMessage CancelWriteOff(RequestMessage i_crm) { ResponseMessage rm = null; string sMsg = null; var db = SugarBase.GetIntance(); try { do { var data = i_crm.DATA as Dictionary; var oBill = (JObject)data[@"Bill"]; var sImportBillNO = _fetchString(i_crm, OTB_OPM_ImportExhibition.CN_IMPORTBILLNO); var sBillNO = oBill[@"BillNO"].ToString(); var sdb = new SimpleClient(db); var oOpm = sdb.GetById(sImportBillNO); if (oOpm == null) { sMsg = @"系統找不到對應的基本資料,請核查!"; break; } var LogData = _fetchString(i_crm, @"LogData"); var LogResult = BillLogs.InsertBillChangeLog(db, LogData, ActionType.取消銷帳, i_crm.ORIGID, i_crm.USERID); if (!LogResult.Item1) { sMsg = LogResult.Item2; break; } //更新帳單 var oOpmUpd = new OTB_OPM_ImportExhibition { Bills = data[OTB_OPM_ImportExhibition.CN_BILLS].ToString(), ModifyUser = i_crm.USERID, ModifyDate = DateTime.Now }; var iResult = db.Updateable(oOpmUpd).UpdateColumns(it => new { it.Bills, it.ModifyUser, it.ModifyDate }) .Where(it => it.ImportBillNO == sImportBillNO).ExecuteCommand(); if (iResult > 0) { rm = new SuccessResponseMessage(null, i_crm); } } while (false); } catch (Exception ex) { sMsg = Util.GetLastExceptionMsg(ex); LogAndSendEmail(sMsg + @"Param:" + JsonToString(i_crm), ex, i_crm.ORIGID, i_crm.USERID, nameof(ExhibitionImport_UpdService), @"進口", @"CancelWriteOff((會計)取消銷帳)", @"", @"", @""); } finally { if (null != sMsg) { rm = new ErrorResponseMessage(sMsg, i_crm); } Logger.Debug(@"ExhibitionImport_UpdService.CancelWriteOff Debug(Param:" + JsonToString(i_crm) + @";Response:" + JsonToString(rm) + @")------------------"); } return rm; } #endregion (會計)取消銷帳 #region 過帳 /// /// 過帳 /// /// todo: describe i_crm parameter on BillPost /// public ResponseMessage BillPost(RequestMessage i_crm) { ResponseMessage rm = null; string sMsg = null; try { rm = SugarBase.ExecTran(db => { do { var data = i_crm.DATA as Dictionary; var oBill = (JObject)data[@"Bill"]; var sImportBillNO = _fetchString(i_crm, OTB_OPM_ImportExhibition.CN_IMPORTBILLNO); var sBillNO = oBill[@"BillNO"].ToString(); var sdb = new SimpleClient(db); var oOpm = sdb.GetById(sImportBillNO); if (oOpm == null) { sMsg = @"系統找不到對應的基本資料,請核查!"; break; } var oPayer = new OTB_CRM_Customers(); if (!string.IsNullOrEmpty(oBill[@"Payer"].ToString())) { oPayer = db.Queryable().Single(it => it.guid == oBill[@"Payer"].ToString()); if (oPayer == null) { sMsg = @"系統找不到付款人資訊"; break; } } var sTitle = @"「進口」(活動名稱:" + oOpm.ImportBillName + @")的帳單(" + sBillNO + @")已過帳"; if (i_crm.LANG == @"zh") { sTitle = ChineseStringUtility.ToSimplified(sTitle); } //更新帳單 var oOpmUpd = new OTB_OPM_ImportExhibition { Bills = data[OTB_OPM_ImportExhibition.CN_BILLS].ToString(), ModifyUser = i_crm.USERID, ModifyDate = DateTime.Now }; db.Updateable(oOpmUpd).UpdateColumns(it => new { it.Bills, it.ModifyUser, it.ModifyDate }) .Where(it => it.ImportBillNO == sImportBillNO).ExecuteCommand(); var listAccounts = db.Queryable() .Where(it => it.OrgID == i_crm.ORIGID && it.RuleID == @"Account").ToList(); var listTips = new List(); if (listAccounts.Count > 0) { foreach (OTB_SYS_MembersToRule account in listAccounts) { //添加提醒消息 var oTipsAdd = SYS.Task_QryService.TipsAdd(i_crm, sTitle, account.MemberID, i_crm.CUSTOMDATA[@"program_id"] + @"|?Action=Upd&GoTab=3&ImportBillNO=" + oOpm.ImportBillNO + @"&BillNO=" + sBillNO, WebAppGlobalConstWord.BELL); listTips.Add(oTipsAdd); } } if (listTips.Count > 0) { db.Insertable(listTips).ExecuteCommand(); } var oBillsAdd = new OTB_OPM_Bills { OrgID = i_crm.ORIGID, BillNO = oBill[@"BillNO"].ToString(), //帳款號碼(1) CheckDate = Common.FnToTWDate(oBill[@"BillFirstCheckDate"]),//對帳日期(2) BillType = @"20",//帳別(收付)(3) CustomerCode = oPayer.CustomerNO //客戶供應商代號(4) }; var sResponsiblePerson = oOpm.ResponsiblePerson.Split('.')[0]; oBillsAdd.ResponsiblePersonCode = Common.CutByteString(sResponsiblePerson, 11); //業務員代號(5) oBillsAdd.ResponsiblePersonFullCode = oOpm.ResponsiblePerson; //業務員全代號 oBillsAdd.LastGetBillDate = @""; //最近收付日(6) oBillsAdd.LastGetBillNO = @""; //最近收付單號(7) oBillsAdd.TaxType = decimal.Parse(oBill[@"TaxSum"].ToString().Replace(@",", @"")) > 0 ? @"5" : @"6";//稅別(8) oBillsAdd.NOTaxAmount = oBill[@"AmountSum"].ToString(); //未稅金額(9) oBillsAdd.BillAmount = oBill[@"AmountTaxSum"].ToString(); //帳款金額(10) oBillsAdd.PaymentAmount = @"0"; //收付金額(11) oBillsAdd.Allowance = @"0"; //折讓金額(12) oBillsAdd.DebtAmount = @"0"; //呆帳金額(13) oBillsAdd.ExchangeAmount = @"0"; //匯兌損益金額(14) oBillsAdd.Settle = @"N"; //結清否(15) oBillsAdd.InvoiceStartNumber = oBill[@"InvoiceNumber"].ToString(); //發票號碼(起)(16) oBillsAdd.InvoiceEndNumber = oBill[@"InvoiceNumber"].ToString();//發票號碼(迄)(17) oBillsAdd.Category = @"";//傳票類別(18) oBillsAdd.OrderNo = @"";//訂單單號(19) oBillsAdd.ClosingNote = @"N"; //結帳註記(20) oBillsAdd.GeneralInvoiceNumber = @""; //立帳總帳傳票號碼(21) oBillsAdd.GeneralSerialNumber = @""; //立帳總帳傳票序號(22) oBillsAdd.Remark1 = @""; //備註一(30C)(23) oBillsAdd.AccountSource = @"0"; //帳款來源(24) oBillsAdd.UpdateDate = @""; //更新日期(25) oBillsAdd.UpdatePersonnel = @""; //更新人員(26) oBillsAdd.DepartmentSiteNumber = oOpm.DepartmentID; //部門\ 工地編號(27) if (!string.IsNullOrWhiteSpace(oOpm.ExhibitionNO)) { var oExhibition = db.Queryable().Single(it => it.SN == oOpm.ExhibitionNO.ObjToInt()); oBillsAdd.ProjectNumber = oExhibition == null ? @"" : oExhibition.ExhibitionCode; //專案\ 項目編號(28) } else { oBillsAdd.ProjectNumber = @""; //專案\ 項目編號(28) } oBillsAdd.TransferBNotes = @""; //轉B 帳註記(29) oBillsAdd.ABNumber = @""; //A|B 帳唯一流水號(30) oBillsAdd.EnterNumber = @""; //進銷單號(31) var sCurrency = oBill[@"Currency"].ToString(); if (i_crm.ORIGID == "SG") { if (sCurrency == "RMB") { sCurrency = ""; } } else { if (sCurrency == "NTD") { sCurrency = ""; } } oBillsAdd.ForeignCurrencyCode = sCurrency; //外幣代號(32) var sExchangeRate = oBill[@"ExchangeRate"].ToString(); oBillsAdd.ExchangeRate = sExchangeRate; //匯率(33) oBillsAdd.ForeignAmount = (decimal.Parse(oBill[@"AmountTaxSum"].ToString()) * decimal.Parse(sExchangeRate == @"" ? @"1" : sExchangeRate)).ToString(); //外幣金額(34) oBillsAdd.PayAmount = @"0"; //收付沖抵金額(35) oBillsAdd.RefundAmount = @"0"; //退款金額(36) oBillsAdd.PaymentTerms = @""; //收付條件(37) oBillsAdd.AccountDate = Common.FnToTWDate(oBill[@"BillFirstCheckDate"]); //帳款日期(38) oBillsAdd.DCreditCardNumber = @""; //預設信用卡號(39) oBillsAdd.ClosingDate = @""; //結帳日期(40) oBillsAdd.CusField1 = @""; //自定義欄位一(41) oBillsAdd.CusField2 = @""; //自定義欄位二(42) oBillsAdd.CusField3 = @""; //自定義欄位三(43) oBillsAdd.CusField4 = @""; //自定義欄位四(44) oBillsAdd.CusField5 = @""; //自定義欄位五(45) oBillsAdd.CusField6 = @"0"; //自定義欄位六(46) oBillsAdd.CusField7 = @"0"; //自定義欄位七(47) oBillsAdd.CusField8 = @"0"; //自定義欄位八(48) oBillsAdd.CusField9 = @"0"; //自定義欄位九(49) oBillsAdd.CusField10 = @"0"; //自定義欄位十(50) oBillsAdd.CusField11 = @""; //自定義欄位十一(51) oBillsAdd.CusField12 = @""; //自定義欄位十二(52) oBillsAdd.Remark2 = @""; //備註二(M)(53) oBillsAdd.TWNOTaxAmount = oBill[@"AmountSum"].ToString(); //台幣未稅金額(54) oBillsAdd.TWAmount = oBill[@"AmountTaxSum"].ToString(); //台幣帳款金額(55) oBillsAdd.CreateUser = i_crm.USERID; oBillsAdd.CreateDate = oBill[@"CreateDate"] == null ? DateTime.Now.ToString(@"yyyy/MM/dd HH:mm:ss") : oBill[@"CreateDate"].ToString(); oBillsAdd.BillFirstCheckDate = oBill[@"BillFirstCheckDate"] == null ? DateTime.Now.ToString(@"yyyy/MM/dd HH:mm:ss") : oBill[@"BillFirstCheckDate"].ToString(); oBillsAdd.Advance = oBill[@"Advance"].ToString(); //預收 oBillsAdd.TaxSum = oBill[@"TaxSum"].ToString(); //稅額 oBillsAdd.TotalReceivable = oBill[@"TotalReceivable"].ToString(); //總應收 oBillsAdd.IsRetn = oBill[@"IsRetn"] == null ? @"N" : oBill[@"IsRetn"].ToString(); //是否為退運 oBillsAdd.Url = i_crm.CUSTOMDATA[@"program_id"] + @"|?Action=Upd&GoTab=3&ImportBillNO=" + oOpm.ImportBillNO + @"&BillNO=" + sBillNO; //Url db.Insertable(oBillsAdd).ExecuteCommand(); var oLogInfo = new OTB_SYS_LogInfo { OrgID = i_crm.ORIGID, SouseId = sBillNO, LogType = "billnoupdate", LogInfo = data[@"Bill"].ToString(), CreateUser = i_crm.USERID, CreateDate = DateTime.Now, Memo = "「進口帳單」(會計)過帳" }; db.Insertable(oLogInfo).ExecuteCommand(); rm = new SuccessResponseMessage(null, i_crm); rm.DATA.Add(BLWording.REL, oOpm.ResponsiblePerson); } while (false); return rm; }); } catch (Exception ex) { sMsg = Util.GetLastExceptionMsg(ex); LogAndSendEmail(sMsg + @"Param:" + JsonToString(i_crm), ex, i_crm.ORIGID, i_crm.USERID, nameof(ExhibitionImport_UpdService), @"進口", @"BillPost(過帳)", @"", @"", @""); } finally { if (null != sMsg) { rm = new ErrorResponseMessage(sMsg, i_crm); } Logger.Debug(@"ExhibitionImport_UpdService.BillPost Debug(Param:" + JsonToString(i_crm) + @";Response:" + JsonToString(rm) + @")------------------"); } return rm; } #endregion 過帳 #region 取消過帳 /// /// 取消過帳 /// /// todo: describe i_crm parameter on BillCancelPost /// public ResponseMessage BillCancelPost(RequestMessage i_crm) { ResponseMessage rm = null; string sMsg = null; try { rm = SugarBase.ExecTran(db => { do { var data = i_crm.DATA as Dictionary; var oBill = (JObject)data[@"Bill"]; var sImportBillNO = _fetchString(i_crm, OTB_OPM_ImportExhibition.CN_IMPORTBILLNO); var sBillNO = oBill[@"BillNO"].ToString(); var sdb = new SimpleClient(db); var oOpm = sdb.GetById(sImportBillNO); if (oOpm == null) { sMsg = @"系統找不到對應的基本資料,請核查!"; break; } var LogData = _fetchString(i_crm, @"LogData"); var LogResult = BillLogs.InsertBillChangeLog(db, LogData, ActionType.取消過帳, i_crm.ORIGID, i_crm.USERID); if (!LogResult.Item1) { sMsg = LogResult.Item2; break; } var member = db.Queryable().Single(x => x.OrgID == i_crm.ORIGID && x.MemberID == i_crm.USERID); var sTitle = @"會計(" + member.MemberName + @")對您的「進口」(活動名稱:" + oOpm.ImportBillName + @")的帳單(" + sBillNO + @")取消了過帳"; if (i_crm.LANG == @"zh") { sTitle = ChineseStringUtility.ToSimplified(sTitle); } //更新帳單 var oOpmUpd = new OTB_OPM_ImportExhibition { Bills = data[OTB_OPM_ImportExhibition.CN_BILLS].ToString(), ModifyUser = i_crm.USERID, ModifyDate = DateTime.Now }; db.Updateable(oOpmUpd).UpdateColumns(it => new { it.Bills, it.ModifyUser, it.ModifyDate }) .Where(it => it.ImportBillNO == sImportBillNO).ExecuteCommand(); //添加提醒消息 var oTipsAdd = SYS.Task_QryService.TipsAdd(i_crm, sTitle, oOpm.ResponsiblePerson, i_crm.CUSTOMDATA[@"program_id"] + @"|?Action=Upd&GoTab=3&ImportBillNO=" + oOpm.ImportBillNO + @"&BillNO=" + sBillNO, WebAppGlobalConstWord.BELL); db.Insertable(oTipsAdd).ExecuteCommand(); rm = new SuccessResponseMessage(null, i_crm); rm.DATA.Add(BLWording.REL, oOpm.ResponsiblePerson); } while (false); return rm; }); } catch (Exception ex) { sMsg = Util.GetLastExceptionMsg(ex); LogAndSendEmail(sMsg + @"Param:" + JsonToString(i_crm), ex, i_crm.ORIGID, i_crm.USERID, nameof(ExhibitionImport_UpdService), @"進口", @"BillCancelPost(取消過帳)", @"", @"", @""); } finally { if (null != sMsg) { rm = new ErrorResponseMessage(sMsg, i_crm); } Logger.Debug(@"ExhibitionImport_UpdService.BillCancelPost Debug(Param:" + JsonToString(i_crm) + @";Response:" + JsonToString(rm) + @")------------------"); } return rm; } #endregion 取消過帳 #region 作廢帳單 /// /// 作廢帳單 /// /// todo: describe i_crm parameter on BillVoid /// public ResponseMessage BillVoid(RequestMessage i_crm) { ResponseMessage rm = null; string sMsg = null; try { rm = SugarBase.ExecTran(db => { do { var data = i_crm.DATA as Dictionary; var oBill = (JObject)data[@"Bill"]; var sImportBillNO = _fetchString(i_crm, OTB_OPM_ImportExhibition.CN_IMPORTBILLNO); var sBillNO = oBill[@"BillNO"].ToString(); var sSourceID = oBill[EasyNetGlobalConstWord.GUID].ToString(); var sdb = new SimpleClient(db); var oOpm = sdb.GetById(sImportBillNO); if (oOpm == null) { sMsg = @"系統找不到對應的基本資料,請核查!"; break; } var LogData = _fetchString(i_crm, @"LogData"); var LogResult = BillLogs.InsertBillChangeLog(db, LogData, ActionType.帳單作廢, i_crm.ORIGID, i_crm.USERID); if (!LogResult.Item1) { sMsg = LogResult.Item2; break; } var member = db.Queryable().Single(x => x.OrgID == i_crm.ORIGID && x.MemberID == i_crm.USERID); var sTitle = @"會計(" + member.MemberName + @")作廢了您的「進口」(活動名稱:" + oOpm.ImportBillName + @")的帳單(" + sBillNO + @")"; if (i_crm.LANG == @"zh") { sTitle = ChineseStringUtility.ToSimplified(sTitle); } //更新帳單 var oOpmUpd = new OTB_OPM_ImportExhibition { Bills = data[OTB_OPM_ImportExhibition.CN_BILLS].ToString(), ModifyUser = i_crm.USERID, ModifyDate = DateTime.Now }; db.Updateable(oOpmUpd).UpdateColumns(it => new { it.Bills, it.ModifyUser, it.ModifyDate }) .Where(it => it.ImportBillNO == sImportBillNO).ExecuteCommand(); //添加提醒消息 var oTipsAdd = SYS.Task_QryService.TipsAdd(i_crm, sTitle, oOpm.ResponsiblePerson, i_crm.CUSTOMDATA[@"program_id"] + @"|?Action=Upd&GoTab=2&ImportBillNO=" + oOpm.ImportBillNO + @"&BillNO=" + sBillNO, WebAppGlobalConstWord.BELL); db.Insertable(oTipsAdd).ExecuteCommand(); db.Deleteable().Where(it => it.OrgID == i_crm.ORIGID && it.SourceID == sSourceID).ExecuteCommand(); rm = new SuccessResponseMessage(null, i_crm); rm.DATA.Add(BLWording.REL, oOpm.ResponsiblePerson); } while (false); return rm; }); } catch (Exception ex) { sMsg = Util.GetLastExceptionMsg(ex); LogAndSendEmail(sMsg + @"Param:" + JsonToString(i_crm), ex, i_crm.ORIGID, i_crm.USERID, nameof(ExhibitionImport_UpdService), @"進口", @"BillVoid(作廢帳單)", @"", @"", @""); } finally { if (null != sMsg) { rm = new ErrorResponseMessage(sMsg, i_crm); } Logger.Debug(@"ExhibitionImport_UpdService.BillVoid Debug(Param:" + JsonToString(i_crm) + @";Response:" + JsonToString(rm) + @")------------------"); } return rm; } #endregion 作廢帳單 #region 刪除帳單 /// /// 刪除帳單 /// /// todo: describe i_crm parameter on BillDelete /// public ResponseMessage BillDelete(RequestMessage i_crm) { ResponseMessage rm = null; string sMsg = null; try { rm = SugarBase.ExecTran(db => { do { var data = i_crm.DATA as Dictionary; var oBill = (JObject)data[@"Bill"]; var sImportBillNO = _fetchString(i_crm, OTB_OPM_ImportExhibition.CN_IMPORTBILLNO); var sBillNO = oBill[@"BillNO"].ToString(); var sSourceID = oBill[EasyNetGlobalConstWord.GUID].ToString(); var sdb = new SimpleClient(db); var oOpm = sdb.GetById(sImportBillNO); if (oOpm == null) { sMsg = @"系統找不到對應的基本資料,請核查!"; break; } var LogData = _fetchString(i_crm, @"LogData"); var LogResult = BillLogs.InsertBillChangeLog(db, LogData, ActionType.帳單刪除, i_crm.ORIGID, i_crm.USERID); if (!LogResult.Item1) { sMsg = LogResult.Item2; break; } var member = db.Queryable().Single(x => x.OrgID == i_crm.ORIGID && x.MemberID == i_crm.USERID); var sTitle = @"管理員(" + member.MemberName + @")刪除了您的「進口」(活動名稱:" + oOpm.ImportBillName + @")的帳單(" + sBillNO + @")"; if (i_crm.LANG == @"zh") { sTitle = ChineseStringUtility.ToSimplified(sTitle); } //更新帳單 var oOpmUpd = new OTB_OPM_ImportExhibition { Bills = data[OTB_OPM_ImportExhibition.CN_BILLS].ToString(), ModifyUser = i_crm.USERID, ModifyDate = DateTime.Now }; db.Updateable(oOpmUpd).UpdateColumns(it => new { it.Bills, it.ModifyUser, it.ModifyDate }) .Where(it => it.ImportBillNO == sImportBillNO).ExecuteCommand(); //添加提醒消息 var oTipsAdd = SYS.Task_QryService.TipsAdd(i_crm, sTitle, oOpm.ResponsiblePerson, i_crm.CUSTOMDATA[@"program_id"] + @"|?Action=Upd&GoTab=2&ImportBillNO=" + oOpm.ImportBillNO + @"&BillNO=" + sBillNO, WebAppGlobalConstWord.BELL); db.Insertable(oTipsAdd).ExecuteCommand(); db.Deleteable().Where(it => it.OrgID == i_crm.ORIGID && it.SourceID == sSourceID).ExecuteCommand(); rm = new SuccessResponseMessage(null, i_crm); rm.DATA.Add(BLWording.REL, oOpm.ResponsiblePerson); } while (false); return rm; }); } catch (Exception ex) { sMsg = Util.GetLastExceptionMsg(ex); LogAndSendEmail(sMsg + @"Param:" + JsonToString(i_crm), ex, i_crm.ORIGID, i_crm.USERID, nameof(ExhibitionImport_UpdService), @"進口", @"BillDelete(刪除帳單)", @"", @"", @""); } finally { if (null != sMsg) { rm = new ErrorResponseMessage(sMsg, i_crm); } Logger.Debug(@"ExhibitionImport_UpdService.BillDelete Debug(Param:" + JsonToString(i_crm) + @";Response:" + JsonToString(rm) + @")------------------"); } return rm; } #endregion 刪除帳單 #region 進出口程式下載簽收證明文件 /// /// 進出口程式下載簽收證明文件 /// /// todo: describe i_crm parameter on OutputSignDocuments /// public ResponseMessage OutputSignDocuments(RequestMessage i_crm) { ResponseMessage rm = null; string sMsg = null; var db = SugarBase.GetIntance(); var sOutPut = Common.ConfigGetValue(@"", @"OutFilesPath"); try { do { var sImportBillNO = _fetchString(i_crm, OTB_OPM_ImportExhibition.CN_IMPORTBILLNO); var sType = _fetchString(i_crm, @"Type"); var sFileType = _fetchString(i_crm, @"FileType"); var sSupplierID = _fetchString(i_crm, @"SupplierID"); var bSingleSupplier = sSupplierID == @""; var oOpm = db.Queryable().Single(it => it.ImportBillNO == sImportBillNO); if (oOpm == null) { sMsg = @"系統找不到對應的基本資料,請核查!"; break; } var joSupplier = new JObject(); var oCus = new OTB_CRM_Customers(); if (!bSingleSupplier) { oCus = db.Queryable().Single(it => it.guid == sSupplierID); if (oCus == null) { oCus = new OTB_CRM_Customers(); } var jaSuppliers = (JArray)JsonConvert.DeserializeObject(oOpm.Suppliers); foreach (JObject jo in jaSuppliers) { if (jo[@"SupplierID"].ToString() == sSupplierID) { joSupplier = jo; break; } } } else { if (oOpm.SupplierType == @"S") { if (!string.IsNullOrEmpty(oOpm.Supplier)) { oCus = db.Queryable().Single(it => it.guid == oOpm.Supplier); if (oCus == null) { sMsg = @"系統找不到客戶/參展商資訊"; break; } } } else { if (!string.IsNullOrEmpty(oOpm.Agent)) { oCus = db.Queryable().Single(it => it.guid == oOpm.Agent); if (oCus == null) { sMsg = @"系統找不到代理商資訊"; break; } } } } var sTemplId = sType == @"Import" ? @"SignDocumentsTmp" : @"ReturnSheet"; var oTempl = db.Queryable().Single(it => it.OrgID == i_crm.ORIGID && it.TemplID == sTemplId); if (oTempl == null) { sMsg = sType == @"Import" ? @"請檢查簽收證明模版設定" : @"請檢查回運指示單模版設定"; break; } var oFile = db.Queryable() .Single(it => it.OrgID == i_crm.ORIGID && it.ParentID == oTempl.FileID); if (oFile == null) { sMsg = sType == @"Import" ? @"系統找不到簽收證明模版" : @"系統找不到回運指示單模版"; break; } var sTempPath = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, oFile.FilePath);//Word模版路徑 var sBase = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, @""); sOutPut = sBase + sOutPut; Common.FnCreateDir(sOutPut);//如果不存在就創建文件夾 var sDocxName = oOpm.RefNumber.Trim() + @"_" + sType; //建立臨時文件 var sTempFile = Path.GetTempPath() + sDocxName + @".docx"; sOutPut += sDocxName + @".docx"; if (File.Exists(sTempFile)) { File.Delete(sTempFile); } File.Copy(sTempPath, sTempFile); var JReImport = new JObject(); var JReImportData = new JObject(); if (sType != @"Import") { var jaReImports = (JArray)JsonConvert.DeserializeObject(oOpm.ReImports); if (jaReImports != null && jaReImports.Count > 0) { var iIndex = sType == @"ReImport" ? 1 : int.Parse(sType.Split('-')[1]); var iType = 1; foreach (JObject jo in jaReImports) { if (iType == iIndex) { JReImport = (JObject)jo[@"ReImport"]; JReImportData = (JObject)jo[@"ReImportData"]; break; } iType++; } } } var oExhibition = db.Queryable().Single(it => it.SN == oOpm.ExhibitionNO.ObjToInt()); if (oExhibition == null) { oExhibition = new OTB_OPM_Exhibition(); } var JTmpKeys = (JArray)JsonConvert.DeserializeObject(oTempl.TemplKeys); using (WordprocessingDocument doc = WordprocessingDocument.Open(sTempFile, true))//顯示Word { //替換變數 var sBody = doc.MainDocumentPart.Document.Body.InnerXml; if (sType != @"Import") { sBody = sBody.Replace(@"[$Name$]", Common.EncodeEscapeChar(oExhibition.Exhibitioname_TW + (oExhibition.Exhibitioname_EN != @"" ? @"(" + oExhibition.Exhibitioname_EN + @")" : @""))) .Replace(@"[$Exhibitor$]", Common.EncodeEscapeChar((oCus.CustomerCName ?? @"") + (!string.IsNullOrEmpty(oCus.CustomerEName) ? @"(" + oCus.CustomerEName + @")" : @""))) .Replace(@"[$Booth$]", oOpm.MuseumMumber) .Replace(@"[$Contact$]", Common.EncodeEscapeChar(oOpm.SitiContactor)) .Replace(@"[$Tel$]", oOpm.SitiTelephone) .Replace(@"[$Destination$]", JReImportData[@"ReShipmentPort"].ToString()); } else { var sHall = @""; if ((bSingleSupplier && !string.IsNullOrWhiteSpace(oOpm.Hall)) || (!bSingleSupplier && joSupplier[@"Hall"].ToString() != @"")) { sHall = bSingleSupplier ? oOpm.Hall : joSupplier[@"Hall"].ToString(); var oArguments = db.Queryable() .Single(it => it.OrgID == i_crm.ORIGID && it.ArgumentClassID == @"Hall" && it.ArgumentID == sHall); if (oArguments != null) { sHall = oArguments.ArgumentValue ?? @""; } } sBody = sBody.Replace(@"[$Date$]", DateTime.Now.ToString(@"yyyy/MM/dd")) .Replace(@"[$Supplier$]", Common.EncodeEscapeChar((oCus.CustomerCName ?? @"") + (!string.IsNullOrEmpty(oCus.CustomerEName) ? @"(" + oCus.CustomerEName + @")" : @""))) .Replace(@"[$Hall$]", sHall) .Replace(@"[$MNO$]", bSingleSupplier ? oOpm.MuseumMumber : joSupplier[@"MuseumMumber"].ToString()) .Replace(@"[$Contact$]", Common.EncodeEscapeChar(bSingleSupplier ? oOpm.SitiContactor : joSupplier[@"ContactorName"].ToString())) .Replace(@"[$Tel$]", bSingleSupplier ? oOpm.SitiTelephone : joSupplier[@"Telephone"].ToString()) .Replace(@"[$Unit$]", bSingleSupplier ? oOpm.Unit : joSupplier[@"Unit"].ToString()) .Replace(@"[$BNO$]", oOpm.BillLadNO) .Replace(@"[$Exhibition$]", Common.EncodeEscapeChar(oExhibition.Exhibitioname_TW + (oExhibition.Exhibitioname_EN != @"" ? @"(" + oExhibition.Exhibitioname_EN + @")" : @""))) .Replace(@"[$Number$]", $@"{(bSingleSupplier ? oOpm.BoxNo : Convert.ToInt32(joSupplier[@"BoxNo"].ToString() == @"" ? @"0" : joSupplier[@"BoxNo"].ToString())):N0}") .Replace(@"[$Weight$]", $@"{(bSingleSupplier ? oOpm.Weight : Convert.ToDecimal(joSupplier[@"Weight"].ToString() == @"" ? @"0" : joSupplier[@"Weight"].ToString())):N3}") .Replace(@"[$Numbers$]", $@"{(bSingleSupplier ? oOpm.BoxNo : Convert.ToInt32(joSupplier[@"BoxNo"].ToString() == @"" ? @"0" : joSupplier[@"BoxNo"].ToString())):N0}") .Replace(@"[$Weights$]", $@"{(bSingleSupplier ? oOpm.Weight : Convert.ToDecimal(joSupplier[@"Weight"].ToString() == @"" ? @"0" : joSupplier[@"Weight"].ToString())):N3}") .Replace(@"[$Sign$]", bSingleSupplier ? (oOpm.ApproachTime == null ? @"" : Convert.ToDateTime(oOpm.ApproachTime).ToString(@"yyyy/MM/dd HH:mm")) : (joSupplier[@"ApproachTime"].ToString() == @"" ? @"" : Convert.ToDateTime(joSupplier[@"ApproachTime"].ToString()).ToString(@"yyyy/MM/dd HH:mm"))); } foreach (JObject jo in JTmpKeys) { if (jo.Property(@"TemplKey") != null && jo[@"TemplKey"].ToString() != @"") { sBody = sBody.Replace(jo[@"TemplKey"].ToString(), Common.EncodeEscapeChar(jo[@"TemplKeyValue"].ToString())); } } doc.MainDocumentPart.Document.Body.InnerXml = sBody; doc.MainDocumentPart.Document.Save(); } if (File.Exists(sOutPut)) { File.Delete(sOutPut); } if (sFileType == @"pdf") { sOutPut = sOutPut.Replace(@"docx", @"pdf"); var bOk = Common.WordToPDF(sTempFile, sOutPut); if (!bOk) { sOutPut = @""; } } else { File.Copy(sTempFile, sOutPut); } Thread.Sleep(500); File.Delete(sTempFile); //刪除臨時文件 sOutPut = sOutPut.Replace(sBase, @""); rm = new SuccessResponseMessage(null, i_crm); rm.DATA.Add(BLWording.REL, sOutPut); } while (false); } catch (Exception ex) { sMsg = Util.GetLastExceptionMsg(ex); LogAndSendEmail(sMsg + @"Param:" + JsonToString(i_crm), ex, i_crm.ORIGID, i_crm.USERID, nameof(ExhibitionImport_UpdService), @"進口", @"OutputSignDocuments(進出口程式下載簽收證明文件)", @"", @"", @""); } finally { if (null != sMsg) { rm = new ErrorResponseMessage(sMsg, i_crm); } Logger.Debug(@"ExhibitionImport_UpdService.OutputSignDocuments Debug(Param:" + JsonToString(i_crm) + @";Response:" + JsonToString(rm) + @")------------------"); } return rm; } #endregion 進出口程式下載簽收證明文件 #region 進口帳單列印下載 /// /// 進口帳單列印下載 /// /// todo: describe i_crm parameter on PrintBill /// public ResponseMessage PrintBill(RequestMessage i_crm) { ResponseMessage rm = null; string sMsg = null; var db = SugarBase.GetIntance(); var sBase = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, @""); var sOutPut = Common.ConfigGetValue(@"", @"OutFilesPath"); sOutPut = sBase + sOutPut; try { do { var sImportBillNO = _fetchString(i_crm, OTB_OPM_ImportExhibition.CN_IMPORTBILLNO); var sTemplID = _fetchString(i_crm, OTB_SYS_OfficeTemplate.CN_TEMPLID); var sBill = _fetchString(i_crm, @"Bill"); var sAction = _fetchString(i_crm, @"Action"); var sPayDateText = _fetchString(i_crm, @"PayDateText"); var bTW = sTemplID.EndsWith(@"TW"); var sdb = new SimpleClient(db); var oOpm = sdb.GetById(sImportBillNO); if (oOpm == null) { sMsg = @"系統找不到對應的基本資料,請核查!"; break; } var oTempl = db.Queryable().Single(it => it.OrgID == i_crm.ORIGID && it.TemplID == sTemplID); if (oTempl == null) { sMsg = @"請檢查模版設定"; break; } var oFile = db.Queryable() .Single(it => it.OrgID == i_crm.ORIGID && it.ParentID == oTempl.FileID); if (oFile == null) { sMsg = @"系統找不到對應的帳單模版"; break; } var oBill = (JObject)JsonConvert.DeserializeObject(sBill); var bTWCurrency = oBill[@"Currency"].ToString() == @"NTD"; var oPayer = new OTB_CRM_Customers(); if (!string.IsNullOrEmpty(oBill[@"Payer"].ToString())) { oPayer = db.Queryable().Single(it => it.guid == oBill[@"Payer"].ToString()); if (oPayer == null) { sMsg = @"系統找不到付款人資訊"; break; } } var WatermarkInfo = Common.GetWatermarkInfo(oBill[@"AuditVal"]?.ToString(), sTemplID, i_crm.ORIGID); var sTempPath = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, oFile.FilePath);//Word模版路徑 Common.FnCreateDir(sOutPut);//如果不存在就創建文件夾 var sDocxName = @"Invoice-" + oBill[@"BillNO"]; //建立臨時文件 var sTempFile = Path.GetTempPath() + sDocxName + @".docx"; sOutPut += sDocxName + @".docx"; if (File.Exists(sTempFile)) { File.Delete(sTempFile); } File.Copy(sTempPath, sTempFile); var JTmpKeys = (JArray)JsonConvert.DeserializeObject(oTempl.TemplKeys); double iPARM17 = 0; using (WordprocessingDocument doc = WordprocessingDocument.Open(sTempFile, true))//顯示Word { var body = doc.MainDocumentPart.Document.Body; var jaFeeItems = (JArray)JsonConvert.DeserializeObject(oBill[@"FeeItems"].ToString()); //查找:獲取第三個表格 var table = body.Elements().ElementAt(2); if (jaFeeItems.Count > 0) { var trow_Amount = table.Elements().ElementAt(4).Clone() as TableRow;//小計行 var trow_Tax = table.Elements().ElementAt(5).Clone() as TableRow;//營業稅 var trow_Total = table.Elements().ElementAt(7).Clone() as TableRow;//總應收 var trow_PrePay = table.Elements().ElementAt(8).Clone() as TableRow;//預收 var jaFeeItems_Tax = new JArray(); var jaFeeItems_NoTax = new JArray(); var iDefultRow = 10; var iInsertRow = 1; var iFeeItemsRow = 1; foreach (JObject jo in jaFeeItems) { if (jo[@"FinancialTaxRate"].ToString().Replace(@"%", @"").Trim() == @"0") { jaFeeItems_NoTax.Add(jo); } else { jaFeeItems_Tax.Add(jo); } } if (jaFeeItems_Tax.Count > 0) { var jaFeeItems_TaxSorted = new JArray(jaFeeItems_Tax.OrderBy(p => p[@"OrderBy"])); foreach (JObject jo in jaFeeItems_TaxSorted) { var trow_Item = table.Elements().ElementAt(2).Clone() as TableRow;//費用明細行 var iCellCount = trow_Item.Elements().Count(); if (iCellCount == 9) { ExhibitionHelper.RenderFeeItemsTW(trow_Item, jo, iCellCount, iFeeItemsRow); } else { ExhibitionHelper.RenderFeeItemsFR(trow_Item, jo, iCellCount, iFeeItemsRow); } table.InsertAt(trow_Item, iInsertRow + iDefultRow); //插入一行費用 iInsertRow++; iFeeItemsRow++; iPARM17 += double.Parse(jo[@"FinancialTWAmount"].ToString()); } table.InsertAt(trow_Amount, iInsertRow + iDefultRow);//插入一行小計行 iInsertRow++; //營業稅 table.InsertAt(trow_Tax, iInsertRow + iDefultRow);//插入一行營業稅 iInsertRow++; } if (jaFeeItems_NoTax.Count > 0) { var jaFeeItems_NoTaxSorted = new JArray(jaFeeItems_NoTax.OrderBy(p => p[@"OrderBy"])); var iCellCount = 0; foreach (JObject jo in jaFeeItems_NoTaxSorted) { var trow_Item = table.Elements().ElementAt(2).Clone() as TableRow;//費用明細行 iCellCount = trow_Item.Elements().Count(); if (iCellCount == 9) { ExhibitionHelper.RenderFeeItemsTW(trow_Item, jo, iCellCount, iFeeItemsRow); } else { ExhibitionHelper.RenderFeeItemsFR(trow_Item, jo, iCellCount, iFeeItemsRow); } //插入一行 table.InsertAt(trow_Item, iInsertRow + iDefultRow); iInsertRow++; iFeeItemsRow++; } if (iCellCount == 9) { table.InsertAt(trow_Total, iInsertRow + iDefultRow);//插入一行總應收 iInsertRow++; table.InsertAt(trow_PrePay, iInsertRow + iDefultRow);//插入一行預收 } } //刪除模板行 for (int i = 0; i < 8; i++) { table.Elements().ElementAt(1).Remove(); } } var oExhibition = db.Queryable().Single(it => it.SN == oOpm.ExhibitionNO.ObjToInt()); if (oExhibition == null) { oExhibition = new OTB_OPM_Exhibition(); } string sBillNO = oBill["BillNO"] != null ? oBill["BillNO"].ToString() : string.Empty; string sTaxSum = oBill["TaxSum"] != null ? oBill["TaxSum"].ToString() : string.Empty; string sAmountTaxSum = oBill["AmountTaxSum"] != null ? oBill["AmountTaxSum"].ToString() : string.Empty; string sAdvance = oBill["Advance"] != null ? oBill["Advance"].ToString() : string.Empty; string sTotalReceivable = oBill["TotalReceivable"] != null ? oBill["TotalReceivable"].ToString() : string.Empty; string sCurrency = oBill["Currency"] != null ? oBill["Currency"].ToString() : string.Empty; string sWeight = oBill["Weight"] != null ? oBill["Weight"].ToString() : string.Empty; string sVolume = oBill["Volume"] != null ? oBill["Volume"].ToString() : string.Empty; string sNumber = oBill["Number"] != null ? oBill["Number"].ToString() : string.Empty; string sUnit = oBill["Unit"] != null ? oBill["Unit"].ToString() : string.Empty; string sContactorName = oBill["ContactorName"] != null ? oBill["ContactorName"].ToString() : string.Empty; string sTelephone = oBill["Telephone"] != null ? oBill["Telephone"].ToString() : string.Empty; string sMemo = oBill["Memo"] != null ? oBill["Memo"].ToString() : string.Empty; var ReturnType = oBill[@"IsRetn"] != null && oBill[@"IsRetn"].ToString() == @"Y"; var sPARM3 = @""; var sPARM4 = @""; var sPARM7 = oExhibition.Exhibitioname_TW + ExhibitionHelper.GetExhibitioImportComment(false, ReturnType); var sPARM14 = @""; var sPARM16 = @""; var iPARM18 = double.Parse(sTaxSum); var iPARM19 = double.Parse(sAmountTaxSum); var iPARM20 = double.Parse(sAdvance); var iPARM21 = double.Parse(sTotalReceivable); var sPARM27 = @""; var sPARM29 = ExhibitionHelper.GetEnglishName(i_crm.USERID); var sPARM30 = sCurrency; if (!string.IsNullOrEmpty(sWeight)) { sPARM16 = sWeight + @"KG"; } if (!string.IsNullOrEmpty(sVolume)) { sPARM16 = sPARM16 == @"" ? sVolume + @"CBM" : sPARM16 + @" / " + sVolume + @"CBM"; } if (!string.IsNullOrEmpty(sNumber)) { sPARM14 = sNumber + sUnit; } if (!string.IsNullOrEmpty(sContactorName)) { sPARM3 = sContactorName; } if (!string.IsNullOrEmpty(sTelephone)) { sPARM4 = sTelephone; } if (!string.IsNullOrEmpty(sMemo)) { sPARM27 = System.Security.SecurityElement.Escape(sMemo); } if (bTWCurrency) { iPARM17 = ExhibitionHelper.Round(iPARM17, 0); iPARM18 = ExhibitionHelper.Round(iPARM18, 0); iPARM19 = ExhibitionHelper.Round(iPARM19, 0); iPARM20 = ExhibitionHelper.Round(iPARM20, 0); iPARM21 = ExhibitionHelper.Round(iPARM21, 0); } else { sPARM7 = oExhibition.Exhibitioname_EN + ExhibitionHelper.GetExhibitioImportComment(true, ReturnType); } if (bTW) { var member = db.Queryable().Single(x => x.OrgID == i_crm.ORIGID && x.MemberID == i_crm.USERID); sPARM29 = member.MemberName; } ExhibitionHelper.RenderMemo(body, sPARM27); var sShipAndVoyage = oOpm.ShipAndVoyage ?? @""; var sBillLadNO = oOpm.BillLadNO ?? @""; var sBillLadNOSub = oOpm.BillLadNOSub ?? @""; var sShipmentPort = oOpm.ShipmentPort ?? @""; var sDestinationPort = oOpm.DestinationPort ?? @""; string sIsRetn = oBill["IsRetn"] != null ? oBill["IsRetn"].ToString() : string.Empty; string sReImportNum = oBill["ReImportNum"] != null ? oBill["ReImportNum"].ToString() : string.Empty; if (sIsRetn == "Y" && !string.IsNullOrEmpty(sReImportNum)) { var iReImportNum = (int)oBill[@"ReImportNum"]; var iIndex = 1; var saReImports = (JArray)JsonConvert.DeserializeObject(oOpm.ReImports); foreach (JObject jo in saReImports) { if (iIndex == iReImportNum) { var oReImportData = (JObject)jo[@"ReImportData"]; sShipAndVoyage = oReImportData["FlightInformation"] != null ? oReImportData["FlightInformation"].ToString() : string.Empty; //航班欄位 sBillLadNO = oReImportData["BillLadNO"] != null ? oReImportData["BillLadNO"].ToString() : string.Empty; sBillLadNOSub = oReImportData["BillLadNOSub"] != null ? oReImportData["BillLadNOSub"].ToString() : string.Empty; sShipmentPort = oReImportData["DestinationPort"] != null ? oReImportData["DestinationPort"].ToString() : string.Empty; sDestinationPort = oReImportData["ReShipmentPort"] != null ? oReImportData["ReShipmentPort"].ToString() : string.Empty; break; } iIndex++; } } string sBillCheckDate = oBill["BillCheckDate"] != null ? oBill["BillCheckDate"].ToString() : string.Empty; var BillCheckDate = string.IsNullOrEmpty(sBillCheckDate) ? "" : Convert.ToDateTime(sBillCheckDate).ToString(@"yyyy/MM/dd"); var sBody = body.InnerXml .Replace(@"[PARM1]", string.IsNullOrEmpty(oPayer.CustomerCName) ? Common.EncodeEscapeChar(oPayer.CustomerEName) : Common.EncodeEscapeChar(oPayer.CustomerCName)) .Replace(@"[PARM2]", ExhibitionHelper.GetBillAddress(oPayer)) .Replace(@"[PARM3]", Common.EncodeEscapeChar(sPARM3)) .Replace(@"[PARM4]", Common.EncodeEscapeChar(sPARM4)) .Replace(@"[PARM5]", Common.EncodeEscapeChar(oPayer.FAX ?? @"")) .Replace(@"[PARM6]", Common.EncodeEscapeChar(oPayer.UniCode ?? @"")) .Replace(@"[PARM7]", Common.EncodeEscapeChar(sPARM7)) .Replace(@"[PARM8]", sBillNO) .Replace(@"[PARM9]", BillCheckDate) .Replace(@"[PARM10]", Common.EncodeEscapeChar(sShipAndVoyage)) .Replace(@"[PARM11]", Common.EncodeEscapeChar(sBillLadNO)) .Replace(@"[PARM12]", Common.EncodeEscapeChar(sShipmentPort)) .Replace(@"[PARM13]", Common.EncodeEscapeChar(sDestinationPort)) .Replace(@"[PARM14]", Common.EncodeEscapeChar(sPARM14)) .Replace(@"[PARM16]", Common.EncodeEscapeChar(sPARM16)) .Replace(@"[PARM17]", bTWCurrency ? $@"{iPARM17:N0}" : $@"{iPARM17:N2}") .Replace(@"[PARM18]", bTWCurrency ? $@"{iPARM18:N0}" : $@"{iPARM18:N2}") .Replace(@"[PARM19]", bTWCurrency ? $@"{iPARM19:N0}" : $@"{iPARM19:N2}") .Replace(@"[PARM20]", bTWCurrency ? $@"{iPARM20:N0}" : $@"{iPARM20:N2}") .Replace(@"[PARM21]", bTWCurrency ? $@"{iPARM21:N0}" : $@"{iPARM21:N2}") .Replace(@"[PARM22]", Common.EncodeEscapeChar(sPayDateText)) .Replace(@"[PARM27]", Common.EncodeEscapeChar(sPARM27)) .Replace(@"[PARM28]", Common.EncodeEscapeChar(sBillLadNOSub)) .Replace(@"[PARM29]", Common.EncodeEscapeChar(sPARM29)) .Replace(@"[PARM30]", Common.EncodeEscapeChar(sPARM30)); foreach (JObject jo in JTmpKeys) { string sTempKey = jo["TemplKey"] != null ? jo["TemplKey"].ToString() : string.Empty; string sTemplKeyValue = jo["TemplKeyValue"] != null ? jo["TemplKeyValue"].ToString() : string.Empty; if (!string.IsNullOrEmpty(sTempKey)) { var Value = Common.EncodeEscapeChar(sTemplKeyValue); var Key = sTempKey; if (Key.Contains("PARM") && WatermarkInfo.Item1) { Value = ""; } sBody = sBody.Replace(Key, Value); } } doc.MainDocumentPart.Document.Body.InnerXml = sBody; doc.MainDocumentPart.Document.Save(); if (WatermarkInfo.Item1) { Common.WordAddWatermartText(doc, WatermarkInfo.Item2); } } if (File.Exists(sOutPut)) { File.Delete(sOutPut); } if (sAction.StartsWith(@"Print")) { sOutPut = sOutPut.Replace(@"docx", @"pdf"); var bOk = Common.WordToPDF(sTempFile, sOutPut); if (!bOk) { sOutPut = @""; } } else { File.Copy(sTempFile, sOutPut); } Thread.Sleep(500); File.Delete(sTempFile); //刪除臨時文件 sOutPut = sOutPut.Replace(sBase, @""); } while (false); rm = new SuccessResponseMessage(null, i_crm); rm.DATA.Add(BLWording.REL, sOutPut); } catch (Exception ex) { sMsg = Util.GetLastExceptionMsg(ex); LogAndSendEmail(sMsg + @"Param:" + JsonToString(i_crm), ex, i_crm.ORIGID, i_crm.USERID, nameof(ExhibitionImport_UpdService), @"進口", @"PrintBill(進口帳單列印下載)", @"", @"", @""); } finally { if (null != sMsg) { rm = new ErrorResponseMessage(sMsg, i_crm); } Logger.Debug(@"ExhibitionImport_UpdService.PrintBill Debug(Param:" + JsonToString(i_crm) + @";Response:" + JsonToString(rm) + @")------------------"); } return rm; } #endregion 進口帳單列印下載 #region 進口收據列印下載 /// /// 進口收據列印下載 /// /// todo: describe i_crm parameter on PrintReceipt /// public ResponseMessage PrintReceipt(RequestMessage i_crm) { ResponseMessage rm = null; string sMsg = null; var db = SugarBase.GetIntance(); var sOutPut = Common.ConfigGetValue(@"", @"OutFilesPath"); try { do { var sImportBillNO = _fetchString(i_crm, OTB_OPM_ImportExhibition.CN_IMPORTBILLNO); var sTemplID = _fetchString(i_crm, OTB_SYS_OfficeTemplate.CN_TEMPLID); var sBill = _fetchString(i_crm, @"Bill"); var sAction = _fetchString(i_crm, @"Action"); var sdb = new SimpleClient(db); var oOpm = sdb.GetById(sImportBillNO); if (oOpm == null) { sMsg = @"系統找不到對應的基本資料,請核查!"; break; } var oTempl = db.Queryable().Single(it => it.OrgID == i_crm.ORIGID && it.TemplID == sTemplID); if (oTempl == null) { sMsg = @"請檢查模版設定"; break; } var oFile = db.Queryable() .Single(it => it.OrgID == i_crm.ORIGID && it.ParentID == oTempl.FileID); if (oFile == null) { sMsg = @"系統找不到對應的帳單模版"; break; } var oBill = (JObject)JsonConvert.DeserializeObject(sBill); var WatermarkInfo = Common.GetWatermarkInfo(oBill[@"AuditVal"]?.ToString(), sTemplID, i_crm.ORIGID); var bTWCurrency = oBill[@"Currency"].ToString() == @"NTD"; var oPayer = new OTB_CRM_Customers(); if (!string.IsNullOrEmpty(oBill[@"Payer"].ToString())) { oPayer = db.Queryable().Single(it => it.guid == oBill[@"Payer"].ToString()); if (oPayer == null) { sMsg = @"系統找不到付款人資訊"; break; } } var sTempPath = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, oFile.FilePath);//Word模版路徑 var sBase = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, @""); sOutPut = sBase + sOutPut; Common.FnCreateDir(sOutPut);//如果不存在就創建文件夾 var sDocxName = @"Receipt-" + oBill[@"BillNO"]; //建立臨時文件 var sTempFile = Path.GetTempPath() + sDocxName + @".docx"; sOutPut += sDocxName + @".docx"; if (File.Exists(sTempFile)) { File.Delete(sTempFile); } File.Copy(sTempPath, sTempFile); var JTmpKeys = (JArray)JsonConvert.DeserializeObject(oTempl.TemplKeys); double iAcountAll = 0; using (WordprocessingDocument doc = WordprocessingDocument.Open(sTempFile, true))//顯示Word { var body = doc.MainDocumentPart.Document.Body; var jaFeeItems = (JArray)JsonConvert.DeserializeObject(oBill[@"FeeItems"].ToString()); //查找:獲取第三個表格 var table = body.Elements
().ElementAt(3); if (jaFeeItems.Count > 0) { var jaFeeItems_NoTax = new JArray(); var iInsertRow = 5; foreach (JObject jo in jaFeeItems) { if (jo[@"FinancialTaxRate"].ToString().Replace(@"%", @"").Trim() == @"0") { jaFeeItems_NoTax.Add(jo); } } if (jaFeeItems_NoTax.Count > 0) { var jaFeeItems_NoTaxSorted = new JArray(jaFeeItems_NoTax.OrderBy(p => p[@"OrderBy"])); foreach (JObject jo in jaFeeItems_NoTaxSorted) { var trow_First = table.Elements().ElementAt(1);//費用明細第一行 var trow_Item = table.Elements().ElementAt(2).Clone() as TableRow;//費用明細行 if (iInsertRow == 5) { for (int i = 0; i < 5; i++) { var tcell = trow_First.Elements().ElementAt(i); var tmpPa = tcell.Elements().FirstOrDefault(); var tmpRun = tmpPa.Elements().FirstOrDefault(); var tmpText = tmpRun.Elements().FirstOrDefault(); switch (i) { case 0: var sRemark = jo[@"Memo"] == null ? @"" : jo[@"Memo"].ToString(); tmpText.Text = jo[@"FinancialCode"].ToString() == @"TE001" ? (sRemark == @"" ? jo[@"FinancialCostStatement"].ToString() : sRemark) : jo[@"FinancialCostStatement"] + (sRemark == @"" ? @"" : @"(" + sRemark + @")"); break; case 1: tmpText.Text = jo[@"FinancialCurrency"].ToString(); break; case 2: tmpText.Text = jo[@"FinancialExchangeRate"].ToString(); break; case 3: var sFinancialAmount = jo[@"FinancialTWAmount"].ToString(); tmpText.Text = $@"{Convert.ToDecimal(sFinancialAmount.Trim() == @"" ? @"0" : sFinancialAmount):N}"; break; case 4: var sFinancialAmount4 = jo[@"FinancialTWAmount"].ToString(); tmpText.Text = $@"{Convert.ToDecimal(sFinancialAmount4.Trim() == @"" ? @"0" : sFinancialAmount4):N}"; break; default: break; } } } else { for (int i = 0; i < 5; i++) { var tcell = trow_Item.Elements().ElementAt(i); var tmpPa = tcell.Elements().FirstOrDefault(); var tmpRun = tmpPa.Elements().FirstOrDefault(); var tmpText = tmpRun.Elements().FirstOrDefault(); switch (i) { case 0: var sRemark = jo[@"Memo"] == null ? @"" : jo[@"Memo"].ToString(); tmpText.Text = jo[@"FinancialCode"].ToString() == @"TE001" ? (sRemark == @"" ? jo[@"FinancialCostStatement"].ToString() : sRemark) : jo[@"FinancialCostStatement"] + (sRemark == @"" ? @"" : @"(" + sRemark + @")"); break; case 1: tmpText.Text = jo[@"FinancialCurrency"].ToString(); break; case 2: tmpText.Text = jo[@"FinancialExchangeRate"].ToString(); break; case 3: var sFinancialAmount = jo[@"FinancialTWAmount"].ToString(); tmpText.Text = $@"{Convert.ToDecimal(sFinancialAmount.Trim() == @"" ? @"0" : sFinancialAmount):N}"; break; case 4: var sFinancialAmount4 = jo[@"FinancialTWAmount"].ToString(); tmpText.Text = $@"{Convert.ToDecimal(sFinancialAmount4.Trim() == @"" ? @"0" : sFinancialAmount4):N}"; break; default: break; } } } iAcountAll += double.Parse(jo[@"FinancialTWAmount"].ToString()); //插入一行 table.InsertAt(trow_Item, iInsertRow); iInsertRow++; } table.Elements().ElementAt(2).Remove(); table.Elements().ElementAt(2).Remove(); } else { table.Elements().ElementAt(1).Remove(); table.Elements().ElementAt(1).Remove(); } //刪除模板行 } var oExhibition = db.Queryable().Single(it => it.SN == oOpm.ExhibitionNO.ObjToInt()); if (oExhibition == null) { oExhibition = new OTB_OPM_Exhibition(); } var sPARM1 = string.IsNullOrEmpty(oPayer.CustomerCName) ? oPayer.CustomerEName : oPayer.CustomerCName; var sPARM2 = oBill[@"ReceiptDate"].ToString(); var sPARM3 = oPayer.UniCode; var sPARM4 = oBill[@"ReceiptNumber"].ToString(); var sPARM5 = ExhibitionHelper.GetBillAddress(oPayer); var sPARM6 = oExhibition.Exhibitioname_TW; var sPARM7 = oBill[@"TaxSum"].ToString(); var sPARM8 = @""; var sPARM9 = oBill[@"BillNO"].ToString(); var iPARM7 = iAcountAll; if (sPARM2 != @"") { sPARM2 = Common.DateToTw(sPARM2); var saPARM2 = sPARM2.Split('/'); sPARM2 = saPARM2[0] + @"年" + saPARM2[1] + @"月" + saPARM2[2] + @"日"; } iPARM7 = ExhibitionHelper.Round(iPARM7, 0); sPARM8 = Common.MoneyToUpper(iPARM7.ToString()); sPARM7 = $@"{iPARM7:N0}"; var sBody = body.InnerXml .Replace(@"[PARM1]", Common.EncodeEscapeChar(sPARM1)) .Replace(@"[PARM2]", Common.EncodeEscapeChar(sPARM2)) .Replace(@"[PARM3]", Common.EncodeEscapeChar(sPARM3)) .Replace(@"[PARM4]", Common.EncodeEscapeChar(sPARM4)) .Replace(@"[PARM5]", Common.EncodeEscapeChar(sPARM5)) .Replace(@"[PARM6]", Common.EncodeEscapeChar(sPARM6)) .Replace(@"[PARM7]", Common.EncodeEscapeChar(sPARM7)) .Replace(@"[PARM8]", Common.EncodeEscapeChar(sPARM8)) .Replace(@"[PARM9]", Common.EncodeEscapeChar(sPARM9)); foreach (JObject jo in JTmpKeys) { if (jo.Property(@"TemplKey") != null && jo[@"TemplKey"].ToString() != @"") { sBody = sBody.Replace(jo[@"TemplKey"].ToString(), Common.EncodeEscapeChar(jo[@"TemplKeyValue"].ToString())); } } doc.MainDocumentPart.Document.Body.InnerXml = sBody + sBody; doc.MainDocumentPart.Document.Save(); if (WatermarkInfo.Item1) { Common.WordAddWatermartText(doc, WatermarkInfo.Item2); } } if (File.Exists(sOutPut)) { File.Delete(sOutPut); } if (sAction.StartsWith(@"Print")) { sOutPut = sOutPut.Replace(@"docx", @"pdf"); var bOk = Common.WordToPDF(sTempFile, sOutPut); if (!bOk) { sOutPut = @""; } } else { File.Copy(sTempFile, sOutPut); } Thread.Sleep(500); File.Delete(sTempFile); //刪除臨時文件 sOutPut = sOutPut.Replace(sBase, @""); rm = new SuccessResponseMessage(null, i_crm); rm.DATA.Add(BLWording.REL, sOutPut); } while (false); } catch (Exception ex) { sMsg = Util.GetLastExceptionMsg(ex); LogAndSendEmail(sMsg + @"Param:" + JsonToString(i_crm), ex, i_crm.ORIGID, i_crm.USERID, nameof(ExhibitionImport_UpdService), @"進口", @"PrintReceipt(進口收據列印下載)", @"", @"", @""); } finally { if (null != sMsg) { rm = new ErrorResponseMessage(sMsg, i_crm); } Logger.Debug(@"ExhibitionImport_UpdService.PrintReceipt Debug(Param:" + JsonToString(i_crm) + @";Response:" + JsonToString(rm) + @")------------------"); } return rm; } #endregion 進口收據列印下載 #region 進口(退運)報價和預估成本提交審核 /// /// 進口(退運)報價和預估成本提交審核 /// /// todo: describe i_crm parameter on ReturnToAuditForQuote /// public ResponseMessage ReturnToAuditForQuote(RequestMessage i_crm) { ResponseMessage rm = null; string sMsg = null; try { rm = SugarBase.ExecTran(db => { do { var data = i_crm.DATA as Dictionary; var sImportBillNO = _fetchString(i_crm, OTB_OPM_ImportExhibition.CN_IMPORTBILLNO); var sSourceID = _fetchString(i_crm, @"SourceID"); var sIndex = _fetchString(i_crm, @"Index"); var sdb = new SimpleClient(db); var oOpm = sdb.GetById(sImportBillNO); if (oOpm == null) { sMsg = @"系統找不到對應的基本資料,請核查!"; break; } var sTitle = @"「進口」" + oOpm.ImportBillName + @"(" + oOpm.RefNumber + @")" + @"「退運" + sIndex + @"報價單/預估成本審核」"; if (i_crm.LANG == @"zh") { sTitle = ChineseStringUtility.ToSimplified(sTitle); } //更新基本資料 var oOpmUpd = new OTB_OPM_ImportExhibition { ReturnBills = data[OTB_OPM_ImportExhibition.CN_RETURNBILLS].ToString(), ModifyUser = i_crm.USERID, ModifyDate = DateTime.Now }; db.Updateable(oOpmUpd).UpdateColumns(it => new { it.ReturnBills, it.ModifyUser, it.ModifyDate }) .Where(it => it.ImportBillNO == sImportBillNO).ExecuteCommand(); //更新代辦 SYS.Task_QryService.TaskStatusUpd(db, i_crm.ORIGID, sSourceID); var saSupervisor = new List(); var member = db.Queryable().Single(x => x.OrgID == i_crm.ORIGID && x.MemberID == i_crm.USERID); if (member.MemberID != null) { if (!string.IsNullOrEmpty(member.ImmediateSupervisor)) { saSupervisor.Add(member.ImmediateSupervisor); } var oDept = db.Queryable().Single(it => it.OrgID == i_crm.ORIGID && it.DepartmentID == member.DepartmentID); if (oDept != null) { saSupervisor.Add(oDept.ChiefOfDepartmentID); } } var sBillAuditor = Common.GetSystemSetting(db, i_crm.ORIGID, WebAppGlobalConstWord.BILLAUDITOR); if (sBillAuditor != @"") { var saBillAuditor = sBillAuditor.Split(new string[] { @";", @",", @",", @"|" }, StringSplitOptions.RemoveEmptyEntries); foreach (string auditor in saBillAuditor) { saSupervisor.Add(auditor); } } saSupervisor = saSupervisor.Distinct().ToList(); var listTips = new List(); var listTask = new List(); if (saSupervisor.Count > 0) { foreach (string supervisor in saSupervisor) { //添加提醒消息 var oTipsAdd = SYS.Task_QryService.TipsAdd(i_crm, sTitle, supervisor, i_crm.CUSTOMDATA[@"program_id"] + @"|?Action=Upd&GoTab=9&ImportBillNO=" + oOpm.ImportBillNO, WebAppGlobalConstWord.BELL); listTips.Add(oTipsAdd); //添加代辦 var oTaskAdd = SYS.Task_QryService.TaskAdd(i_crm, sSourceID, supervisor, sTitle, @"ExhibitionImport_Qry", @"?Action=Upd&GoTab=9&ImportBillNO=" + oOpm.ImportBillNO); listTask.Add(oTaskAdd); } } else { sMsg = @"您沒有對應的直屬主管或部門主管,請核查!"; break; } if (listTips.Count > 0) { db.Insertable(listTips).ExecuteCommand(); } if (listTask.Count > 0) { db.Insertable(listTask).ExecuteCommand(); } rm = new SuccessResponseMessage(null, i_crm); rm.DATA.Add(BLWording.REL, saSupervisor); } while (false); return rm; }); } catch (Exception ex) { sMsg = Util.GetLastExceptionMsg(ex); LogAndSendEmail(sMsg + @"Param:" + JsonToString(i_crm), ex, i_crm.ORIGID, i_crm.USERID, nameof(ExhibitionImport_UpdService), @"進口", @"ReturnToAuditForQuote(報價和預估成本提交審核)", @"", @"", @""); } finally { if (null != sMsg) { rm = new ErrorResponseMessage(sMsg, i_crm); } Logger.Debug(@"ExhibitionImport_UpdService.ReturnToAuditForQuote Debug(Param:" + JsonToString(i_crm) + @";Response:" + JsonToString(rm) + @")------------------"); } return rm; } #endregion 進口(退運)報價和預估成本提交審核 #region 進口(退運)報價和預估成本(主管)審核 /// /// 進口(退運)報價和預估成本(主管)審核 /// /// todo: describe i_crm parameter on ReturnAuditForQuote /// public ResponseMessage ReturnAuditForQuote(RequestMessage i_crm) { ResponseMessage rm = null; string sMsg = null; try { rm = SugarBase.ExecTran(db => { do { var data = i_crm.DATA as Dictionary; var sImportBillNO = _fetchString(i_crm, OTB_OPM_ImportExhibition.CN_IMPORTBILLNO); var sAuditVal = _fetchString(i_crm, @"AuditVal"); var sSourceID = _fetchString(i_crm, @"SourceID"); var sIndex = _fetchString(i_crm, @"Index"); var TipsType = WebAppGlobalConstWord.CHECK; var sdb = new SimpleClient(db); var oOpm = sdb.GetById(sImportBillNO); if (oOpm == null) { sMsg = @"系統找不到對應的基本資料,請核查!"; break; } var member = db.Queryable().Single(x => x.OrgID == i_crm.ORIGID && x.MemberID == i_crm.USERID); var sTitle = member.MemberName + @"審核了您的「進口」活動名稱:" + oOpm.ImportBillName + @")的「退運" + sIndex + @"報價單/預估成本審核」"; //更新報價和預估成本 var oOpmUpd = new OTB_OPM_ImportExhibition { ReturnBills = data[OTB_OPM_ImportExhibition.CN_RETURNBILLS].ToString(), ModifyUser = i_crm.USERID, ModifyDate = DateTime.Now }; db.Updateable(oOpmUpd).UpdateColumns(it => new { it.ReturnBills, it.ModifyUser, it.ModifyDate }) .Where(it => it.ImportBillNO == sImportBillNO).ExecuteCommand(); //更新代辦 SYS.Task_QryService.TaskStatusUpd(db, i_crm.ORIGID, sSourceID); if (sAuditVal == @"2") { sTitle += @",審核結果:通過"; } else { sTitle += @",審核結果:不通過"; TipsType = WebAppGlobalConstWord.FAIL; } if (i_crm.LANG == @"zh") { sTitle = ChineseStringUtility.ToSimplified(sTitle); } //添加提醒消息 var oTipsAdd = SYS.Task_QryService.TipsAdd(i_crm, sTitle, oOpm.ResponsiblePerson, i_crm.CUSTOMDATA[@"program_id"] + @"|?Action=Upd&GoTab=9&ImportBillNO=" + oOpm.ImportBillNO, TipsType); db.Insertable(oTipsAdd).ExecuteCommand(); if (sAuditVal != @"2") { //添加代辦 var oTaskAdd = SYS.Task_QryService.TaskAdd(i_crm, sSourceID, oOpm.ResponsiblePerson, sTitle, @"ExhibitionImport_Qry", @"?Action=Upd&GoTab=9&ImportBillNO=" + oOpm.ImportBillNO); db.Insertable(oTaskAdd).ExecuteCommand(); } rm = new SuccessResponseMessage(null, i_crm); rm.DATA.Add(BLWording.REL, oOpm.ResponsiblePerson); } while (false); return rm; }); } catch (Exception ex) { sMsg = Util.GetLastExceptionMsg(ex); LogAndSendEmail(sMsg + @"Param:" + JsonToString(i_crm), ex, i_crm.ORIGID, i_crm.USERID, nameof(ExhibitionImport_UpdService), @"進口", @"ReturnAuditForQuote(進口(退運)報價和預估成本(主管)審核)", @"", @"", @""); } finally { if (null != sMsg) { rm = new ErrorResponseMessage(sMsg, i_crm); } Logger.Debug(@"ExhibitionImport_UpdService.ReturnAuditForQuote Debug(Param:" + JsonToString(i_crm) + @";Response:" + JsonToString(rm) + @")------------------"); } return rm; } #endregion 進口(退運)報價和預估成本(主管)審核 #region 進口(退運)帳單提交審核 /// /// 進口(退運)帳單提交審核 /// /// todo: describe i_crm parameter on ReturnToAuditForBill /// public ResponseMessage ReturnToAuditForBill(RequestMessage i_crm) { ResponseMessage rm = null; string sMsg = null; try { rm = SugarBase.ExecTran(db => { do { var data = i_crm.DATA as Dictionary; var oBill = (JObject)data[@"Bill"]; var sImportBillNO = _fetchString(i_crm, OTB_OPM_ImportExhibition.CN_IMPORTBILLNO); var sSourceID = oBill[EasyNetGlobalConstWord.GUID].ToString(); var sBillNO = oBill[@"BillNO"].ToString(); var sdb = new SimpleClient(db); var oOpm = sdb.GetById(sImportBillNO); if (oOpm == null) { sMsg = @"系統找不到對應的基本資料,請核查!"; break; } var sTitle = @"「進口」" + oOpm.ImportBillName + @"退運帳單(" + sBillNO + @")" + @"審核"; if (i_crm.LANG == @"zh") { sTitle = ChineseStringUtility.ToSimplified(sTitle); } //更新報價和預估成本 var oOpmUpd = new OTB_OPM_ImportExhibition { ReturnBills = data[OTB_OPM_ImportExhibition.CN_RETURNBILLS].ToString(), ModifyUser = i_crm.USERID, ModifyDate = DateTime.Now }; db.Updateable(oOpmUpd).UpdateColumns(it => new { it.ReturnBills, it.ModifyUser, it.ModifyDate }) .Where(it => it.ImportBillNO == sImportBillNO).ExecuteCommand(); //更新代辦 SYS.Task_QryService.TaskStatusUpd(db, i_crm.ORIGID, sSourceID); var saSupervisor = new List(); var member = db.Queryable().Single(x => x.OrgID == i_crm.ORIGID && x.MemberID == i_crm.USERID); if (member.MemberID != null) { if (!string.IsNullOrEmpty(member.ImmediateSupervisor)) { saSupervisor.Add(member.ImmediateSupervisor); } var oDept = db.Queryable().Single(it => it.OrgID == i_crm.ORIGID && it.DepartmentID == member.DepartmentID); if (oDept != null) { saSupervisor.Add(oDept.ChiefOfDepartmentID); } } var sBillAuditor = Common.GetSystemSetting(db, i_crm.ORIGID, WebAppGlobalConstWord.BILLAUDITOR); if (sBillAuditor != @"") { var saBillAuditor = sBillAuditor.Split(new string[] { @";", @",", @",", @"|" }, StringSplitOptions.RemoveEmptyEntries); foreach (string auditor in saBillAuditor) { saSupervisor.Add(auditor); } } saSupervisor = saSupervisor.Distinct().ToList(); var listTips = new List(); var listTask = new List(); if (saSupervisor.Count > 0) { foreach (string supervisor in saSupervisor) { //添加提醒消息 var oTipsAdd = SYS.Task_QryService.TipsAdd(i_crm, sTitle, supervisor, i_crm.CUSTOMDATA[@"program_id"] + @"|?Action=Upd&GoTab=9&ImportBillNO=" + oOpm.ImportBillNO + @"&BillNO=" + sBillNO, WebAppGlobalConstWord.BELL); listTips.Add(oTipsAdd); //添加代辦 var oTaskAdd = SYS.Task_QryService.TaskAdd(i_crm, sSourceID, supervisor, sTitle, @"ExhibitionImport_Qry", @"?Action=Upd&GoTab=9&ImportBillNO=" + oOpm.ImportBillNO + @"&BillNO=" + sBillNO); listTask.Add(oTaskAdd); } } else { sMsg = @"您沒有對應的直屬主管或部門主管,請核查!"; break; } if (listTips.Count > 0) { db.Insertable(listTips).ExecuteCommand(); } if (listTask.Count > 0) { db.Insertable(listTask).ExecuteCommand(); } rm = new SuccessResponseMessage(null, i_crm); rm.DATA.Add(BLWording.REL, saSupervisor); } while (false); return rm; }); } catch (Exception ex) { sMsg = Util.GetLastExceptionMsg(ex); LogAndSendEmail(sMsg + @"Param:" + JsonToString(i_crm), ex, i_crm.ORIGID, i_crm.USERID, nameof(ExhibitionImport_UpdService), @"進口", @"ReturnToAuditForBill(進口(退運)帳單提交審核)", @"", @"", @""); } finally { if (null != sMsg) { rm = new ErrorResponseMessage(sMsg, i_crm); } Logger.Debug(@"ExhibitionImport_UpdService.ReturnToAuditForBill Debug(Param:" + JsonToString(i_crm) + @";Response:" + JsonToString(rm) + @")------------------"); } return rm; } #endregion 進口(退運)帳單提交審核 #region 進口(退運)帳單(主管)審核 /// /// 進口(退運)帳單(主管)審核 /// /// todo: describe i_crm parameter on ReturnAuditForBill /// public ResponseMessage ReturnAuditForBill(RequestMessage i_crm) { ResponseMessage rm = null; string sMsg = null; try { rm = SugarBase.ExecTran(db => { do { var data = i_crm.DATA as Dictionary; var oBill = (JObject)data[@"Bill"]; var sImportBillNO = _fetchString(i_crm, OTB_OPM_ImportExhibition.CN_IMPORTBILLNO); var sSourceID = oBill[EasyNetGlobalConstWord.GUID].ToString(); var sBillNO = oBill[@"BillNO"].ToString(); var TipsType = WebAppGlobalConstWord.CHECK; var sdb = new SimpleClient(db); var oOpm = sdb.GetById(sImportBillNO); if (oOpm == null) { sMsg = @"系統找不到對應的基本資料,請核查!"; break; } var member = db.Queryable().Single(x => x.OrgID == i_crm.ORIGID && x.MemberID == i_crm.USERID); var sTitle = member.MemberName + @"審核了您的「進口」(活動名稱:" + oOpm.ImportBillName + @")的「退運帳單(" + sBillNO + @")」"; //更新報價和預估成本 var sAuditVal = oBill[@"AuditVal"].ToString(); if (sAuditVal == @"2") { sTitle += @",審核結果:通過"; } else { sTitle += @",審核結果:不通過"; TipsType = WebAppGlobalConstWord.FAIL; } if (i_crm.LANG == @"zh") { sTitle = ChineseStringUtility.ToSimplified(sTitle); } var oPayer = new OTB_CRM_Customers(); if (!string.IsNullOrEmpty(oBill[@"Payer"].ToString())) { oPayer = db.Queryable().Single(it => it.guid == oBill[@"Payer"].ToString()); if (oPayer == null) { sMsg = @"系統找不到付款人資訊"; break; } } //更新報價和預估成本 var oOpmUpd = new OTB_OPM_ImportExhibition { ReturnBills = data[OTB_OPM_ImportExhibition.CN_RETURNBILLS].ToString(), ModifyUser = i_crm.USERID, ModifyDate = DateTime.Now }; db.Updateable(oOpmUpd).UpdateColumns(it => new { it.ReturnBills, it.ModifyUser, it.ModifyDate }) .Where(it => it.ImportBillNO == sImportBillNO).ExecuteCommand(); //更新代辦 SYS.Task_QryService.TaskStatusUpd(db, i_crm.ORIGID, sSourceID); //添加提醒消息 var oTipsAdd = SYS.Task_QryService.TipsAdd(i_crm, sTitle, oOpm.ResponsiblePerson, i_crm.CUSTOMDATA[@"program_id"] + @"|?Action=Upd&GoTab=9&ImportBillNO=" + oOpm.ImportBillNO + @"&BillNO=" + sBillNO, TipsType); db.Insertable(oTipsAdd).ExecuteCommand(); if (sAuditVal != @"2") { //添加代辦 var oTaskAdd = SYS.Task_QryService.TaskAdd(i_crm, sSourceID, oOpm.ResponsiblePerson, sTitle, @"ExhibitionImport_Qry", @"?Action=Upd&GoTab=9&ImportBillNO=" + oOpm.ImportBillNO + @"&BillNO=" + sBillNO); db.Insertable(oTaskAdd).ExecuteCommand(); } if (sAuditVal == @"2") { var oBillsAdd = new OTB_OPM_Bills { OrgID = i_crm.ORIGID, BillNO = oBill[@"BillNO"].ToString(), //帳款號碼(1) CheckDate = Common.FnToTWDate(oBill[@"BillFirstCheckDate"]),//對帳日期(2) BillType = @"20",//帳別(收付)(3) CustomerCode = oPayer.CustomerNO //客戶供應商代號(4) }; var sResponsiblePerson = oOpm.ResponsiblePerson.Split('.')[0]; oBillsAdd.ResponsiblePersonCode = Common.CutByteString(sResponsiblePerson, 11); //業務員代號(5) oBillsAdd.ResponsiblePersonFullCode = oOpm.ResponsiblePerson; //業務員全代號 oBillsAdd.LastGetBillDate = @""; //最近收付日(6) oBillsAdd.LastGetBillNO = @""; //最近收付單號(7) oBillsAdd.TaxType = decimal.Parse(oBill[@"TaxSum"].ToString().Replace(@",", @"")) > 0 ? @"5" : @"6";//稅別(8) oBillsAdd.NOTaxAmount = oBill[@"AmountSum"].ToString(); //未稅金額(9) oBillsAdd.BillAmount = oBill[@"AmountTaxSum"].ToString(); //帳款金額(10) oBillsAdd.PaymentAmount = @"0"; //收付金額(11) oBillsAdd.Allowance = @"0"; //折讓金額(12) oBillsAdd.DebtAmount = @"0"; //呆帳金額(13) oBillsAdd.ExchangeAmount = @"0"; //匯兌損益金額(14) oBillsAdd.Settle = @"N"; //結清否(15) oBillsAdd.InvoiceStartNumber = @""; //發票號碼(起)(16) oBillsAdd.InvoiceEndNumber = @"";//發票號碼(迄)(17) oBillsAdd.Category = @"";//傳票類別(18) oBillsAdd.OrderNo = @"";//訂單單號(19) oBillsAdd.ClosingNote = @"N"; //結帳註記(20) oBillsAdd.GeneralInvoiceNumber = @""; //立帳總帳傳票號碼(21) oBillsAdd.GeneralSerialNumber = @""; //立帳總帳傳票序號(22) oBillsAdd.Remark1 = @""; //備註一(30C)(23) oBillsAdd.AccountSource = @"0"; //帳款來源(24) oBillsAdd.UpdateDate = @""; //更新日期(25) oBillsAdd.UpdatePersonnel = @""; //更新人員(26) oBillsAdd.DepartmentSiteNumber = oOpm.DepartmentID; //部門\ 工地編號(27) if (!string.IsNullOrWhiteSpace(oOpm.ExhibitionNO)) { var oExhibition = db.Queryable().Single(it => it.SN == oOpm.ExhibitionNO.ObjToInt()); oBillsAdd.ProjectNumber = oExhibition == null ? @"" : oExhibition.ExhibitionCode; //專案\ 項目編號(28) } else { oBillsAdd.ProjectNumber = @""; //專案\ 項目編號(28) } oBillsAdd.TransferBNotes = @""; //轉B 帳註記(29) oBillsAdd.ABNumber = @""; //A|B 帳唯一流水號(30) oBillsAdd.EnterNumber = @""; //進銷單號(31) var sCurrency = oBill[@"Currency"].ToString(); if (i_crm.ORIGID == "SG") { if (sCurrency == "RMB") { sCurrency = ""; } } else { if (sCurrency == "NTD") { sCurrency = ""; } } oBillsAdd.ForeignCurrencyCode = sCurrency; //外幣代號(32) var sExchangeRate = oBill[@"ExchangeRate"].ToString(); oBillsAdd.ExchangeRate = sExchangeRate; //匯率(33) oBillsAdd.ForeignAmount = (decimal.Parse(oBill[@"AmountTaxSum"].ToString()) * decimal.Parse(sExchangeRate == @"" ? @"1" : sExchangeRate)).ToString(); //外幣金額(34) oBillsAdd.PayAmount = @"0"; //收付沖抵金額(35) oBillsAdd.RefundAmount = @"0"; //退款金額(36) oBillsAdd.PaymentTerms = @""; //收付條件(37) oBillsAdd.AccountDate = Common.FnToTWDate(oBill[@"BillFirstCheckDate"]); //帳款日期(38) oBillsAdd.DCreditCardNumber = @""; //預設信用卡號(39) oBillsAdd.ClosingDate = @""; //結帳日期(40) oBillsAdd.CusField1 = @""; //自定義欄位一(41) oBillsAdd.CusField2 = @""; //自定義欄位二(42) oBillsAdd.CusField3 = @""; //自定義欄位三(43) oBillsAdd.CusField4 = @""; //自定義欄位四(44) oBillsAdd.CusField5 = @""; //自定義欄位五(45) oBillsAdd.CusField6 = @"0"; //自定義欄位六(46) oBillsAdd.CusField7 = @"0"; //自定義欄位七(47) oBillsAdd.CusField8 = @"0"; //自定義欄位八(48) oBillsAdd.CusField9 = @"0"; //自定義欄位九(49) oBillsAdd.CusField10 = @"0"; //自定義欄位十(50) oBillsAdd.CusField11 = @""; //自定義欄位十一(51) oBillsAdd.CusField12 = @""; //自定義欄位十二(52) oBillsAdd.Remark2 = @""; //備註二(M)(53) oBillsAdd.TWNOTaxAmount = oBill[@"AmountSum"].ToString(); //台幣未稅金額(54) oBillsAdd.TWAmount = oBill[@"AmountTaxSum"].ToString(); //台幣帳款金額(55) oBillsAdd.CreateUser = i_crm.USERID; oBillsAdd.CreateDate = oBill[@"CreateDate"] == null ? DateTime.Now.ToString(@"yyyy/MM/dd HH:mm:ss") : oBill[@"CreateDate"].ToString(); oBillsAdd.BillFirstCheckDate = oBill[@"BillFirstCheckDate"] == null ? DateTime.Now.ToString(@"yyyy/MM/dd HH:mm:ss") : oBill[@"BillFirstCheckDate"].ToString(); oBillsAdd.Advance = oBill[@"Advance"].ToString(); //預收 oBillsAdd.TaxSum = oBill[@"TaxSum"].ToString(); //稅額 oBillsAdd.TotalReceivable = oBill[@"TotalReceivable"].ToString(); //總應收 oBillsAdd.IsRetn = oBill[@"IsRetn"] == null ? @"N" : oBill[@"IsRetn"].ToString(); //是否為退運 oBillsAdd.Url = i_crm.CUSTOMDATA[@"program_id"] + @"|?Action=Upd&GoTab=9&ImportBillNO=" + oOpm.ImportBillNO + @"&BillNO=" + sBillNO; //Url db.Insertable(oBillsAdd).ExecuteCommand(); } var oLogInfo = new OTB_SYS_LogInfo { OrgID = i_crm.ORIGID, SouseId = sBillNO, LogType = "billnoupdate", LogInfo = data[@"Bill"].ToString(), CreateUser = i_crm.USERID, CreateDate = DateTime.Now, Memo = "「進口(退運)帳單」(主管)審核" }; db.Insertable(oLogInfo).ExecuteCommand(); rm = new SuccessResponseMessage(null, i_crm); rm.DATA.Add(BLWording.REL, oOpm.ResponsiblePerson); } while (false); return rm; }); } catch (Exception ex) { sMsg = Util.GetLastExceptionMsg(ex); LogAndSendEmail(sMsg + @"Param:" + JsonToString(i_crm), ex, i_crm.ORIGID, i_crm.USERID, nameof(ExhibitionImport_UpdService), @"進口", @"ReturnAuditForBill(進口(退運)帳單(主管)審核)", @"", @"", @""); } finally { if (null != sMsg) { rm = new ErrorResponseMessage(sMsg, i_crm); } Logger.Debug(@"ExhibitionImport_UpdService.ReturnAuditForBill Debug(Param:" + JsonToString(i_crm) + @";Response:" + JsonToString(rm) + @")------------------"); } return rm; } #endregion 進口(退運)帳單(主管)審核 #region (會計)取消審核(退運) /// /// (會計)取消審核(退運) /// /// todo: describe i_crm parameter on ReturnCancelAudit /// public ResponseMessage ReturnCancelAudit(RequestMessage i_crm) { ResponseMessage rm = null; string sMsg = null; try { rm = SugarBase.ExecTran(db => { do { var data = i_crm.DATA as Dictionary; var oBill = (JObject)data[@"Bill"]; var sImportBillNO = _fetchString(i_crm, OTB_OPM_ImportExhibition.CN_IMPORTBILLNO); var sBillNO = oBill[@"BillNO"].ToString(); var sSourceID = oBill[EasyNetGlobalConstWord.GUID].ToString(); var sdb = new SimpleClient(db); var oOpm = sdb.GetById(sImportBillNO); if (oOpm == null) { sMsg = @"系統找不到對應的基本資料,請核查!"; break; } var LogData = _fetchString(i_crm, @"LogData"); var LogResult = BillLogs.InsertBillChangeLog(db, LogData, ActionType.取消退運審核, i_crm.ORIGID, i_crm.USERID); if (!LogResult.Item1) { sMsg = LogResult.Item2; break; } var member = db.Queryable().Single(x => x.OrgID == i_crm.ORIGID && x.MemberID == i_crm.USERID); var sTitle = @"會計(" + member.MemberName + @")取消審核了您的「進口」(活動名稱:" + oOpm.ImportBillName + @")的退運帳單(" + sBillNO + @")」"; if (i_crm.LANG == @"zh") { sTitle = ChineseStringUtility.ToSimplified(sTitle); } //更新報價和預估成本 var oOpmUpd = new OTB_OPM_ImportExhibition { ReturnBills = data[OTB_OPM_ImportExhibition.CN_RETURNBILLS].ToString(), ModifyUser = i_crm.USERID, ModifyDate = DateTime.Now }; db.Updateable(oOpmUpd).UpdateColumns(it => new { it.ReturnBills, it.ModifyUser, it.ModifyDate }) .Where(it => it.ImportBillNO == sImportBillNO).ExecuteCommand(); //更新代辦 SYS.Task_QryService.TaskStatusUpd(db, i_crm.ORIGID, sSourceID); //添加提醒消息 var oTipsAdd = SYS.Task_QryService.TipsAdd(i_crm, sTitle, oOpm.ResponsiblePerson, i_crm.CUSTOMDATA[@"program_id"] + @"|?Action=Upd&GoTab=9&ImportBillNO=" + oOpm.ImportBillNO + @"&BillNO=" + sBillNO, WebAppGlobalConstWord.BELL); db.Insertable(oTipsAdd).ExecuteCommand(); rm = new SuccessResponseMessage(null, i_crm); rm.DATA.Add(BLWording.REL, oOpm.ResponsiblePerson); } while (false); return rm; }); } catch (Exception ex) { sMsg = Util.GetLastExceptionMsg(ex); LogAndSendEmail(sMsg + @"Param:" + JsonToString(i_crm), ex, i_crm.ORIGID, i_crm.USERID, nameof(ExhibitionImport_UpdService), @"進口", @"ReturnCancelAudit((會計)取消審核(退運))", @"", @"", @""); } finally { if (null != sMsg) { rm = new ErrorResponseMessage(sMsg, i_crm); } Logger.Debug(@"ExhibitionImport_UpdService.ReturnCancelAudit Debug(Param:" + JsonToString(i_crm) + @";Response:" + JsonToString(rm) + @")------------------"); } return rm; } #endregion (會計)取消審核(退運) #region (會計)銷帳(退運) /// /// (會計)銷帳(退運) /// /// todo: describe i_crm parameter on ReturnWriteOff /// public ResponseMessage ReturnWriteOff(RequestMessage i_crm) { ResponseMessage rm = null; string sMsg = null; try { rm = SugarBase.ExecTran(db => { do { var data = i_crm.DATA as Dictionary; var oBill = (JObject)data[@"Bill"]; var sImportBillNO = _fetchString(i_crm, OTB_OPM_ImportExhibition.CN_IMPORTBILLNO); var sBillNO = oBill[@"BillNO"].ToString(); var sdb = new SimpleClient(db); var oOpm = sdb.GetById(sImportBillNO); if (oOpm == null) { sMsg = @"系統找不到對應的基本資料,請核查!"; break; } var member = db.Queryable().Single(x => x.OrgID == i_crm.ORIGID && x.MemberID == i_crm.USERID); var sTitle = @"會計(" + member.MemberName + @")對您的「進口」(活動名稱:" + oOpm.ImportBillName + @")的退運帳單(" + sBillNO + @")進行了銷帳"; if (i_crm.LANG == @"zh") { sTitle = ChineseStringUtility.ToSimplified(sTitle); } //更新報價和預估成本 var oOpmUpd = new OTB_OPM_ImportExhibition { ReturnBills = data[OTB_OPM_ImportExhibition.CN_RETURNBILLS].ToString(), ModifyUser = i_crm.USERID, ModifyDate = DateTime.Now }; db.Updateable(oOpmUpd).UpdateColumns(it => new { it.ReturnBills, it.ModifyUser, it.ModifyDate }) .Where(it => it.ImportBillNO == sImportBillNO).ExecuteCommand(); //添加提醒消息 var oTipsAdd = SYS.Task_QryService.TipsAdd(i_crm, sTitle, oOpm.ResponsiblePerson, i_crm.CUSTOMDATA[@"program_id"] + @"|?Action=Upd&GoTab=9&ImportBillNO=" + oOpm.ImportBillNO + @"&BillNO=" + sBillNO, WebAppGlobalConstWord.BELL); db.Insertable(oTipsAdd).ExecuteCommand(); db.Ado.CommitTran(); rm = new SuccessResponseMessage(null, i_crm); rm.DATA.Add(BLWording.REL, oOpm.ResponsiblePerson); } while (false); return rm; }); } catch (Exception ex) { sMsg = Util.GetLastExceptionMsg(ex); LogAndSendEmail(sMsg + @"Param:" + JsonToString(i_crm), ex, i_crm.ORIGID, i_crm.USERID, nameof(ExhibitionImport_UpdService), @"進口", @"ReturnWriteOff((會計)銷帳(退運))", @"", @"", @""); } finally { if (null != sMsg) { rm = new ErrorResponseMessage(sMsg, i_crm); } Logger.Debug(@"ExhibitionImport_UpdService.ReturnWriteOff Debug(Param:" + JsonToString(i_crm) + @";Response:" + JsonToString(rm) + @")------------------"); } return rm; } #endregion (會計)銷帳(退運) #region (會計)取消銷帳(退運) /// /// (會計)取消銷帳 /// /// todo: describe i_crm parameter on ReturnCancelWriteOff /// public ResponseMessage ReturnCancelWriteOff(RequestMessage i_crm) { ResponseMessage rm = null; string sMsg = null; var db = SugarBase.GetIntance(); try { do { var data = i_crm.DATA as Dictionary; var oBill = (JObject)data[@"Bill"]; var sImportBillNO = _fetchString(i_crm, OTB_OPM_ImportExhibition.CN_IMPORTBILLNO); var sBillNO = oBill[@"BillNO"].ToString(); var sdb = new SimpleClient(db); var oOpm = sdb.GetById(sImportBillNO); if (oOpm == null) { sMsg = @"系統找不到對應的基本資料,請核查!"; break; } var LogData = _fetchString(i_crm, @"LogData"); var LogResult = BillLogs.InsertBillChangeLog(db, LogData, ActionType.取消退運銷帳, i_crm.ORIGID, i_crm.USERID); if (!LogResult.Item1) { sMsg = LogResult.Item2; break; } //更新報價和預估成本 var oOpmUpd = new OTB_OPM_ImportExhibition { ReturnBills = data[OTB_OPM_ImportExhibition.CN_RETURNBILLS].ToString(), ModifyUser = i_crm.USERID, ModifyDate = DateTime.Now }; var iResult = db.Updateable(oOpmUpd).UpdateColumns(it => new { it.ReturnBills, it.ModifyUser, it.ModifyDate }) .Where(it => it.ImportBillNO == sImportBillNO).ExecuteCommand(); if (iResult > 0) { rm = new SuccessResponseMessage(null, i_crm); } } while (false); } catch (Exception ex) { sMsg = Util.GetLastExceptionMsg(ex); LogAndSendEmail(sMsg + @"Param:" + JsonToString(i_crm), ex, i_crm.ORIGID, i_crm.USERID, nameof(ExhibitionImport_UpdService), @"進口", @"ReturnCancelWriteOff((會計)取消銷帳(退運))", @"", @"", @""); } finally { if (null != sMsg) { rm = new ErrorResponseMessage(sMsg, i_crm); } Logger.Debug(@"ExhibitionImport_UpdService.ReturnCancelWriteOff Debug(Param:" + JsonToString(i_crm) + @";Response:" + JsonToString(rm) + @")------------------"); } return rm; } #endregion (會計)取消銷帳(退運) #region 過帳(退運) /// /// 過帳(退運) /// /// todo: describe i_crm parameter on ReturnBillPost /// public ResponseMessage ReturnBillPost(RequestMessage i_crm) { ResponseMessage rm = null; string sMsg = null; try { rm = SugarBase.ExecTran(db => { do { var data = i_crm.DATA as Dictionary; var oBill = (JObject)data[@"Bill"]; var sImportBillNO = _fetchString(i_crm, OTB_OPM_ImportExhibition.CN_IMPORTBILLNO); var sBillNO = oBill[@"BillNO"].ToString(); var sdb = new SimpleClient(db); var oOpm = sdb.GetById(sImportBillNO); if (oOpm == null) { sMsg = @"系統找不到對應的基本資料,請核查!"; break; } var oPayer = new OTB_CRM_Customers(); if (!string.IsNullOrEmpty(oBill[@"Payer"].ToString())) { oPayer = db.Queryable().Single(it => it.guid == oBill[@"Payer"].ToString()); if (oPayer == null) { sMsg = @"系統找不到付款人資訊"; break; } } var sTitle = @"「進口」(活動名稱:" + oOpm.ImportBillName + @")的退運帳單(" + sBillNO + @")已過帳"; if (i_crm.LANG == @"zh") { sTitle = ChineseStringUtility.ToSimplified(sTitle); } //更新報價和預估成本 var oOpmUpd = new OTB_OPM_ImportExhibition { ReturnBills = data[OTB_OPM_ImportExhibition.CN_RETURNBILLS].ToString(), ModifyUser = i_crm.USERID, ModifyDate = DateTime.Now }; db.Updateable(oOpmUpd).UpdateColumns(it => new { it.ReturnBills, it.ModifyUser, it.ModifyDate }) .Where(it => it.ImportBillNO == sImportBillNO).ExecuteCommand(); var listAccounts = db.Queryable() .Where(it => it.OrgID == i_crm.ORIGID && it.RuleID == @"Account").ToList(); var listTips = new List(); if (listAccounts.Count > 0) { foreach (OTB_SYS_MembersToRule account in listAccounts) { //添加提醒消息 var oTipsAdd = SYS.Task_QryService.TipsAdd(i_crm, sTitle, account.MemberID, i_crm.CUSTOMDATA[@"program_id"] + @"|?Action=Upd&GoTab=9&ImportBillNO=" + oOpm.ImportBillNO + @"&BillNO=" + sBillNO, WebAppGlobalConstWord.BELL); listTips.Add(oTipsAdd); } } if (listTips.Count > 0) { db.Insertable(listTips).ExecuteCommand(); } var oBillsAdd = new OTB_OPM_Bills { OrgID = i_crm.ORIGID, BillNO = oBill[@"BillNO"].ToString(), //帳款號碼(1) CheckDate = Common.FnToTWDate(oBill[@"BillFirstCheckDate"]),//對帳日期(2) BillType = @"20",//帳別(收付)(3) CustomerCode = oPayer.CustomerNO //客戶供應商代號(4) }; var sResponsiblePerson = oOpm.ResponsiblePerson.Split('.')[0]; oBillsAdd.ResponsiblePersonCode = Common.CutByteString(sResponsiblePerson, 11); //業務員代號(5) oBillsAdd.ResponsiblePersonFullCode = oOpm.ResponsiblePerson; //業務員全代號 oBillsAdd.LastGetBillDate = @""; //最近收付日(6) oBillsAdd.LastGetBillNO = @""; //最近收付單號(7) oBillsAdd.TaxType = decimal.Parse(oBill[@"TaxSum"].ToString().Replace(@",", @"")) > 0 ? @"5" : @"6";//稅別(8) oBillsAdd.NOTaxAmount = oBill[@"AmountSum"].ToString(); //未稅金額(9) oBillsAdd.BillAmount = oBill[@"AmountTaxSum"].ToString(); //帳款金額(10) oBillsAdd.PaymentAmount = @"0"; //收付金額(11) oBillsAdd.Allowance = @"0"; //折讓金額(12) oBillsAdd.DebtAmount = @"0"; //呆帳金額(13) oBillsAdd.ExchangeAmount = @"0"; //匯兌損益金額(14) oBillsAdd.Settle = @"N"; //結清否(15) oBillsAdd.InvoiceStartNumber = oBill[@"InvoiceNumber"].ToString(); //發票號碼(起)(16) oBillsAdd.InvoiceEndNumber = oBill[@"InvoiceNumber"].ToString();//發票號碼(迄)(17) oBillsAdd.Category = @"";//傳票類別(18) oBillsAdd.OrderNo = @"";//訂單單號(19) oBillsAdd.ClosingNote = @"N"; //結帳註記(20) oBillsAdd.GeneralInvoiceNumber = @""; //立帳總帳傳票號碼(21) oBillsAdd.GeneralSerialNumber = @""; //立帳總帳傳票序號(22) oBillsAdd.Remark1 = @""; //備註一(30C)(23) oBillsAdd.AccountSource = @"0"; //帳款來源(24) oBillsAdd.UpdateDate = @""; //更新日期(25) oBillsAdd.UpdatePersonnel = @""; //更新人員(26) oBillsAdd.DepartmentSiteNumber = oOpm.DepartmentID; //部門\ 工地編號(27) if (!string.IsNullOrWhiteSpace(oOpm.ExhibitionNO)) { var oExhibition = db.Queryable().Single(it => it.SN == oOpm.ExhibitionNO.ObjToInt()); oBillsAdd.ProjectNumber = oExhibition == null ? @"" : oExhibition.ExhibitionCode; //專案\ 項目編號(28) } else { oBillsAdd.ProjectNumber = @""; //專案\ 項目編號(28) } oBillsAdd.TransferBNotes = @""; //轉B 帳註記(29) oBillsAdd.ABNumber = @""; //A|B 帳唯一流水號(30) oBillsAdd.EnterNumber = @""; //進銷單號(31) var sCurrency = oBill[@"Currency"].ToString(); if (i_crm.ORIGID == "SG") { if (sCurrency == "RMB") { sCurrency = ""; } } else { if (sCurrency == "NTD") { sCurrency = ""; } } oBillsAdd.ForeignCurrencyCode = sCurrency; //外幣代號(32) var sExchangeRate = oBill[@"ExchangeRate"].ToString(); oBillsAdd.ExchangeRate = sExchangeRate; //匯率(33) oBillsAdd.ForeignAmount = (decimal.Parse(oBill[@"AmountTaxSum"].ToString()) * decimal.Parse(sExchangeRate == @"" ? @"1" : sExchangeRate)).ToString(); //外幣金額(34) oBillsAdd.PayAmount = @"0"; //收付沖抵金額(35) oBillsAdd.RefundAmount = @"0"; //退款金額(36) oBillsAdd.PaymentTerms = @""; //收付條件(37) oBillsAdd.AccountDate = Common.FnToTWDate(oBill[@"BillFirstCheckDate"]); //帳款日期(38) oBillsAdd.DCreditCardNumber = @""; //預設信用卡號(39) oBillsAdd.ClosingDate = @""; //結帳日期(40) oBillsAdd.CusField1 = @""; //自定義欄位一(41) oBillsAdd.CusField2 = @""; //自定義欄位二(42) oBillsAdd.CusField3 = @""; //自定義欄位三(43) oBillsAdd.CusField4 = @""; //自定義欄位四(44) oBillsAdd.CusField5 = @""; //自定義欄位五(45) oBillsAdd.CusField6 = @"0"; //自定義欄位六(46) oBillsAdd.CusField7 = @"0"; //自定義欄位七(47) oBillsAdd.CusField8 = @"0"; //自定義欄位八(48) oBillsAdd.CusField9 = @"0"; //自定義欄位九(49) oBillsAdd.CusField10 = @"0"; //自定義欄位十(50) oBillsAdd.CusField11 = @""; //自定義欄位十一(51) oBillsAdd.CusField12 = @""; //自定義欄位十二(52) oBillsAdd.Remark2 = @""; //備註二(M)(53) oBillsAdd.TWNOTaxAmount = oBill[@"AmountSum"].ToString(); //台幣未稅金額(54) oBillsAdd.TWAmount = oBill[@"AmountTaxSum"].ToString(); //台幣帳款金額(55) oBillsAdd.CreateUser = i_crm.USERID; oBillsAdd.CreateDate = oBill[@"CreateDate"] == null ? DateTime.Now.ToString(@"yyyy/MM/dd HH:mm:ss") : oBill[@"CreateDate"].ToString(); oBillsAdd.BillFirstCheckDate = oBill[@"BillFirstCheckDate"] == null ? DateTime.Now.ToString(@"yyyy/MM/dd HH:mm:ss") : oBill[@"BillFirstCheckDate"].ToString(); oBillsAdd.Advance = oBill[@"Advance"].ToString(); //預收 oBillsAdd.TaxSum = oBill[@"TaxSum"].ToString(); //稅額 oBillsAdd.TotalReceivable = oBill[@"TotalReceivable"].ToString(); //總應收 oBillsAdd.IsRetn = oBill[@"IsRetn"] == null ? @"N" : oBill[@"IsRetn"].ToString(); //是否為退運 oBillsAdd.Url = i_crm.CUSTOMDATA[@"program_id"] + @"|?Action=Upd&GoTab=9&ImportBillNO=" + oOpm.ImportBillNO + @"&BillNO=" + sBillNO; //Url db.Insertable(oBillsAdd).ExecuteCommand(); var oLogInfo = new OTB_SYS_LogInfo { OrgID = i_crm.ORIGID, SouseId = sBillNO, LogType = "billnoupdate", LogInfo = data[@"Bill"].ToString(), CreateUser = i_crm.USERID, CreateDate = DateTime.Now, Memo = "「進口(退運)帳單」(會計)過帳" }; db.Insertable(oLogInfo).ExecuteCommand(); rm = new SuccessResponseMessage(null, i_crm); rm.DATA.Add(BLWording.REL, oOpm.ResponsiblePerson); } while (false); return rm; }); } catch (Exception ex) { sMsg = Util.GetLastExceptionMsg(ex); LogAndSendEmail(sMsg + @"Param:" + JsonToString(i_crm), ex, i_crm.ORIGID, i_crm.USERID, nameof(ExhibitionImport_UpdService), @"進口", @"ReturnBillPost(過帳(退運))", @"", @"", @""); } finally { if (null != sMsg) { rm = new ErrorResponseMessage(sMsg, i_crm); } Logger.Debug(@"ExhibitionImport_UpdService.ReturnBillPost Debug(Param:" + JsonToString(i_crm) + @";Response:" + JsonToString(rm) + @")------------------"); } return rm; } #endregion 過帳(退運) #region 取消過帳(退運) /// /// 取消過帳(退運) /// /// todo: describe i_crm parameter on ReturnBillCancelPost /// public ResponseMessage ReturnBillCancelPost(RequestMessage i_crm) { ResponseMessage rm = null; string sMsg = null; try { rm = SugarBase.ExecTran(db => { do { var data = i_crm.DATA as Dictionary; var oBill = (JObject)data[@"Bill"]; var sImportBillNO = _fetchString(i_crm, OTB_OPM_ImportExhibition.CN_IMPORTBILLNO); var sBillNO = oBill[@"BillNO"].ToString(); var sdb = new SimpleClient(db); var oOpm = sdb.GetById(sImportBillNO); if (oOpm == null) { sMsg = @"系統找不到對應的基本資料,請核查!"; break; } var LogData = _fetchString(i_crm, @"LogData"); var LogResult = BillLogs.InsertBillChangeLog(db, LogData, ActionType.取消退運過帳, i_crm.ORIGID, i_crm.USERID); if (!LogResult.Item1) { sMsg = LogResult.Item2; break; } var member = db.Queryable().Single(x => x.OrgID == i_crm.ORIGID && x.MemberID == i_crm.USERID); var sTitle = @"會計(" + member.MemberName + @")對您的「進口」(活動名稱:" + oOpm.ImportBillName + @")的退運帳單(" + sBillNO + @")取消了過帳"; if (i_crm.LANG == @"zh") { sTitle = ChineseStringUtility.ToSimplified(sTitle); } //更新報價和預估成本 var oOpmUpd = new OTB_OPM_ImportExhibition { ReturnBills = data[OTB_OPM_ImportExhibition.CN_RETURNBILLS].ToString(), ModifyUser = i_crm.USERID, ModifyDate = DateTime.Now }; db.Updateable(oOpmUpd).UpdateColumns(it => new { it.ReturnBills, it.ModifyUser, it.ModifyDate }) .Where(it => it.ImportBillNO == sImportBillNO).ExecuteCommand(); //添加提醒消息 var oTipsAdd = SYS.Task_QryService.TipsAdd(i_crm, sTitle, oOpm.ResponsiblePerson, i_crm.CUSTOMDATA[@"program_id"] + @"|?Action=Upd&GoTab=9&ImportBillNO=" + oOpm.ImportBillNO + @"&BillNO=" + sBillNO, WebAppGlobalConstWord.BELL); db.Insertable(oTipsAdd).ExecuteCommand(); rm = new SuccessResponseMessage(null, i_crm); rm.DATA.Add(BLWording.REL, oOpm.ResponsiblePerson); } while (false); return rm; }); } catch (Exception ex) { sMsg = Util.GetLastExceptionMsg(ex); LogAndSendEmail(sMsg + @"Param:" + JsonToString(i_crm), ex, i_crm.ORIGID, i_crm.USERID, nameof(ExhibitionImport_UpdService), @"進口", @"ReturnBillCancelPost(取消過帳(退運))", @"", @"", @""); } finally { if (null != sMsg) { rm = new ErrorResponseMessage(sMsg, i_crm); } Logger.Debug(@"ExhibitionImport_UpdService.ReturnBillCancelPost Debug(Param:" + JsonToString(i_crm) + @";Response:" + JsonToString(rm) + @")------------------"); } return rm; } #endregion 取消過帳(退運) #region 作廢(退運)帳單 /// /// 作廢(退運)帳單 /// /// todo: describe i_crm parameter on ReturnBillVoid /// public ResponseMessage ReturnBillVoid(RequestMessage i_crm) { ResponseMessage rm = null; string sMsg = null; try { rm = SugarBase.ExecTran(db => { do { var data = i_crm.DATA as Dictionary; var oBill = (JObject)data[@"Bill"]; var sImportBillNO = _fetchString(i_crm, OTB_OPM_ImportExhibition.CN_IMPORTBILLNO); var sBillNO = oBill[@"BillNO"].ToString(); var sSourceID = oBill[EasyNetGlobalConstWord.GUID].ToString(); var sdb = new SimpleClient(db); var oOpm = sdb.GetById(sImportBillNO); if (oOpm == null) { sMsg = @"系統找不到對應的基本資料,請核查!"; break; } var LogData = _fetchString(i_crm, @"LogData"); var LogResult = BillLogs.InsertBillChangeLog(db, LogData, ActionType.退運帳單作廢, i_crm.ORIGID, i_crm.USERID); if (!LogResult.Item1) { sMsg = LogResult.Item2; break; } var member = db.Queryable().Single(x => x.OrgID == i_crm.ORIGID && x.MemberID == i_crm.USERID); var sTitle = @"會計(" + member.MemberName + @")作廢了您的「進口」(活動名稱:" + oOpm.ImportBillName + @")的退運帳單(" + sBillNO + @")"; if (i_crm.LANG == @"zh") { sTitle = ChineseStringUtility.ToSimplified(sTitle); } //更新報價和預估成本 var oOpmUpd = new OTB_OPM_ImportExhibition { ReturnBills = data[OTB_OPM_ImportExhibition.CN_RETURNBILLS].ToString(), ModifyUser = i_crm.USERID, ModifyDate = DateTime.Now }; db.Updateable(oOpmUpd).UpdateColumns(it => new { it.ReturnBills, it.ModifyUser, it.ModifyDate }) .Where(it => it.ImportBillNO == sImportBillNO).ExecuteCommand(); //添加提醒消息 var oTipsAdd = SYS.Task_QryService.TipsAdd(i_crm, sTitle, oOpm.ResponsiblePerson, i_crm.CUSTOMDATA[@"program_id"] + @"|?Action=Upd&GoTab=9&ImportBillNO=" + oOpm.ImportBillNO + @"&BillNO=" + sBillNO, WebAppGlobalConstWord.BELL); db.Insertable(oTipsAdd).ExecuteCommand(); db.Deleteable().Where(it => it.OrgID == i_crm.ORIGID && it.SourceID == sSourceID).ExecuteCommand(); rm = new SuccessResponseMessage(null, i_crm); rm.DATA.Add(BLWording.REL, oOpm.ResponsiblePerson); } while (false); return rm; }); } catch (Exception ex) { sMsg = Util.GetLastExceptionMsg(ex); LogAndSendEmail(sMsg + @"Param:" + JsonToString(i_crm), ex, i_crm.ORIGID, i_crm.USERID, nameof(ExhibitionImport_UpdService), @"進口", @"ReturnBillVoid(作廢(退運)帳單)", @"", @"", @""); } finally { if (null != sMsg) { rm = new ErrorResponseMessage(sMsg, i_crm); } Logger.Debug(@"ExhibitionImport_UpdService.ReturnBillVoid Debug(Param:" + JsonToString(i_crm) + @";Response:" + JsonToString(rm) + @")------------------"); } return rm; } #endregion 作廢(退運)帳單 #region 刪除(退運)帳單 /// /// 刪除(退運)帳單 /// /// todo: describe i_crm parameter on ReturnBillDelete /// public ResponseMessage ReturnBillDelete(RequestMessage i_crm) { ResponseMessage rm = null; string sMsg = null; try { rm = SugarBase.ExecTran(db => { do { var data = i_crm.DATA as Dictionary; var oBill = (JObject)data[@"Bill"]; var sImportBillNO = _fetchString(i_crm, OTB_OPM_ImportExhibition.CN_IMPORTBILLNO); var sBillNO = oBill[@"BillNO"].ToString(); var sSourceID = oBill[EasyNetGlobalConstWord.GUID].ToString(); var sdb = new SimpleClient(db); var oOpm = sdb.GetById(sImportBillNO); if (oOpm == null) { sMsg = @"系統找不到對應的基本資料,請核查!"; break; } var LogData = _fetchString(i_crm, @"LogData"); var LogResult = BillLogs.InsertBillChangeLog(db, LogData, ActionType.退運帳單刪除, i_crm.ORIGID, i_crm.USERID); if (!LogResult.Item1) { sMsg = LogResult.Item2; break; } var member = db.Queryable().Single(x => x.OrgID == i_crm.ORIGID && x.MemberID == i_crm.USERID); var sTitle = @"管理員(" + member.MemberName + @")刪除了您的「進口」(活動名稱:" + oOpm.ImportBillName + @")的退運帳單(" + sBillNO + @")"; if (i_crm.LANG == @"zh") { sTitle = ChineseStringUtility.ToSimplified(sTitle); } //更新報價和預估成本 var oOpmUpd = new OTB_OPM_ImportExhibition { ReturnBills = data[OTB_OPM_ImportExhibition.CN_RETURNBILLS].ToString(), ModifyUser = i_crm.USERID, ModifyDate = DateTime.Now }; db.Updateable(oOpmUpd).UpdateColumns(it => new { it.ReturnBills, it.ModifyUser, it.ModifyDate }) .Where(it => it.ImportBillNO == sImportBillNO).ExecuteCommand(); //添加提醒消息 var oTipsAdd = SYS.Task_QryService.TipsAdd(i_crm, sTitle, oOpm.ResponsiblePerson, i_crm.CUSTOMDATA[@"program_id"] + @"|?Action=Upd&GoTab=9&ImportBillNO=" + oOpm.ImportBillNO + @"&BillNO=" + sBillNO, WebAppGlobalConstWord.BELL); db.Insertable(oTipsAdd).ExecuteCommand(); db.Deleteable().Where(it => it.OrgID == i_crm.ORIGID && it.SourceID == sSourceID).ExecuteCommand(); rm = new SuccessResponseMessage(null, i_crm); rm.DATA.Add(BLWording.REL, oOpm.ResponsiblePerson); } while (false); return rm; }); } catch (Exception ex) { sMsg = Util.GetLastExceptionMsg(ex); LogAndSendEmail(sMsg + @"Param:" + JsonToString(i_crm), ex, i_crm.ORIGID, i_crm.USERID, nameof(ExhibitionImport_UpdService), @"進口", @"ReturnBillDelete(刪除(退運)帳單)", @"", @"", @""); } finally { if (null != sMsg) { rm = new ErrorResponseMessage(sMsg, i_crm); } Logger.Debug(@"ExhibitionImport_UpdService.ReturnBillDelete Debug(Param:" + JsonToString(i_crm) + @";Response:" + JsonToString(rm) + @")------------------"); } return rm; } #endregion 刪除(退運)帳單 #region 更新帳單明細 /// /// 更新帳單明細 /// /// 帳單資料 /// public ResponseMessage UpdateBillInfo(RequestMessage i_crm) { ResponseMessage rm = null; string sMsg = null; var db = SugarBase.GetIntance(); try { do { var sId = _fetchString(i_crm, @"Guid"); var sBillNO = _fetchString(i_crm, @"BillNO"); var sdb = new SimpleClient(db); var oOpm = sdb.GetById(sId); if (oOpm == null) { break; } var jaBills = new JArray(); var jaReturns = new JArray(); jaBills = (JArray)JsonConvert.DeserializeObject(oOpm.Bills); jaReturns = (JArray)JsonConvert.DeserializeObject(oOpm.ReturnBills); foreach (JObject jo in jaReturns) { var jaReBills = new JArray(); jaReBills = (JArray)JsonConvert.DeserializeObject(jo[@"Bills"].ToString()); foreach (JObject jobill in jaReBills) { jaBills.Add(jobill); } } if (jaBills.Count > 0) { foreach (JObject jo in jaBills) { var oBillInfo_New = ExhibitionService.GetNewBillInfo(jo); oBillInfo_New.OrgID = i_crm.ORIGID; oBillInfo_New.BillType = i_crm.MODULE; oBillInfo_New.ParentId = sId; oBillInfo_New.RefNumber = oOpm.RefNumber; oBillInfo_New.ExhibitionNO = oOpm.ExhibitionNO; oBillInfo_New.ResponsiblePerson = oOpm.ResponsiblePerson; oBillInfo_New.ModifyDate = DateTime.Now; oBillInfo_New.ModifyUser = i_crm.USERID; oBillInfo_New.AuditVal = jo[@"AuditVal"].ToString(); oBillInfo_New.ReFlow = jo[@"ReImportNum"] == null ? @"" : jo[@"ReImportNum"].ToString(); if (string.IsNullOrEmpty(sBillNO)) { var s_BillNO = jo[@"BillNO"].ToString(); var oBillInfo = db.Queryable() .Single(it => it.OrgID == i_crm.ORIGID && it.BillNO == s_BillNO); if (oBillInfo == null) { oBillInfo_New.CreateDate = DateTime.Now; oBillInfo_New.CreateUser = i_crm.USERID; db.Insertable(oBillInfo_New).ExecuteCommand(); } else { oBillInfo_New.CreateDate = oBillInfo.CreateDate; oBillInfo_New.CreateUser = oBillInfo.CreateUser; db.Updateable(oBillInfo_New).Where(it => it.SN == oBillInfo.SN).ExecuteCommand(); } } else { if (sBillNO == jo[@"BillNO"].ToString()) { var s_BillNO = jo[@"BillNO"].ToString(); var oBillInfo = db.Queryable() .Single(it => it.OrgID == i_crm.ORIGID && it.BillNO == sBillNO); if (oBillInfo == null) { oBillInfo_New.CreateDate = DateTime.Now; oBillInfo_New.CreateUser = i_crm.USERID; db.Insertable(oBillInfo_New).ExecuteCommand(); } else { oBillInfo_New.CreateDate = oBillInfo.CreateDate; oBillInfo_New.CreateUser = oBillInfo.CreateUser; db.Updateable(oBillInfo_New).Where(it => it.SN == oBillInfo.SN).ExecuteCommand(); } break; } } } } rm = new SuccessResponseMessage(null, i_crm); } while (false); } catch (Exception ex) { sMsg = Util.GetLastExceptionMsg(ex); LogAndSendEmail(sMsg + @"Param:" + JsonToString(i_crm), ex, i_crm.ORIGID, i_crm.USERID, nameof(ExhibitionImport_UpdService), @"其他", @"UpdateBillInfo(更新帳單明細)", @"", @"", @""); } finally { if (null != sMsg) { rm = new ErrorResponseMessage(sMsg, i_crm); } Logger.Debug(@"ExhibitionImport_UpdService.UpdateBillInfo Debug(Param:" + JsonToString(i_crm) + @";Response:" + JsonToString(rm) + @")------------------"); } return rm; } #endregion 更新帳單明細 } }