/// <summary> /// 根据订单中的商品编号取得此商品的赠品列表 /// </summary> /// <param name="soSysNo">订单编号</param> /// <param name="productSysNo">商品编号</param> /// <returns>赠品列表</returns> public List <SOItemInfo> GetGiftBySOProductSysNo(int soSysNo, int productSysNo) //IPP3:OverseaOrderManagement].[dbo].[UP_OM_GetGiftInfo] { SOProcessor processor = ObjectFactory <SOProcessor> .Instance; SOBaseInfo soBaseInfo = processor.GetSOBaseInfoBySOSysNo(soSysNo); List <SOItemInfo> giftList = new List <SOItemInfo>(); if (soBaseInfo.SOType != SOType.Gift) { List <SOInfo> soList = null; List <int> soSysNoList = new List <int>(); if (soBaseInfo.Status == SOStatus.Split) { soList = processor.GetSubSOByMasterSOSysNo(soSysNo); } else { soSysNoList.Add(soSysNo); } soList = soList ?? new List <SOInfo>(); // 如果订单的赠品(指购买订单,送给客户的商品,但此商品并没有一起同订单发给客户,请与赠品规则的赠品,厂商赠品,附件相区分。),且赠品已经下单,则取得订单的赠品的订单编号 List <SOLogInfo> logList = new List <SOLogInfo>(); if (soList.Count > 0) { soList.ForEach(so => { List <SOLogInfo> t = ObjectFactory <SOLogProcessor> .Instance.GetSOLogBySOSysNoAndLogType(soSysNo, BizEntity.Common.BizLogType.Sale_SO_CreateGiftSO); if (t != null && t.Count > 0) { logList.AddRange(t); } }); } if (logList.Count > 0) { logList.ForEach(l => { int no = int.TryParse(l.Note, out no) ? no : 0; if (no != 0) { soSysNoList.Add(no); } }); } var tso = processor.GetSOBySOSysNoList(soSysNoList); if (tso != null && tso.Count > 0) { soList.AddRange(tso); } soList.ForEach(so => { List <SOItemInfo> tgList = null; if (so.BaseInfo.SOType == SOType.Gift) { tgList = (from item in so.Items where String.Format(",{0},", item.MasterProductSysNo).IndexOf(String.Format(",{0},", productSysNo)) >= 0 select item).ToList(); } else { List <SOPromotionInfo.GiftInfo> gList = (from p in so.SOPromotions from pd in p.SOPromotionDetails from g in p.GiftList where pd.MasterProductSysNo == productSysNo && (p.PromotionType == SOPromotionType.Accessory || p.PromotionType == SOPromotionType.SelfGift || p.PromotionType == SOPromotionType.VendorGift) select g).ToList(); tgList = (from item in so.Items join g in gList on item.ProductSysNo equals g.ProductSysNo select item).ToList(); } if (tgList != null && tgList.Count > 0) { giftList.AddRange(tgList); } }); } return(giftList); }
/// <summary> /// 根据订单编写列表取得多个订单 /// </summary> /// <param name="soSysNos">订单编号列表</param> /// <returns></returns> public List <SOInfo> GetSOBySOSysNoList(List <int> soSysNos) { return(soProcessor.GetSOBySOSysNoList(soSysNos)); }