using EasyBL.WebApi.Message; using EasyNet; using Entity; using Entity.Sugar; using JumpKick.HttpLib; using SqlSugar; using SqlSugar.Base; using System; using System.Collections.Generic; using System.Linq; using System.Net; using System.Text.RegularExpressions; namespace EasyBL.WEBAPP.CRM { public class Customers_UpdService : ServiceBase { #region 客戶管理編輯(單筆查詢) /// /// 客戶管理編輯(單筆查詢) /// /// /// public ResponseMessage QueryOne(RequestMessage i_crm) { ResponseMessage rm = null; string sMsg = null; var db = SugarBase.GetIntance(); try { do { var sId = _fetchString(i_crm, @"guid"); var oEntity = db.Queryable ((t1, t2, t3) => new object[] { JoinType.Left, t1.OrgID == t2.OrgID && t1.CreateUser == t2.MemberID, JoinType.Left, t1.OrgID == t3.OrgID && t1.ModifyUser == t3.MemberID } ) .Where((t1, t2, t3) => t1.OrgID == i_crm.ORIGID && t1.guid == sId) .Select((t1, t2, t3) => new OTB_CRM_Customers { guid = SqlFunc.GetSelfAndAutoFill(t1.guid), CreateUserName = t2.MemberName, ModifyUserName = t3.MemberName }) .Single(); rm = new SuccessResponseMessage(null, i_crm); rm.DATA.Add(BLWording.REL, oEntity); } while (false); } catch (Exception ex) { sMsg = Util.GetLastExceptionMsg(ex); LogAndSendEmail(sMsg + "Params:" + JsonToString(i_crm), ex, i_crm.ORIGID, i_crm.USERID, nameof(Customers_QryService), "", "QueryOne(客戶管理編輯(單筆查詢))", "", "", ""); } finally { if (null != sMsg) { rm = new ErrorResponseMessage(sMsg, i_crm); } } return rm; } #endregion 客戶管理編輯(單筆查詢) #region 客戶管理編輯(單筆查詢) /// /// 客戶管理編輯(單筆查詢) /// /// /// public ResponseMessage QueryCout(RequestMessage i_crm) { ResponseMessage rm = null; string sMsg = null; var db = SugarBase.GetIntance(); try { do { var sId = _fetchString(i_crm, @"guid"); var sCustomerShotCName = _fetchString(i_crm, @"CustomerShotCName"); var sUniCode = _fetchString(i_crm, @"UniCode"); var iCount = db.Queryable() .Where(x => x.OrgID == i_crm.ORIGID) .WhereIF(!string.IsNullOrEmpty(sId), x => x.guid != sId) .WhereIF(!string.IsNullOrEmpty(sCustomerShotCName), x => x.CustomerShotCName == sCustomerShotCName) .WhereIF(!string.IsNullOrEmpty(sUniCode), x => x.UniCode == sUniCode) .Count(); rm = new SuccessResponseMessage(null, i_crm); rm.DATA.Add(BLWording.REL, iCount); } while (false); } catch (Exception ex) { sMsg = Util.GetLastExceptionMsg(ex); LogAndSendEmail(sMsg + "Params:" + JsonToString(i_crm), ex, i_crm.ORIGID, i_crm.USERID, nameof(Customers_QryService), "", "QueryOne(客戶管理編輯(單筆查詢))", "", "", ""); } finally { if (null != sMsg) { rm = new ErrorResponseMessage(sMsg, i_crm); } } return rm; } #endregion 客戶管理編輯(單筆查詢) /// /// 檢查客戶簡稱(不能重複)與統一編號(不能重複),組織不同視為不同 /// /// /// private Tuple CheckShortNameAndUniCode(RequestMessage i_crm) { var OrgID = i_crm.ORIGID; if (i_crm.TYPE == "CopySync") OrgID = _fetchString(i_crm, OTB_CRM_Customers.CN_ORGID); var db = SugarBase.GetIntance(); var iCount = -1; try { var sTransactiontype = _fetchString(i_crm, @"TransactionType"); var sId = _fetchString(i_crm, @"guid"); var sCustomerShotCName = _fetchString(i_crm, @"CustomerShotCName"); var sUniCode = _fetchString(i_crm, @"UniCode"); if (string.IsNullOrWhiteSpace(sCustomerShotCName)) return new Tuple(false, "客戶簡稱不得為空。"); var sTaxpayerOrgID = _fetchString(i_crm, @"TaxpayerOrgID"); if (!string.IsNullOrWhiteSpace(sTransactiontype)) { var TypeAD = sTransactiontype.Any(c => c == 'D' || c == 'A'); if (OrgID == "SG") { var SqlType = @" (CustomerShotCName = @CustomerShotCName {1} )"; var TaxpayerOrgIDSql = ""; var ConvertedTaxpayerOrgID = sTaxpayerOrgID.Trim() ?? ""; var TaxpayerOrgIDLength = ConvertedTaxpayerOrgID.Length; //Type A or D 一定要輸入納稅人組織號 if (TypeAD && TaxpayerOrgIDLength > 18) { return new Tuple(false, "交易型態為A或D時,納稅人組織號必填且為限制18碼內。"); } //有輸入統編的話 一定要8碼 if (TaxpayerOrgIDLength > 0 && TaxpayerOrgIDLength < 18) return new Tuple(false, "納稅人組織號需要18碼。"); if (TaxpayerOrgIDLength == 18) { TaxpayerOrgIDSql = "OR TaxpayerOrgID = @TaxpayerOrgID"; } SqlType = SqlType.Replace("{1}", TaxpayerOrgIDSql); iCount = db.Queryable() .Where(x => x.OrgID == i_crm.ORIGID) .WhereIF(!string.IsNullOrEmpty(sId), x => x.guid != sId) .Where(SqlType, new { CustomerShotCName = sCustomerShotCName, TaxpayerOrgID = ConvertedTaxpayerOrgID }) .Count(); } else { var SqlType = @" (CustomerShotCName = @CustomerShotCName {1} )"; var UnicodeSql = ""; var ConvertedUnicode = sUniCode.Trim() ?? ""; var UnicodeLength = ConvertedUnicode.Length; //Type A or D 一定要輸入統編 if (TypeAD && UnicodeLength < 8) return new Tuple(false, "交易型態為A或D時,統一編號必填且為8碼。"); //有輸入統編的話 一定要8碼 if (UnicodeLength > 0 && UnicodeLength < 8) return new Tuple(false, "統一編號需要8碼。"); if (UnicodeLength == 8) { UnicodeSql = "OR UniCode = @UniCode"; } SqlType = SqlType.Replace("{1}", UnicodeSql); iCount = db.Queryable() .Where(x => x.OrgID == OrgID) .WhereIF(!string.IsNullOrEmpty(sId), x => x.guid != sId) .Where(SqlType, new { CustomerShotCName = sCustomerShotCName, UniCode = sUniCode }) .Count(); } } } catch (Exception ex) { var sMsg = Util.GetLastExceptionMsg(ex); LogAndSendEmail(sMsg + "Params:" + JsonToString(i_crm), ex, i_crm.ORIGID, i_crm.USERID, nameof(Customers_QryService), "", "CheckShortNameAndUniCode(客戶管理編輯(檢查客戶簡稱與統一編號))", "", "", ""); } var TaxName = "統一編號"; if (OrgID == "SG") TaxName = "納稅人組織號"; switch (iCount) { case 0: return new Tuple(true, "沒有找到重複" + TaxName + "或簡稱。"); case -1: return new Tuple(false, "尋找過程發生錯誤,請稍後嘗試。"); default: return new Tuple(false, TaxName + "或客戶簡稱重複。請重新檢查資料。"); } } #region 客戶管理編輯(新增) /// /// 客戶管理編輯(新增) /// /// todo: describe i_crm parameter on UpdImportCustomers /// public ResponseMessage Insert(RequestMessage i_crm) { ResponseMessage rm = null; string sMsg = null; ////檢查統一編號或客戶簡稱要為唯一 var CheckResult = CheckShortNameAndUniCode(i_crm); if (!CheckResult.Item1) return new ErrorResponseMessage(CheckResult.Item2, i_crm); try { rm = SugarBase.ExecTran(db => { do { string sCustomerGUID = Guid.NewGuid().ToString(); //客戶資料表身 var oEntity = _fetchEntity(i_crm); _setEntityBase(oEntity, i_crm); oEntity.guid = sCustomerGUID; oEntity.IsAudit = "N"; oEntity.CustomerNO = SerialNumber.GetMaxNumberByType(i_crm.ORIGID, oEntity.CustomerNO, MaxNumberType.Empty, i_crm.USERID, 3); //客戶資料表頭 var oMstEntity = _fetchEntity(i_crm); _setEntityBase(oMstEntity, i_crm); oMstEntity.guid = Guid.NewGuid().ToString(); oMstEntity.CustomerNO = oEntity.CustomerNO; oMstEntity.customer_guid = sCustomerGUID; oMstEntity.Effective = "Y"; var iRel = db.Insertable(oEntity).ExecuteReturnEntity(); var iRelMst = db.Insertable(oMstEntity).ExecuteCommand(); rm = new SuccessResponseMessage(null, i_crm); rm.DATA.Add(BLWording.REL, iRel); } 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(Customers_UpdService), @"客戶管理編輯", @"Add(客戶管理編輯(新增))", @"", @"", @""); } finally { if (null != sMsg) { rm = new ErrorResponseMessage(sMsg, i_crm); } } return rm; } #endregion 客戶管理編輯(新增) #region 客戶管理編輯(修改) /// /// 客戶管理編輯(修改) /// /// todo: describe i_crm parameter on UpdImportCustomers /// public ResponseMessage Update(RequestMessage i_crm) { ResponseMessage rm = null; string sMsg = null; var CheckResult = CheckShortNameAndUniCode(i_crm); if (!CheckResult.Item1) return new ErrorResponseMessage(CheckResult.Item2, i_crm); try { rm = SugarBase.ExecTran(db => { do { var sId = _fetchString(i_crm, @"guid"); var oNewEntity = _fetchEntity(i_crm); _setEntityBase(oNewEntity, i_crm); oNewEntity.IsAudit = "N"; string sOrgId = oNewEntity.OrgID; if (oNewEntity.CustomerNO.Length == 4) { oNewEntity.CustomerNO = SerialNumber.GetMaxNumberByType(i_crm.ORIGID, oNewEntity.CustomerNO, MaxNumberType.Empty, i_crm.USERID, 3); //查詢出該 //更新現有其他對應表頭資料為N var oUpdMstEntity = _fetchEntity(i_crm); db.Updateable(oUpdMstEntity).UpdateColumns(p => p.Effective == "N").Where(p => p.customer_guid == sId).ExecuteCommand(); //若有變更,新增一筆到表頭 var oInsertMstEntity = _fetchEntity(i_crm); _setEntityBase(oInsertMstEntity, i_crm); oInsertMstEntity.guid = Guid.NewGuid().ToString(); oInsertMstEntity.CustomerNO = oNewEntity.CustomerNO; oInsertMstEntity.customer_guid = sId; oInsertMstEntity.Effective = "Y"; db.Insertable(oInsertMstEntity).ExecuteCommand(); } var iRel = db.Updateable(oNewEntity) .IgnoreColumns(x => new { x.IsApply, x.IsAudit, x.ToAuditer, x.NotPassReason, x.CreateUser, x.CreateDate }).ExecuteCommand(); var NewResult = db.Queryable() .Where(p => p.OrgID == sOrgId && p.guid == oNewEntity.guid) .Single(); rm = new SuccessResponseMessage(null, i_crm); rm.DATA.Add(BLWording.REL, NewResult); } 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(Customers_UpdService), @"客戶管理編輯", @"Update(客戶管理編輯(修改))", @"", @"", @""); } finally { if (null != sMsg) { rm = new ErrorResponseMessage(sMsg, i_crm); } } return rm; } #endregion 客戶管理編輯(修改) #region 客戶管理編輯(刪除) /// /// 客戶管理編輯(刪除) /// /// todo: describe i_crm parameter on UpdImportCustomers /// public ResponseMessage Delete(RequestMessage i_crm) { ResponseMessage rm = null; string sMsg = null; try { rm = SugarBase.ExecTran(db => { do { var sId = _fetchString(i_crm, @"guid"); var iRel = db.Deleteable().Where(x => x.guid == sId).ExecuteCommand(); var iMstRel = db.Deleteable().Where(x => x.customer_guid == sId).ExecuteCommand(); rm = new SuccessResponseMessage(null, i_crm); rm.DATA.Add(BLWording.REL, iRel); } 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(Customers_UpdService), @"客戶管理編輯", @"Delete(客戶管理編輯(刪除))", @"", @"", @""); } finally { if (null != sMsg) { rm = new ErrorResponseMessage(sMsg, i_crm); } } return rm; } #endregion 客戶管理編輯(刪除) #region 客戶管理編輯(提交審核) /// /// 客戶管理編輯(提交審核) /// /// todo: describe i_crm parameter on ToAudit /// public ResponseMessage ToAudit(RequestMessage i_crm) { ResponseMessage rm = null; string sMsg = null; var CheckResult = CheckShortNameAndUniCode(i_crm); if (!CheckResult.Item1) return new ErrorResponseMessage(CheckResult.Item2, i_crm); try { rm = SugarBase.ExecTran(db => { do { var sId = _fetchString(i_crm, EasyNetGlobalConstWord.GUID); var sIsAudit = _fetchString(i_crm, @"IsAudit"); var sdb = new SimpleClient(db); var customer = sdb.GetById(sId); if (customer == null) { sMsg = @"系統找不到對應的客戶資料,請核查!"; break; } var sTitle = @"客戶資料「" + (string.IsNullOrWhiteSpace(customer.CustomerCName) ? customer.CustomerEName : customer.CustomerCName) + @"」申請審核"; if (i_crm.LANG == @"zh") { sTitle = ChineseStringUtility.ToSimplified(sTitle); } //更新客戶資料 var oCustomersUpd = new OTB_CRM_Customers { IsAudit = sIsAudit, ToAuditer = i_crm.USERID, ModifyUser = i_crm.USERID, ModifyDate = DateTime.Now }; db.Updateable(oCustomersUpd) .UpdateColumns(it => new { it.IsAudit, it.ToAuditer, it.ModifyUser, it.ModifyDate }) .Where(it => it.guid == sId).ExecuteCommand(); //更新代辦 SYS.Task_QryService.TaskStatusUpd(db, i_crm.ORIGID, sId); var listTips = new List(); var listTask = new List(); var lstCustomersAuditUsers = new List(); var sCustomersAuditUsers = Common.GetSystemSetting(db, i_crm.ORIGID, @"CustomersAuditUsers"); if (sCustomersAuditUsers != @"") { var saCustomersAuditUsers = sCustomersAuditUsers.Split(new string[] { @";", @",", @",", @"|" }, StringSplitOptions.RemoveEmptyEntries); lstCustomersAuditUsers = saCustomersAuditUsers.Distinct().ToList(); foreach (string user in lstCustomersAuditUsers) { //添加代辦 var oTaskAdd = SYS.Task_QryService.TaskAdd(i_crm, customer.guid, user, sTitle, i_crm.CUSTOMDATA[@"program_id"], @"?Action=Upd&guid=" + customer.guid); listTask.Add(oTaskAdd); //添加提醒消息 var oTipsAdd = SYS.Task_QryService.TipsAdd(i_crm, sTitle, user, i_crm.CUSTOMDATA[@"program_id"] + @"|?Action=Upd&guid=" + customer.guid, WebAppGlobalConstWord.BELL); listTips.Add(oTipsAdd); } } 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, lstCustomersAuditUsers); } 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(Customers_UpdService), @"客戶管理編輯", @"ToAudit(客戶管理編輯(提交審核))", @"", @"", @""); } finally { if (null != sMsg) { rm = new ErrorResponseMessage(sMsg, i_crm); } } return rm; } #endregion 客戶管理編輯(提交審核) #region 客戶管理編輯(主管會計審核) /// /// 客戶管理編輯(主管會計審核) /// /// todo: describe i_crm parameter on Audit /// public ResponseMessage Audit(RequestMessage i_crm) { ResponseMessage rm = null; string sMsg = null; try { rm = SugarBase.ExecTran(db => { do { var sId = _fetchString(i_crm, EasyNetGlobalConstWord.GUID); var sIsAudit = _fetchString(i_crm, @"IsAudit"); var sNotPassReason = _fetchString(i_crm, @"NotPassReason"); var sdb = new SimpleClient(db); var customer = sdb.GetById(sId); if (customer == null) { sMsg = @"系統找不到對應的客戶資料,請核查!"; break; } //更新客戶資料 var oCustomersUpd = new OTB_CRM_Customers { IsAudit = sIsAudit, NotPassReason = sNotPassReason, ModifyUser = i_crm.USERID, ModifyDate = DateTime.Now }; db.Updateable(oCustomersUpd) .UpdateColumns(it => new { it.IsAudit, it.NotPassReason, it.ModifyUser, it.ModifyDate }) .Where(it => it.guid == sId).ExecuteCommand(); //更新代辦 SYS.Task_QryService.TaskStatusUpd(db, i_crm.ORIGID, sId); var oUserInfo = db.Queryable().Single(it => it.OrgID == i_crm.ORIGID && it.MemberID == i_crm.USERID); var sTitle = (oUserInfo.MemberName ?? i_crm.USERID) + @"審核了您創建的客戶資料「" + (string.IsNullOrWhiteSpace(customer.CustomerCName) ? customer.CustomerEName : customer.CustomerCName) + @"」,審核結果:"; sTitle += sIsAudit == @"Y" ? @"通過" : @"不通過"; if (i_crm.LANG == @"zh") { sTitle = ChineseStringUtility.ToSimplified(sTitle); } //成功與否 var TipsType = sIsAudit == @"Y" ? WebAppGlobalConstWord.CHECK : WebAppGlobalConstWord.FAIL; //添加提醒消息 var oTipsAdd = SYS.Task_QryService.TipsAdd(i_crm, sTitle, customer.ToAuditer, i_crm.CUSTOMDATA[@"program_id"] + @"|?Action=Upd&guid=" + customer.guid, TipsType); db.Insertable(oTipsAdd).ExecuteCommand(); if (sIsAudit == @"Q") { //添加代辦 var oTaskAdd = SYS.Task_QryService.TaskAdd(i_crm, customer.guid, customer.ToAuditer, sTitle, i_crm.CUSTOMDATA[@"program_id"], @"?Action=Upd&guid=" + customer.guid); db.Insertable(oTaskAdd).ExecuteCommand(); } else { var oCustomersTransferAdd = new OTB_CRM_CustomersTransfer(); var sEventID = Guid.NewGuid().ToString(); oCustomersTransferAdd.OrgID = i_crm.ORIGID; oCustomersTransferAdd.Feild01 = customer.CustomerNO; oCustomersTransferAdd.Feild02 = @"0"; oCustomersTransferAdd.Feild03 = Common.CutByteString(customer.CustomerShotCName, 12); oCustomersTransferAdd.Feild04 = Common.CutByteString(customer.CustomerCName == @"" ? customer.CustomerEName : customer.CustomerCName, 60); oCustomersTransferAdd.Feild05 = @""; oCustomersTransferAdd.Feild06 = @""; oCustomersTransferAdd.Feild07 = customer.UniCode; oCustomersTransferAdd.Feild08 = @""; oCustomersTransferAdd.Feild09 = @""; oCustomersTransferAdd.Feild10 = Common.CutByteString(customer.InvoiceAddress, 60); oCustomersTransferAdd.Feild11 = Common.CutByteString(customer.Address, 60); oCustomersTransferAdd.Feild12 = @""; oCustomersTransferAdd.Feild13 = @""; oCustomersTransferAdd.Feild14 = Common.CutByteString(customer.Telephone, 20); oCustomersTransferAdd.Feild15 = @""; oCustomersTransferAdd.Feild16 = Common.CutByteString(customer.FAX, 20); oCustomersTransferAdd.Feild17 = @""; oCustomersTransferAdd.Feild18 = @""; oCustomersTransferAdd.Feild19 = @""; oCustomersTransferAdd.Feild20 = @""; oCustomersTransferAdd.Feild21 = @""; oCustomersTransferAdd.Feild22 = @""; oCustomersTransferAdd.Feild23 = Common.CutByteString(customer.Memo, 30); oCustomersTransferAdd.Feild24 = @"100"; oCustomersTransferAdd.Feild25 = @""; oCustomersTransferAdd.Feild26 = @""; oCustomersTransferAdd.Feild27 = @"100"; oCustomersTransferAdd.Feild28 = @""; oCustomersTransferAdd.Feild29 = Common.CutByteString(customer.CreateUser.Split('.')[0], 11); oCustomersTransferAdd.Feild30 = @""; oCustomersTransferAdd.Feild31 = @""; oCustomersTransferAdd.Feild32 = @""; oCustomersTransferAdd.Feild33 = @""; oCustomersTransferAdd.Feild34 = @""; oCustomersTransferAdd.Feild35 = @""; oCustomersTransferAdd.Feild36 = @""; oCustomersTransferAdd.Feild37 = @"B,C".IndexOf(customer.TransactionType) > -1 ? @"6" : @"5"; oCustomersTransferAdd.Feild38 = @"2"; oCustomersTransferAdd.Feild39 = @""; oCustomersTransferAdd.Feild40 = @""; oCustomersTransferAdd.Feild41 = @"1"; oCustomersTransferAdd.Feild42 = @""; oCustomersTransferAdd.Feild43 = @""; oCustomersTransferAdd.Feild44 = @""; oCustomersTransferAdd.Feild45 = @""; oCustomersTransferAdd.Feild46 = @""; oCustomersTransferAdd.Feild47 = @""; oCustomersTransferAdd.Feild48 = @""; oCustomersTransferAdd.Feild49 = @""; oCustomersTransferAdd.Feild50 = @""; oCustomersTransferAdd.Feild51 = @""; oCustomersTransferAdd.Feild52 = @""; oCustomersTransferAdd.Feild53 = @""; oCustomersTransferAdd.Feild54 = @""; oCustomersTransferAdd.Feild55 = @""; oCustomersTransferAdd.Feild56 = @""; oCustomersTransferAdd.Feild57 = @""; oCustomersTransferAdd.Feild58 = customer.CustomerNO; oCustomersTransferAdd.Feild59 = @""; oCustomersTransferAdd.Feild60 = @""; oCustomersTransferAdd.Feild61 = @""; oCustomersTransferAdd.Feild62 = @""; oCustomersTransferAdd.Feild63 = @""; oCustomersTransferAdd.Feild64 = @""; oCustomersTransferAdd.Feild65 = @""; oCustomersTransferAdd.Feild66 = @""; oCustomersTransferAdd.Feild67 = @""; oCustomersTransferAdd.Feild68 = @""; oCustomersTransferAdd.Feild69 = @""; oCustomersTransferAdd.Feild70 = @""; oCustomersTransferAdd.Feild71 = @""; oCustomersTransferAdd.Feild72 = @""; oCustomersTransferAdd.Feild73 = @""; oCustomersTransferAdd.Feild74 = @""; oCustomersTransferAdd.Feild75 = @""; oCustomersTransferAdd.Feild76 = @""; oCustomersTransferAdd.Feild77 = @""; oCustomersTransferAdd.Feild78 = @""; oCustomersTransferAdd.Feild79 = @""; oCustomersTransferAdd.Feild80 = @""; oCustomersTransferAdd.Feild81 = @""; oCustomersTransferAdd.Feild82 = Common.CutByteString(customer.CustomerEName, 120); var sAddress = customer.Address; var cn = new Regex(@"[一-龥]+");//正则表达式 表示汉字范围 if (cn.IsMatch(sAddress)) { sAddress = @""; } oCustomersTransferAdd.Feild83 = Common.CutByteString(sAddress, 240); oCustomersTransferAdd.Feild84 = @""; oCustomersTransferAdd.Feild85 = @""; oCustomersTransferAdd.Feild86 = @""; oCustomersTransferAdd.Feild87 = @""; oCustomersTransferAdd.Feild88 = @""; oCustomersTransferAdd.Feild89 = @""; oCustomersTransferAdd.Feild90 = @""; oCustomersTransferAdd.Feild91 = @"0"; oCustomersTransferAdd.Feild92 = @"0"; oCustomersTransferAdd.Feild93 = @""; oCustomersTransferAdd.Feild94 = @""; oCustomersTransferAdd.Feild95 = @""; oCustomersTransferAdd.Feild96 = @""; oCustomersTransferAdd.Feild97 = @""; oCustomersTransferAdd.Feild98 = @""; oCustomersTransferAdd.Feild99 = @""; db.Insertable(oCustomersTransferAdd).ExecuteCommand(); } rm = new SuccessResponseMessage(null, i_crm); rm.DATA.Add(BLWording.REL, customer.ToAuditer); } 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(Customers_UpdService), @"客戶管理編輯", @"Audit(客戶管理編輯(主管會計審核))", @"", @"", @""); } finally { if (null != sMsg) { rm = new ErrorResponseMessage(sMsg, i_crm); } } 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 sId = _fetchString(i_crm, EasyNetGlobalConstWord.GUID); var sNotPassReason = _fetchString(i_crm, @"NotPassReason"); var sUserName = _fetchString(i_crm, @"UserName"); var sdb = new SimpleClient(db); var customer = sdb.GetById(sId); if (customer == null) { sMsg = @"系統找不到對應的客戶資料,請核查!"; break; } var sTitle = sUserName + @"客戶管理取消審核了您創建的客戶資料「" + (customer.CustomerCName.Trim() == @"" ? customer.CustomerEName : customer.CustomerCName) + @"」"; if (i_crm.LANG == @"zh") { sTitle = ChineseStringUtility.ToSimplified(sTitle); } //更新客戶資料 var oCustomersUpd = new OTB_CRM_Customers { IsAudit = @"N", NotPassReason = sNotPassReason, ModifyUser = i_crm.USERID, ModifyDate = DateTime.Now }; db.Updateable(oCustomersUpd) .UpdateColumns(it => new { it.IsAudit, it.NotPassReason, it.ModifyUser, it.ModifyDate }) .Where(it => it.guid == sId).ExecuteCommand(); //更新代辦 SYS.Task_QryService.TaskStatusUpd(db, i_crm.ORIGID, sId); //添加提醒消息 var oTipsAdd = SYS.Task_QryService.TipsAdd(i_crm, sTitle, customer.ToAuditer, i_crm.CUSTOMDATA[@"program_id"] + @"|?Action=Upd&guid=" + customer.guid, WebAppGlobalConstWord.BELL); db.Insertable(oTipsAdd).ExecuteCommand(); //添加代辦 var oTaskAdd = SYS.Task_QryService.TaskAdd(i_crm, customer.guid, customer.ToAuditer, sTitle, i_crm.CUSTOMDATA[@"program_id"], @"?Action=Upd&guid=" + customer.guid); db.Insertable(oTaskAdd).ExecuteCommand(); rm = new SuccessResponseMessage(null, i_crm); rm.DATA.Add(BLWording.REL, customer.ToAuditer); } 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(Customers_UpdService), @"客戶管理編輯", @"CancelAudit(客戶管理編輯(取消審核))", @"", @"", @""); } finally { if (null != sMsg) { rm = new ErrorResponseMessage(sMsg, i_crm); } } return rm; } #endregion 客戶管理編輯(取消審核) #region 客戶管理編輯(提交申請修改) /// /// 客戶管理編輯(提交申請修改) /// /// todo: describe i_crm parameter on ApplyforUpdate /// public ResponseMessage ApplyforUpdate(RequestMessage i_crm) { ResponseMessage rm = null; string sMsg = null; try { rm = SugarBase.ExecTran(db => { do { var sId = _fetchString(i_crm, @"Guid"); var sNotPassReason = _fetchString(i_crm, @"NotPassReason"); var sdb = new SimpleClient(db); var oCustomers = sdb.GetById(sId); if (oCustomers == null) { sMsg = @"系統找不到對應的請假資料,請核查!"; break; } //更新客戶資料 var oCustomersUpd = new OTB_CRM_Customers { IsAudit = @"Z", NotPassReason = sNotPassReason, ModifyUser = i_crm.USERID, ModifyDate = DateTime.Now }; db.Updateable(oCustomersUpd) .UpdateColumns(it => new { it.IsAudit, it.NotPassReason, it.ModifyUser, it.ModifyDate }).Where(it => it.guid == sId).ExecuteCommand(); var oUserInfo = db.Queryable().Single(it => it.OrgID == i_crm.ORIGID && it.MemberID == i_crm.USERID); var sTitle = @"客戶資料「" + (oCustomers.CustomerCName.Trim() == @"" ? oCustomers.CustomerEName : oCustomers.CustomerCName) + @"」已被" + (oUserInfo.MemberName ?? @"") + @"申請修改"; var listTips = new List(); //List listTask = new List(); var lstCustomersAuditUsers = new List(); var sCustomersAuditUsers = Common.GetSystemSetting(db, i_crm.ORIGID, @"CustomersAuditUsers"); if (sCustomersAuditUsers != @"") { var saCustomersAuditUsers = sCustomersAuditUsers.Split(new string[] { @";", @",", @",", @"|" }, StringSplitOptions.RemoveEmptyEntries); lstCustomersAuditUsers = saCustomersAuditUsers.Distinct().ToList(); foreach (string user in lstCustomersAuditUsers) { //添加代辦 //OTB_SYS_Task oTaskAdd = SYS.TaskService.TaskAdd(i_crm, oCustomers.guid, user, sTitle, i_crm.CUSTOMDATA["program_id"], "?Action=Upd&guid=" + oCustomers.guid); //listTask.Add(oTaskAdd); //添加提醒消息 var oTipsAdd = SYS.Task_QryService.TipsAdd(i_crm, sTitle, user, i_crm.CUSTOMDATA[@"program_id"] + @"|?Action=Upd&guid=" + oCustomers.guid, WebAppGlobalConstWord.BELL); listTips.Add(oTipsAdd); } } 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, lstCustomersAuditUsers); } 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(Customers_UpdService), @"客戶管理編輯", @"ApplyforUpdate(客戶管理編輯(提交申請修改))", @"", @"", @""); } finally { if (null != sMsg) { rm = new ErrorResponseMessage(sMsg, i_crm); } } return rm; } #endregion 客戶管理編輯(提交申請修改) #region 客戶管理編輯(抓取參加展覽列表資料) /// /// 客戶管理編輯(抓取參加展覽列表資料) /// /// todo: describe i_crm parameter on GetExhibitionlist /// public ResponseMessage GetExhibitionlist(RequestMessage i_crm) { ResponseMessage rm = null; string sMsg = null; var db = SugarBase.GetIntance(); try { do { var sId = _fetchString(i_crm, @"Guid"); var saExhibitions = new List(); //出口 var saExport = db.Queryable((t1, t2) => t1.SN.ToString() == t2.ExhibitionNO && t1.OrgID == t2.OrgID && t1.Effective == "Y" && t2.IsVoid == "N") .Select((t1, t2) => new { t1.OrgID, t1.SN, t1.ExhibitionCode, t1.Exhibitioname_TW, t1.Exhibitioname_CN, t2.ExhibitionNO, t2.Exhibitors, t2.Agent }).MergeTable() .Where(it => it.ExhibitionNO != @"" && it.OrgID == i_crm.ORIGID && (it.Exhibitors.Contains(sId) || it.Agent == sId)).ToList(); if (saExport.Count > 0) { foreach (var opm in saExport) { if (!saExhibitions.Any(x => (x[@"SN"].ToString() == opm.SN.ToString()))) { var m = new Map { { @"RowIndex", saExhibitions.Count + 1 }, { @"SN", opm.SN }, { @"ExhibitionCode", opm.ExhibitionCode }, { @"Exhibitioname_TW", opm.Exhibitioname_TW }, { @"Exhibitioname_CN", opm.Exhibitioname_CN } }; saExhibitions.Add(m); } } } //進口 var saImport = db.Queryable((t1, t2) => t1.SN.ToString() == t2.ExhibitionNO && t1.OrgID == t2.OrgID && t1.Effective == "Y" && t2.IsVoid == "N") .Select((t1, t2) => new { t1.OrgID, t1.SN, t1.ExhibitionCode, t1.Exhibitioname_TW, t1.Exhibitioname_CN, t2.ExhibitionNO, t2.Suppliers, t2.Supplier, t2.Agent }).MergeTable() .Where(it => it.ExhibitionNO != @"" && it.OrgID == i_crm.ORIGID && (it.Suppliers.Contains(sId) || it.Supplier == sId || it.Agent == sId)).ToList(); if (saImport.Count > 0) { foreach (var opm in saImport) { if (!saExhibitions.Any(x => (x[@"SN"].ToString() == opm.SN.ToString()))) { var m = new Map { { @"RowIndex", saExhibitions.Count + 1 }, { @"SN", opm.SN }, { @"ExhibitionCode", opm.ExhibitionCode }, { @"Exhibitioname_TW", opm.Exhibitioname_TW }, { @"Exhibitioname_CN", opm.Exhibitioname_CN } }; saExhibitions.Add(m); } } } //其他 var saOther = db.Queryable((t1, t2) => t1.SN.ToString() == t2.ExhibitionNO && t1.OrgID == t2.OrgID && t1.Effective == "Y" && t2.IsVoid == "N") .Select((t1, t2) => new { t1.OrgID, t1.SN, t1.ExhibitionCode, t1.Exhibitioname_TW, t1.Exhibitioname_CN, t2.ExhibitionNO, t2.Supplier, t2.Agent }).MergeTable() .Where(it => it.ExhibitionNO != @"" && it.OrgID == i_crm.ORIGID && (it.Supplier == sId || it.Agent == sId)).ToList(); if (saOther.Count > 0) { foreach (var opm in saOther) { if (!saExhibitions.Any(x => (x[@"SN"].ToString() == opm.SN.ToString()))) { var m = new Map { { @"RowIndex", saExhibitions.Count + 1 }, { @"SN", opm.SN }, { @"ExhibitionCode", opm.ExhibitionCode }, { @"Exhibitioname_TW", opm.Exhibitioname_TW }, { @"Exhibitioname_CN", opm.Exhibitioname_CN } }; saExhibitions.Add(m); } } } //其他 var saOtherTG = db.Queryable((t1, t2) => t1.SN.ToString() == t2.ExhibitionNO && t1.OrgID == t2.OrgID && t1.Effective == "Y" && t2.IsVoid == "N") .Select((t1, t2) => new { t1.OrgID, t1.SN, t1.ExhibitionCode, t1.Exhibitioname_TW, t1.Exhibitioname_CN, t2.ExhibitionNO, t2.Exhibitors, t2.Agent }).MergeTable() .Where(it => it.ExhibitionNO != @"" && it.OrgID == i_crm.ORIGID && (it.Exhibitors.Contains(sId) || it.Agent == sId)).ToList(); if (saOtherTG.Count > 0) { foreach (var opm in saOtherTG) { if (!saExhibitions.Any(x => (x[@"SN"].ToString() == opm.SN.ToString()))) { var m = new Map { { @"RowIndex", saExhibitions.Count + 1 }, { @"SN", opm.SN }, { @"ExhibitionCode", opm.ExhibitionCode }, { @"Exhibitioname_TW", opm.Exhibitioname_TW }, { @"Exhibitioname_CN", opm.Exhibitioname_CN } }; saExhibitions.Add(m); } } } rm = new SuccessResponseMessage(null, i_crm); rm.DATA.Add(BLWording.REL, saExhibitions); } while (false); } catch (Exception ex) { sMsg = Util.GetLastExceptionMsg(ex); LogAndSendEmail(sMsg + @"Param:" + JsonToString(i_crm), ex, i_crm.ORIGID, i_crm.USERID, nameof(Customers_UpdService), @"客戶管理編輯", @"GetCustomers(客戶管理編輯(抓取參加展覽列表資料))", @"", @"", @""); } finally { if (null != sMsg) { rm = new ErrorResponseMessage(sMsg, i_crm); } } return rm; } #endregion 客戶管理編輯(抓取參加展覽列表資料) #region 客戶管理編輯((通過政府API)依據客戶編碼抓取基本資料) /// /// 客戶管理編輯((通過政府API)依據客戶編碼抓取基本資料) /// /// /// public ResponseMessage GetCrmBaseDataByUniCode(RequestMessage i_crm) { ResponseMessage rm = null; string sMsg = null; var db = SugarBase.GetIntance(); try { do { var sUniCode = _fetchString(i_crm, @"UniCode"); var sKeyWords = _fetchString(i_crm, @"KeyWords"); var sAPIUrl = @"https://data.gcis.nat.gov.tw/od/data/api/5F64D864-61CB-4D0D-8AD9-492047CC1EA6?$format=json&$filter=Business_Accounting_NO eq "; if (sUniCode != "") { sAPIUrl += sUniCode; } else { sAPIUrl = @"https://data.gcis.nat.gov.tw/od/data/api/6BBA2268-1367-4B42-9CCA-BC17499EBE8C?$format=json&$filter=Company_Name like " + sKeyWords + " and Company_Status eq 01"; } var client = new HttpWebClient(sAPIUrl); ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12; var sHtml = client.GetString(); rm = new SuccessResponseMessage(null, i_crm); rm.DATA.Add(BLWording.REL, sHtml); } while (false); } catch (Exception ex) { sMsg = Util.GetLastExceptionMsg(ex); LogAndSendEmail(sMsg + @"Param:" + JsonToString(i_crm), ex, i_crm.ORIGID, i_crm.USERID, nameof(Customers_UpdService), @"客戶管理編輯", @"GetCrmBaseDataByUniCode(客戶管理編輯((通過政府API)依據客戶編碼抓取基本資料))", @"", @"", @""); } finally { if (null != sMsg) { rm = new ErrorResponseMessage(sMsg, i_crm); } } return rm; } #endregion 客戶管理編輯((通過政府API)依據客戶編碼抓取基本資料) #region 客戶管理編輯(依據預約單號查詢匯入廠商) /// /// 客戶管理編輯(依據預約單號查詢匯入廠商) /// /// todo: describe i_crm parameter on GetCrmBaseDataByUniCode /// public ResponseMessage GetImportCustomersByAppointNO(RequestMessage i_crm) { ResponseMessage rm = null; string sMsg = null; var db = SugarBase.GetIntance(); try { do { var sAppointNO = _fetchString(i_crm, @"AppointNO"); var oImportCustomers = db.Queryable( (t1, t2) => t1.OrgID == t2.OrgID && t1.CustomerId == t2.guid) .Where((t1, t2) => t1.OrgID == i_crm.ORIGID && t1.AppointNO == sAppointNO) .Select((t1, t2) => t2) .Single(); rm = new SuccessResponseMessage(null, i_crm); rm.DATA.Add(BLWording.REL, oImportCustomers); } while (false); } catch (Exception ex) { sMsg = Util.GetLastExceptionMsg(ex); LogAndSendEmail(sMsg + @"Param:" + JsonToString(i_crm), ex, i_crm.ORIGID, i_crm.USERID, nameof(Customers_UpdService), @"客戶管理編輯", @"GetImportCustomersByAppointNO(客戶管理編輯(依據預約單號查詢匯入廠商))", @"", @"", @""); } finally { if (null != sMsg) { rm = new ErrorResponseMessage(sMsg, i_crm); } } return rm; } #endregion 客戶管理編輯(依據預約單號查詢匯入廠商) #region 客戶管理編輯(複製同步) /// /// 客戶管理編輯(複製同步) /// /// todo: describe i_crm parameter on UpdImportCustomers /// public ResponseMessage CopySync(RequestMessage i_crm) { ResponseMessage rm = null; string sMsg = null; ////檢查統一編號或客戶簡稱要為唯一 var CheckResult = CheckShortNameAndUniCode(i_crm); if (!CheckResult.Item1) return new ErrorResponseMessage(CheckResult.Item2, i_crm); try { rm = SugarBase.ExecTran(db => { do { string sCustomerGUID = Guid.NewGuid().ToString(); string sOldCustomerGUID = string.Empty; string sCurrentOrgID = _fetchString(i_crm, "currOrgID"); //客戶資料表身 string sOrgID = _fetchString(i_crm, OTB_CRM_Customers.CN_ORGID); if (string.IsNullOrEmpty(sOrgID)) { sMsg = "OrgID Error"; break; } var oEntity = _fetchEntity(i_crm); _setEntityBase(oEntity, i_crm); sOldCustomerGUID = oEntity.guid; oEntity.guid = sCustomerGUID; oEntity.OrgID = sOrgID; oEntity.CustomerNO = SerialNumber.GetMaxNumberByType(oEntity.OrgID, oEntity.CustomerNO, MaxNumberType.Empty, i_crm.USERID, 3); //客戶資料表頭 var oMstEntity = _fetchEntity(i_crm); _setEntityBase(oMstEntity, i_crm); oMstEntity.guid = Guid.NewGuid().ToString(); oMstEntity.CustomerNO = oEntity.CustomerNO; oMstEntity.customer_guid = sCustomerGUID; oMstEntity.Effective = "Y"; //找出參展資料並複製到不同公司別 #region 出口 //var saExport = db.Queryable((t1, t2) => t1.SN.ToString() == t2.ExhibitionNO && t1.OrgID == t2.OrgID) // .Select((t1, t2) => new { t1.OrgID, t1.SN, t1.ExhibitionCode, t1.Exhibitioname_TW, t1.Exhibitioname_CN, t2.ExhibitionNO, t2.Exhibitors, t2.Agent }).MergeTable() // .Where(it => it.ExhibitionNO != @"" && it.OrgID == sCurrentOrgID && (it.Exhibitors.Contains(sOldCustomerGUID) || it.Agent == sOldCustomerGUID)) // .ToList(); //if (saExport.Count > 0) //{ // List lExh = db.Queryable() // .Where(p => p.SN == saExport.Select(x => x.SN).First()) // .ToList(); // foreach (OTB_OPM_Exhibition data in lExh) // { // data.OrgID = sOrgID; // data.OrgID = sOrgID; // data.CreateUser = i_crm.USERID; // data.CreateDate = DateTime.Now; // data.ModifyUser = i_crm.USERID; // data.ModifyDate = DateTime.Now; // } // List lExportExh = db.Queryable() // .Where(p => p.ExhibitionNO == saExport.Select(x => x.SN).First().ToString()) // .ToList(); // var exData = db.Insertable(lExh) // .IgnoreColumns(p => p == OTB_OPM_Exhibition.CN_SN) // .ExecuteReturnIdentity(); // foreach (OTB_OPM_ExportExhibition data in lExportExh) // { // data.ExportBillNO = Guid.NewGuid().ToString(); // data.ExhibitionNO = exData.ToString(); // data.OrgID = sOrgID; // data.CreateUser = i_crm.USERID; // data.CreateDate = DateTime.Now; // data.ModifyUser = i_crm.USERID; // data.ModifyDate = DateTime.Now; // if (data.Exhibitors.IndexOf(sOldCustomerGUID) > -1) // { // data.Exhibitors.Replace(sOldCustomerGUID, sCustomerGUID); // } // if (data.Agent == sOldCustomerGUID) // { // data.Agent = sCustomerGUID; // } // } // db.Insertable(lExportExh) // .ExecuteCommand(); //} #endregion #region 進口 //var saImport = db.Queryable((t1, t2) => t1.SN.ToString() == t2.ExhibitionNO && t1.OrgID == t2.OrgID) // .Select((t1, t2) => new { t1.OrgID, t1.SN, t1.ExhibitionCode, t1.Exhibitioname_TW, t1.Exhibitioname_CN, t2.ExhibitionNO, t2.Supplier, t2.Agent }).MergeTable() // .Where(it => it.ExhibitionNO != @"" && it.OrgID == sCurrentOrgID && (it.Supplier.Contains(sOldCustomerGUID) || it.Agent == sOldCustomerGUID)) // .ToList(); //if (saImport.Count > 0) //{ // List lExh = db.Queryable() // .Where(p => p.SN == saImport.Select(x => x.SN).First()) // .ToList(); // foreach (OTB_OPM_Exhibition data in lExh) // { // data.OrgID = sOrgID; // data.OrgID = sOrgID; // data.CreateUser = i_crm.USERID; // data.CreateDate = DateTime.Now; // data.ModifyUser = i_crm.USERID; // data.ModifyDate = DateTime.Now; // } // List lImportExh = db.Queryable() // .Where(p => p.ExhibitionNO == saImport.Select(x => x.SN).First().ToString()) // .ToList(); // var exData = db.Insertable(lExh) // .IgnoreColumns(p => p == OTB_OPM_Exhibition.CN_SN) // .ExecuteReturnIdentity(); // foreach (OTB_OPM_ImportExhibition data in lImportExh) // { // data.ExportBillNO = Guid.NewGuid().ToString(); // data.ExhibitionNO = exData.ToString(); // data.OrgID = sOrgID; // data.CreateUser = i_crm.USERID; // data.CreateDate = DateTime.Now; // data.ModifyUser = i_crm.USERID; // data.ModifyDate = DateTime.Now; // if (data.Supplier.IndexOf(sOldCustomerGUID) > -1) // { // data.Supplier.Replace(sOldCustomerGUID, sCustomerGUID); // } // if (data.Agent == sOldCustomerGUID) // { // data.Agent = sCustomerGUID; // } // } // db.Insertable(lImportExh) // .ExecuteCommand(); //} #endregion #region 其他 //var saOther = db.Queryable((t1, t2) => t1.SN.ToString() == t2.ExhibitionNO && t1.OrgID == t2.OrgID) // .Select((t1, t2) => new { t1.OrgID, t1.SN, t1.ExhibitionCode, t1.Exhibitioname_TW, t1.Exhibitioname_CN, t2.ExhibitionNO, t2.Supplier, t2.Agent }).MergeTable() // .Where(it => it.ExhibitionNO != @"" && it.OrgID == sCurrentOrgID && (it.Supplier == sOldCustomerGUID || it.Agent == sOldCustomerGUID)) // .ToList(); //if (saOther.Count > 0) //{ // List lExh = db.Queryable() // .Where(p => p.SN == saOther.Select(x => x.SN).First()) // .ToList(); // foreach (OTB_OPM_Exhibition data in lExh) // { // data.OrgID = sOrgID; // data.CreateUser = i_crm.USERID; // data.CreateDate = DateTime.Now; // data.ModifyUser = i_crm.USERID; // data.ModifyDate = DateTime.Now; // } // List lOtherExh = db.Queryable() // .Where(p => p.ExhibitionNO == saOther.Select(x => x.SN).First().ToString()) // .ToList(); // var exData = db.Insertable(lExh) // .IgnoreColumns(p => p == OTB_OPM_Exhibition.CN_SN) // .ExecuteReturnIdentity(); // foreach (OTB_OPM_OtherExhibition data in lOtherExh) // { // data.Guid = Guid.NewGuid().ToString(); // data.ExhibitionNO = exData.ToString(); // data.OrgID = sOrgID; // data.CreateUser = i_crm.USERID; // data.CreateDate = DateTime.Now; // data.ModifyUser = i_crm.USERID; // data.ModifyDate = DateTime.Now; // if (data.Supplier == sOldCustomerGUID) // { // data.Supplier = sCustomerGUID; // } // if (data.Agent == sOldCustomerGUID) // { // data.Agent = sCustomerGUID; // } // } // db.Insertable(lOtherExh) // .ExecuteCommand(); //} #endregion #region 其他(駒驛) //var saOtherTG = db.Queryable((t1, t2) => t1.SN.ToString() == t2.ExhibitionNO && t1.OrgID == t2.OrgID) // .Select((t1, t2) => new { t1.OrgID, t1.SN, t1.ExhibitionCode, t1.Exhibitioname_TW, t1.Exhibitioname_CN, t2.ExhibitionNO, t2.Exhibitors, t2.Agent }).MergeTable() // .Where(it => it.ExhibitionNO != @"" && it.OrgID == sCurrentOrgID && (it.Exhibitors.Contains(sOldCustomerGUID) || it.Agent == sOldCustomerGUID)) // .ToList(); //if (saOtherTG.Count > 0) //{ // List lExh = db.Queryable() // .Where(p => p.SN == saOtherTG.Select(x => x.SN).First()) // .ToList(); // foreach (OTB_OPM_Exhibition data in lExh) // { // data.OrgID = sOrgID; // data.CreateUser = i_crm.USERID; // data.CreateDate = DateTime.Now; // data.ModifyUser = i_crm.USERID; // data.ModifyDate = DateTime.Now; // } // List lOtherTGExh = db.Queryable() // .Where(p => p.ExhibitionNO == saOtherTG.Select(x => x.SN).First().ToString()) // .ToList(); // var exData = db.Insertable(lExh) // .IgnoreColumns(p => p == OTB_OPM_Exhibition.CN_SN) // .ExecuteReturnIdentity(); // foreach (OTB_OPM_OtherExhibitionTG data in lOtherTGExh) // { // data.Guid = Guid.NewGuid().ToString(); // data.ExhibitionNO = exData.ToString(); // data.OrgID = sOrgID; // data.CreateUser = i_crm.USERID; // data.CreateDate = DateTime.Now; // data.ModifyUser = i_crm.USERID; // data.ModifyDate = DateTime.Now; // if (data.Exhibitors.IndexOf(sOldCustomerGUID) > -1) // { // data.Exhibitors.Replace(sOldCustomerGUID, sCustomerGUID); // } // if (data.Agent == sOldCustomerGUID) // { // data.Agent = sCustomerGUID; // } // } // db.Insertable(lOtherTGExh) // .ExecuteCommand(); //} #endregion var iRel = db.Insertable(oEntity).ExecuteReturnEntity(); var iRelMst = db.Insertable(oMstEntity).ExecuteCommand(); rm = new SuccessResponseMessage(null, i_crm); rm.DATA.Add(BLWording.REL, iRel); } 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(Customers_UpdService), @"客戶管理編輯", @"Update(客戶管理編輯(修改))", @"", @"", @""); } finally { if (null != sMsg) { rm = new ErrorResponseMessage(sMsg, i_crm); } } return rm; } #endregion 客戶管理編輯(修改) } }