/// <summary> /// 集合促销(即 满元、组合) /// </summary> /// <param name="collections"></param> /// <returns></returns> private List <KeyValuePair <MarketingTimelinessLimit, ActiveMarketingRule> > GetCollectionPromotionForMarketing(List <KeyValuePair <MarketingTimelinessLimit, ActiveMarketingRule> > collections) { var today = DateTime.Now.Date; var discountQuery = (from a in PromotionBlendService.CurrentRepository.Entities from b in CommodityPromotionService.CurrentRepository.Entities where a.CommodityId == b.Id && b.State != 2 && b.EndDate >= today && (b.PromotionType == 3 || b.PromotionType == 5) select new { a, b }).ToList(); foreach (var item in discountQuery) { try { var marketingTimelinessLimit = GetMarketingTimelinessLimit(item.b); var marketingRules = GetMarketingRule(item.b); marketingRules.IsRepeatMarketing = Convert.ToBoolean(item.a.AllowedAccumulate); marketingRules.Type = item.a.RuleType == 1 ? MarketingType.Zuhe : MarketingType.Manyuan; var promotionBlendList = PromotionBlendListService.CurrentRepository.Entities.Where(o => o.CommodityId == item.a.CommodityId).ToList(); var barcodeRanges = new List <string>(); var giftRanges = new List <KeyValuePair <string, decimal> >(); var ignoreBarcodeRanges = new List <string>(); foreach (var child in promotionBlendList) { switch (child.BlendType) { case 1: barcodeRanges.Add(child.BarcodeOrCategorySN); break; case 2: if (child.BrandSN != 0) { var productList = GetProductRanges(Convert.ToInt32(child.BarcodeOrCategorySN), child.CategoryGrade ?? 3, child.BrandSN); barcodeRanges.AddRange(productList); } else { var productList = GetProductRanges(Convert.ToInt32(child.BarcodeOrCategorySN), child.CategoryGrade ?? 3); barcodeRanges.AddRange(productList); } break; case 3: giftRanges.Add(new KeyValuePair <string, decimal>(child.BarcodeOrCategorySN, 1)); break; case 4: if (child.BrandSN != 0) { var productList = GetProductRanges(Convert.ToInt32(child.BarcodeOrCategorySN), child.CategoryGrade ?? 3, child.BrandSN); giftRanges.AddRange(productList.Select(o => new KeyValuePair <string, decimal>(o, 1)).ToList()); } else { var productList = GetProductRanges(Convert.ToInt32(child.BarcodeOrCategorySN), child.CategoryGrade ?? 3); giftRanges.AddRange(productList.Select(o => new KeyValuePair <string, decimal>(o, 1)).ToList()); } break; case 5: ignoreBarcodeRanges.Add(child.BarcodeOrCategorySN); break; case 6: if (child.BrandSN != 0) { var productList = GetProductRanges(Convert.ToInt32(child.BarcodeOrCategorySN), child.CategoryGrade ?? 3, child.BrandSN); ignoreBarcodeRanges.AddRange(productList); } else { var productList = GetProductRanges(Convert.ToInt32(child.BarcodeOrCategorySN), child.CategoryGrade ?? 3); ignoreBarcodeRanges.AddRange(productList); } break; } } marketingRules.BarcodeRange = barcodeRanges; marketingRules.IgnoreBarcodeRange = ignoreBarcodeRanges; marketingRules.RuleNumber = item.a.FullNumber; marketingRules.MarketingAction = new MarketingAction() { AddMoney = 0m, Discount = 0m, MarketingActionMode = MarketingActionMode.Gift, DiscountAmount = 0m, MarketingActionNumber = 0m, Repeatable = Convert.ToBoolean(item.a.AllowedAccumulate) }; switch (item.a.PromotionType) { case 1: marketingRules.MarketingAction.MarketingActionMode = MarketingActionMode.NowCash; marketingRules.MarketingAction.Amount = item.a.DiscountOrPrice; break; case 2: marketingRules.MarketingAction.MarketingActionMode = MarketingActionMode.CashCoupon; marketingRules.MarketingAction.Amount = item.a.DiscountOrPrice; break; case 3: marketingRules.MarketingAction.MarketingActionMode = MarketingActionMode.Discount; marketingRules.MarketingAction.Discount = item.a.DiscountOrPrice; break; case 4: marketingRules.MarketingAction.MarketingActionMode = MarketingActionMode.AddMoneyToGive; break; case 5: marketingRules.MarketingAction.MarketingActionMode = MarketingActionMode.AddMoneyToGive; var products = ProductRecordService.CheckedPrice(StoreId, CompanyId, null, item.a.PriceRange, 0); var ranges = products.Select(o => o.Barcode).Distinct().Select(o => new KeyValuePair <string, decimal>(o, 1)).ToList(); marketingRules.MarketingAction.Gifts = ranges; break; } switch (item.a.RuleType) { case 1: marketingRules.MeteringMode = MeteringMode.QiGouLiang; break; case 2: marketingRules.MeteringMode = MeteringMode.ManYuan; break; } collections.Add(new KeyValuePair <MarketingTimelinessLimit, ActiveMarketingRule>(marketingTimelinessLimit, marketingRules)); } catch (Exception ex) { goto Continue; } Continue: continue; } return(collections); }
public ProductInfo GetProductInfoByBarcode(string barcode, bool isFindWeigh = false) { return(ProductRecordService.GetProductRecod(StoreId, barcode, CompanyId, isFindWeigh)); }
public ValueObject.PageResult <InventoryResult> CheckedInventory(IEnumerable <int> categorySns, string keyword, decimal price, int pageSize, int pageIndex) { //改为从产品档案来 return(ProductRecordService.CheckedInventory(StoreId, CompanyId, categorySns, keyword, price, pageSize, pageIndex)); }