예제 #1
0
        public PurchaseLimitationGroup QueryPurchaseRestrictionSettingList(Guid superId, Guid purchseId)
        {
            PurchaseLimitationGroup view = null;
            string sql = @"DECLARE @IsGlobalPurchase int;
                           SELECT @IsGlobalPurchase = PurchaseLimitationType FROM dbo.T_Company
                           WHERE Id=@CompanyId;
                           IF @IsGlobalPurchase = 2 
                             BEGIN
                              SELECT LimitationGroup.Id,IsGlobal,Limitation.Id,Airlines,Departures,LimitationGroupId,LimitationId,ProductType,AllowOnlySelf,Rebate
                           FROM dbo.T_PurchaseLimitationGroup LimitationGroup
                           INNER JOIN dbo.T_PurchaseLimitation Limitation ON LimitationGroup.Id = Limitation.LimitationGroupId
                           INNER JOIN dbo.T_PurchaseLimitationRebate Rebate ON Limitation.Id = Rebate.LimitationId
                           WHERE CompanyId=@CompanyId;
                             END
                           ELSE IF @IsGlobalPurchase = 1
                           SELECT LimitationGroup.Id,IsGlobal,Limitation.Id,Airlines,Departures,LimitationGroupId,LimitationId,ProductType,AllowOnlySelf,Rebate
                           FROM dbo.T_PurchaseLimitationGroup LimitationGroup
                           INNER JOIN dbo.T_PurchaseLimitation Limitation ON LimitationGroup.Id = Limitation.LimitationGroupId
                           INNER JOIN dbo.T_PurchaseLimitationRebate Rebate ON Limitation.Id = Rebate.LimitationId
                           INNER JOIN dbo.T_IncomeGroup IncomeGroup ON LimitationGroup.IncomeGroupId = IncomeGroup.Id
                           INNER JOIN dbo.T_IncomeGroupRelation Relation ON IncomeGroup.Id = Relation.IncomeGroup 
                           WHERE Relation.Company =@PurchaseId AND IncomeGroup.Company =@CompanyId";

            using (var dbOperator = new DbOperator(Provider, ConnectionString))
            {
                dbOperator.AddParameter("CompanyId", superId);
                dbOperator.AddParameter("PurchaseId", purchseId);
                view = restructCotor(dbOperator, sql);
            }
            return(view);
        }
예제 #2
0
        string InsertPurchaseLimitationGroup(PurchaseLimitationGroup setting, DbOperator dbOperator)
        {
            string sql = @"INSERT INTO [dbo].[T_PurchaseLimitationGroup]([Id],[IsGlobal],[CompanyId],[IncomeGroupId]) VALUES(@GroupId,@IsGlobal,@CompanyId,@IncomeGroupId);";

            dbOperator.AddParameter("GroupId", setting.Id);
            dbOperator.AddParameter("IsGlobal", setting.IsGlobal);
            if (setting.CompanyId.HasValue)
            {
                dbOperator.AddParameter("CompanyId", setting.CompanyId);
            }
            else
            {
                dbOperator.AddParameter("CompanyId", DBNull.Value);
            }
            if (setting.IncomeGroupId.HasValue)
            {
                dbOperator.AddParameter("IncomeGroupId", setting.IncomeGroupId);
            }
            else
            {
                dbOperator.AddParameter("IncomeGroupId", DBNull.Value);
            }
            sql += InsertPurchaseLimitation(setting.Limitation, dbOperator);
            return(sql);
        }
예제 #3
0
        /// <summary>
        /// 新增全局或分组采买限制
        /// </summary>
        /// <param name="setting">采买限制</param>
        /// <param name="operatorAccount">操作员</param>
        public static void InsertPurchaseLimitationGroup(PurchaseLimitationGroup setting, string operatorAccount)
        {
            var repository = Factory.CreatePurchaseRestrictionSettingRepository();

            repository.InsertPurchaseRestrictionSetting(setting);
            string sql = string.Format("限制组Id:{0},是否是全局:{1},所属公司Id:{2},所属公司组Id:{3}",
                                       setting.Id.ToString(), setting.IsGlobal ? "是" : "否", setting.CompanyId.HasValue ? setting.CompanyId.ToString() : "", setting.IncomeGroupId.HasValue ? setting.IncomeGroupId.ToString() : "");
            int i = 1;

            foreach (var item in setting.Limitation)
            {
                var normal  = item.Rebate.Where(q => q.Type == PurchaseLimitationRateType.Normal).FirstOrDefault();
                var bargain = item.Rebate.Where(q => q.Type == PurchaseLimitationRateType.Bargain).FirstOrDefault();
                sql += string.Format("限制信息" + i + ":限制信息Id:{0},航空公司:{1},出发城市:{2}", item.Id.ToString(), item.Airlines, item.Departures);
                sql += string.Format("仅允许采购我发布的普通政策:{0},成人默认返点(普通政策):{1},仅允许采购我发布的特价政策:{2},成人默认返点(特价政策):{3}",
                                     normal.AllowOnlySelf ? "是" : "可以采取平台上其他普通政策",
                                     normal.Rebate.HasValue ? normal.Rebate.Value.ToString() : "",
                                     bargain.AllowOnlySelf ? "是" : "可以采取平台上其他特价政策",
                                     bargain.Rebate.HasValue ? bargain.Rebate.ToString() : "");
                i++;
            }
            saveAddLog("用户组采购限制设置",
                       sql,
                       OperatorRole.User,
                       setting.Id.ToString(),
                       operatorAccount);
        }
예제 #4
0
        PurchaseLimitationGroup restructCotor(DbOperator dbOperator, string sql)
        {
            PurchaseLimitationGroup view         = null;
            List <Guid>             limitationId = null;

            using (var reader = dbOperator.ExecuteReader(sql))
            {
                while (reader.Read())
                {
                    Guid currentLimitationGroupId = reader.GetGuid(0);
                    if (view == null || view.Id != currentLimitationGroupId)
                    {
                        view = new PurchaseLimitationGroup(reader.GetGuid(0));
                        if (!reader.IsDBNull(0))
                        {
                            view.Id = reader.GetGuid(0);
                        }
                        view.IsGlobal   = reader.GetBoolean(1);
                        view.Limitation = new List <PurchaseLimitation>();
                        limitationId    = new List <Guid>();
                    }
                    Guid currentLimitationId = reader.GetGuid(2);
                    if (!limitationId.Contains(currentLimitationId))
                    {
                        var limitation = new PurchaseLimitation()
                        {
                            Id                = reader.GetGuid(2),
                            Airlines          = reader.GetString(3),
                            Departures        = reader.GetString(4),
                            LimitationGroupId = reader.GetGuid(5),
                            Rebate            = new List <PurchaseLimitationRebate>()
                        };
                        view.Limitation.Add(limitation);
                        limitationId.Add(currentLimitationId);
                    }
                    Guid currentRebateLimitationId  = reader.GetGuid(6);
                    PurchaseLimitationRateType type = (PurchaseLimitationRateType)reader.GetByte(7);
                    var currentLimitation           = view.Limitation.Where(limit => limit.Id == currentRebateLimitationId).FirstOrDefault();
                    if (currentLimitation.Rebate.Count() == 0 ||
                        currentLimitation.Rebate.All(it => it.LimitationId == currentRebateLimitationId && it.Type != type))
                    {
                        var rebate = new PurchaseLimitationRebate()
                        {
                            LimitationId  = currentRebateLimitationId,
                            Type          = type,
                            AllowOnlySelf = reader.GetBoolean(8)
                        };
                        if (!reader.IsDBNull(9))
                        {
                            rebate.Rebate = reader.GetDecimal(9);
                        }
                        currentLimitation.Rebate.Add(rebate);
                    }
                }
            }
            return(view);
        }
예제 #5
0
        /// <summary>
        /// 修改全局采买限制
        /// </summary>
        /// <param name="setting">全局采买限制</param>
        /// <param name="operatorAccount">操作员</param>
        public static void UpdatePurchaseRestrictionSettingGlobal(PurchaseLimitationGroup setting, PurchaseLimitationType orginalType, string operatorAccount)
        {
            var orginalSetting = QueryPurchaseLimitationGroup(setting.CompanyId.Value);
            var repository     = Factory.CreatePurchaseRestrictionSettingRepository();

            repository.UpdatePurchaseRestrictionSettingGlobal(setting);
            string orginalContent = "";

            if (orginalType != PurchaseLimitationType.Global)
            {
                orginalContent = orginalType.GetDescription();
            }
            if (orginalSetting != null)
            {
                orginalContent = string.Format("限制组Id:{0},是否是全局:{1},所属公司Id:{2},所属公司组Id:{3}",
                                               orginalSetting.Id.ToString(), orginalSetting.IsGlobal ? "是" : "否", orginalSetting.CompanyId.HasValue ? orginalSetting.CompanyId.ToString() : "", orginalSetting.IncomeGroupId.HasValue ? orginalSetting.IncomeGroupId.ToString() : "");
                int i = 1;
                foreach (var item in orginalSetting.Limitation)
                {
                    var normal  = item.Rebate.Where(q => q.Type == PurchaseLimitationRateType.Normal).FirstOrDefault();
                    var bargain = item.Rebate.Where(q => q.Type == PurchaseLimitationRateType.Bargain).FirstOrDefault();
                    orginalContent += string.Format("限制信息" + i + ":限制信息Id:{0},航空公司:{1},出发城市:{2}", item.Id.ToString(), item.Airlines, item.Departures);
                    orginalContent += string.Format("仅允许采购我发布的普通政策:{0},成人默认返点(普通政策):{1},仅允许采购我发布的特价政策:{2},成人默认返点(特价政策):{3}",
                                                    normal.AllowOnlySelf ? "是" : "可以采取平台上其他普通政策",
                                                    normal.Rebate.HasValue ? normal.Rebate.Value.ToString() : "",
                                                    bargain.AllowOnlySelf ? "是" : "可以采取平台上其他特价政策",
                                                    bargain.Rebate.HasValue ? bargain.Rebate.ToString() : "");
                    i++;
                }
            }
            string newContent = "";

            if (setting != null)
            {
                newContent = string.Format("限制组Id:{0},是否是全局:{1},所属公司Id:{2},所属公司组Id:{3}",
                                           setting.Id.ToString(), setting.IsGlobal ? "是" : "否", setting.CompanyId.HasValue ? setting.CompanyId.ToString() : "", setting.IncomeGroupId.HasValue ? setting.IncomeGroupId.ToString() : "");
                int i = 1;
                foreach (var item in setting.Limitation)
                {
                    var normal  = item.Rebate.Where(q => q.Type == PurchaseLimitationRateType.Normal).FirstOrDefault();
                    var bargain = item.Rebate.Where(q => q.Type == PurchaseLimitationRateType.Bargain).FirstOrDefault();
                    newContent += string.Format("限制信息" + i + ":限制信息Id:{0},航空公司:{1},出发城市:{2}", item.Id.ToString(), item.Airlines, item.Departures);
                    newContent += string.Format("仅允许采购我发布的普通政策:{0},成人默认返点(普通政策):{1},仅允许采购我发布的特价政策:{2},成人默认返点(特价政策):{3}",
                                                normal.AllowOnlySelf ? "是" : "可以采取平台上其他普通政策",
                                                normal.Rebate.HasValue ? normal.Rebate.Value.ToString() : "",
                                                bargain.AllowOnlySelf ? "是" : "可以采取平台上其他特价政策",
                                                bargain.Rebate.HasValue ? bargain.Rebate.ToString() : "");
                    i++;
                }
            }
            saveUpdateLog("全局采购设置", orginalContent, newContent, OperatorRole.User, setting.Id.ToString(), operatorAccount);
        }
예제 #6
0
        public PurchaseLimitationGroup QueryPurchaseRestrictionSetting(Guid companyId)
        {
            PurchaseLimitationGroup view = null;
            string sql = @"SELECT LimitationGroup.Id,IsGlobal,Limitation.Id,Airlines,Departures,LimitationGroupId,LimitationId,ProductType,AllowOnlySelf,Rebate
                           FROM dbo.T_PurchaseLimitationGroup LimitationGroup
                           INNER JOIN dbo.T_PurchaseLimitation Limitation ON LimitationGroup.Id = Limitation.LimitationGroupId
                           INNER JOIN dbo.T_PurchaseLimitationRebate Rebate ON Limitation.Id = Rebate.LimitationId
                           WHERE CompanyId=@CompanyId";

            using (var dbOperator = new DbOperator(Provider, ConnectionString))
            {
                dbOperator.AddParameter("CompanyId", companyId);
                view = restructCotor(dbOperator, sql);
            }
            return(view);
        }
예제 #7
0
        public void UpdatePurchaseRestrictionSettingGlobal(PurchaseLimitationGroup setting)
        {
            string sql = @"DELETE FROM  Rebate
                                   FROM dbo.T_PurchaseLimitationGroup LimitationGroup
                                   INNER JOIN dbo.T_PurchaseLimitation Limitation  ON Limitation.LimitationGroupId = LimitationGroup.Id
                                   INNER JOIN dbo.T_PurchaseLimitationRebate Rebate ON  Limitation.Id = Rebate.LimitationId
                                   WHERE CompanyId= @CurrentCompanyId;
                             DELETE FROM  Limitation
                                    FROM dbo.T_PurchaseLimitationGroup LimitationGroup
                                    INNER JOIN dbo.T_PurchaseLimitation Limitation  ON Limitation.LimitationGroupId = LimitationGroup.Id
                                    WHERE CompanyId= @CurrentCompanyId;
                             DELETE FROM dbo.T_PurchaseLimitationGroup WHERE CompanyId= @CurrentCompanyId;";

            using (var dbOperator = new DbOperator(Provider, ConnectionString))
            {
                dbOperator.AddParameter("CurrentCompanyId", setting.CompanyId);
                sql += InsertPurchaseLimitationGroup(setting, dbOperator);
                dbOperator.ExecuteNonQuery(sql);
            }
        }
예제 #8
0
        internal static IEnumerable <PolicyInfoBase> FilterByGroupLimitation(this IEnumerable <PolicyInfoBase> policies, PurchaseLimitationGroup limitationGroup, Guid superior)
        {
            if (!policies.Any())
            {
                return(policies);
            }

            return(from p in policies
                   let limitation =
                       PolicyMatchServcie.GetPurchaseLimitationInfo(limitationGroup, p.Airline, p.Departure,
                                                                    p.PolicyType)
                       where limitation == null || p is SpecialPolicyInfo || p.Owner == superior
                       select p);
        }