Example #1
0
        /// <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
        }
Example #2
0
        //设置 审单改观检查项 开关状态
        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
        }