/// <summary> /// 检查规则-货到付款 /// </summary> /// <param name="entity"></param> private void CheckCODSO(SOInfo entity, CustomerInfo custom) { m_auditUserSysNoTemp = 800; //注意这里一定要是这个用户,Alan说有一个邮件专门根据这个用户来给货到付款的客户发短信 #region 根据订单的客户等级及订单金额判断是否能够通过自动审核 if (m_auditSwitch.IsCheckOrderAmt) { CustomerRankAmt currentRank = null; switch (custom.Rank) { case CustomerRank.Ferrum: case CustomerRank.Copper: case CustomerRank.Silver: currentRank = m_customerRankAmtList.Find(x => { return(x.CustomerRank == 3); }); break; case CustomerRank.Golden: case CustomerRank.Diamond: case CustomerRank.Crown: case CustomerRank.Supremacy: currentRank = m_customerRankAmtList.Find(x => { return(x.CustomerRank == 4); }); break; default: break; } if (currentRank != null && entity.BaseInfo.SOAmount > currentRank.AmtLimit) { ThrowException(entity, "订单金额超出了此客户等级对应的订单金额上线-不能通过自动审核"); } } #endregion }
//设置 审单改观检查项 开关状态 private void SetAuditSwitchStatus() { m_auditSwitch = new AutoAuditSwitch(); #region 填充开关状态 if (m_csTBOrderCheckMasterList.Count > 0) { //判断 关键字开关 是否打开 if (m_csTBOrderCheckMasterList.Exists(x => { return(x.CheckType == "KW" && x.Status == OrderCheckStatus.Invalid); })) { m_auditSwitch.IsCheckKeyWords = true; } //判断 配送方式项开关 是否打开 if (m_csTBOrderCheckMasterList.Exists(x => { return(x.CheckType == "ST" && x.Status == OrderCheckStatus.Invalid); })) { m_auditSwitch.IsCheckShipType = true; } //判断 支付方式开关 是否打开 if (m_csTBOrderCheckMasterList.Exists(x => { return(x.CheckType == "PT" && x.Status == OrderCheckStatus.Invalid); })) { m_auditSwitch.IsCheckPayType = true; } //判断 增值税发票开关 是否打开 if (m_csTBOrderCheckMasterList.Exists(x => { return(x.CheckType == "VAT" && x.Status == OrderCheckStatus.Invalid); })) { m_auditSwitch.IsCheckVAT = true; } //判断 含有对应产品类别的产品的订单(C3类)开关 是否打开 if (m_csTBOrderCheckMasterList.Exists(x => { return(x.CheckType == "PC3" && x.Status == OrderCheckStatus.Invalid); })) { m_auditSwitch.IsCheckProductType = true; } //判断 FP状态开关 是否打开 if (m_csTBOrderCheckMasterList.Exists(x => { return((x.CheckType == "FP") && x.Status == OrderCheckStatus.Invalid); })) { m_auditSwitch.IsCheckFPStatus = true; } //判 断客户类型开关 是否打开 if (m_csTBOrderCheckMasterList.Exists(x => { return(x.CheckType == "CT" && x.Status == OrderCheckStatus.Invalid); })) { m_auditSwitch.IsCheckCustomerType = true; } //判断 订单中使用积分或者优惠券超过50%开关 是否打开 if (m_csTBOrderCheckMasterList.Exists(x => { return(x.CheckType == "PC" && x.Status == OrderCheckStatus.Invalid); })) { m_auditSwitch.IsCheckPointPromotion = true; } //判断 订单金额大于上对应登记上线 的开关是否 打开 if (m_csTBOrderCheckMasterList.Exists(x => { return(x.CheckType == "AMT" && x.Status == OrderCheckStatus.Invalid); })) { m_auditSwitch.IsCheckOrderAmt = true; } //判断 配送服务类型 开关是否打开 if (m_csTBOrderCheckMasterList.Exists(x => { return(x.CheckType == "DT" && x.Status == OrderCheckStatus.Invalid); })) { m_auditSwitch.IsCheckShipServiceType = true; } } #endregion #region 填充不能通过自动审单相应列表信息 //设置不能通过自动审单的关键字列表 if (m_auditSwitch.IsCheckKeyWords) { //过滤客户地址类型的关键字信息列表 (模糊匹配) CA:客户地址 m_dispassReceiveAddressList = new List <string>(); var addressList = m_csTBOrderCheckItemList.Where(x => { return(x.ReferenceType == "CA" && x.Status == OrderCheckStatus.Invalid); }); foreach (var itemAddress in addressList) { m_dispassReceiveAddressList.Add(itemAddress.ReferenceContent); } //过滤客户电话类型的关键字 信息列表(精确匹配) CP:客户电话 m_dispassReceiveCellPhoneOrPhoneList = new List <string>(); var phoneList = m_csTBOrderCheckItemList.Where(x => { return(x.ReferenceType == "CP" && x.Status == OrderCheckStatus.Invalid); }); foreach (var itemPhone in phoneList) { m_dispassReceiveCellPhoneOrPhoneList.Add(itemPhone.ReferenceContent); } //过滤联系人类型的关键字列表信息(模糊匹配) CN:联系人 m_dispassReceiveContactList = new List <string>(); var contactList = m_csTBOrderCheckItemList.Where(x => { return(x.ReferenceType == "CN" && x.Status == OrderCheckStatus.Invalid); }); foreach (var itemContact in contactList) { m_dispassReceiveContactList.Add(itemContact.ReferenceContent); } } //设置不能通过自动审单的配送方式列表 if (m_auditSwitch.IsCheckShipType) { m_dispassShipTypeSysNoList = new List <int>(); //过滤配送方式列表信息(ST:配送方式类型) var shipList = m_csTBOrderCheckItemList.Where(x => { return(x.ReferenceType == "ST" && x.Status == OrderCheckStatus.Invalid); }); foreach (var itemShip in shipList) { m_dispassShipTypeSysNoList.Add(Convert.ToInt32(itemShip.ReferenceContent)); } } //设置不能通过自动审单的支付方式列表 if (m_auditSwitch.IsCheckPayType) { m_dispassPayTypeSysNoList = new List <int>(); //过滤支付方式列表信息(PT:支付方式类型) var payList = m_csTBOrderCheckItemList.Where(x => { return(x.ReferenceType == "PT" && x.Status == OrderCheckStatus.Invalid); }); foreach (var itemPay in payList) { m_dispassPayTypeSysNoList.Add(Convert.ToInt32(itemPay.ReferenceContent)); } } //设置 订单金额 检查项 if (m_auditSwitch.IsCheckOrderAmt) { m_customerRankAmtList = new List <CustomerRankAmt>(); //过滤 订单金额 及对应的用户等级列表 var rankList = m_csTBOrderCheckItemList.Where(x => { return((x.ReferenceType == "1AL" || x.ReferenceType == "2AL" || x.ReferenceType == "3AL" || x.ReferenceType == "4AL" || x.ReferenceType == "5AL") && x.Status == OrderCheckStatus.Invalid); }); foreach (var item in rankList) { CustomerRankAmt crle = new CustomerRankAmt(); switch (item.ReferenceType) { case "1AL": crle.CustomerRank = 3; break; case "2AL": crle.CustomerRank = 4; break; case "3AL": crle.CustomerRank = 5; break; case "4AL": crle.CustomerRank = 6; break; case "5AL": crle.CustomerRank = 7; break; default: break; } crle.AmtLimit = Convert.ToDecimal(item.ReferenceContent); m_customerRankAmtList.Add(crle); } } #endregion }