/// <summary> /// 判断是否满足发货条件 /// </summary> /// <param name="applyStockInfo"></param> /// <param name="applyStockDetailInfoList"></param> /// <param name="hostingFilialeId"></param> /// <param name="goodsDics"></param> /// <param name="dicAvgSettlePrice"></param> /// <param name="errorMsg"></param> /// <returns></returns> public bool IsMatchSendCondition(ApplyStockInfo applyStockInfo, IList <ApplyStockDetailInfo> applyStockDetailInfoList, Guid hostingFilialeId, Dictionary <Guid, Model.Goods.GoodsInfo> goodsDics, IDictionary <Guid, decimal> dicAvgSettlePrice, out string errorMsg) { errorMsg = string.Empty; //获取子商品列表(for获取商品库存和销量) var realGoodsIds = applyStockDetailInfoList.Select(act => act.GoodsId).Distinct().ToList(); var flag = false; //2、发货量限制在可得15天外库存,如果采购数大于该库存手动确认 //当前库存-获取最近15天每日销量 var start = DateTime.Now.AddDays(-15); var end = DateTime.Now.AddDays(-1); var stockCurrent = WMSSao.GoodsEffitiveStock(applyStockInfo.CompanyWarehouseId, null, realGoodsIds, hostingFilialeId); var saleGoodsIds = _daySalesStatistics.GetRealGoodsDaySales(applyStockInfo.CompanyWarehouseId, applyStockInfo.CompanyId, new DateTime(start.Year, start.Month, start.Day), new DateTime(end.Year, end.Month, end.Day), realGoodsIds); if (stockCurrent != null && stockCurrent.Count > 0) { bool isNeedeConfirm = false; foreach (var realGoodsId in realGoodsIds) { var dataList = applyStockDetailInfoList.Where(act => act.GoodsId == realGoodsId).ToList(); var stock = stockCurrent.Count > 0 && stockCurrent.ContainsKey(realGoodsId) ? stockCurrent[realGoodsId] : 0; var sale = saleGoodsIds.FirstOrDefault(act => act.Key == realGoodsId); var tempFlag = stock - (sale != null ? sale.Value : 0) > dataList.Sum(act => act.Quantity); if (!isNeedeConfirm || flag) { flag = tempFlag; } isNeedeConfirm = true; if (!tempFlag) { foreach (var applyStockDetailInfo in dataList) { applyStockDetailInfo.IsComfirmed = true; applyStockDetailInfo.ComfirmTips = "当前库存<可得15天外销量"; } } } } if (flag) { //获取商品采购设置列表 var purchaseSetList = _purchaseSet.GetPurchaseSetInfoList(goodsDics.Keys, applyStockInfo.CompanyWarehouseId, hostingFilialeId); if (purchaseSetList == null || purchaseSetList.Count == 0) { errorMsg = "采购商品全部未绑定商品采购设置!"; return(false); } foreach (var goodsInfo in goodsDics.Values) { var dataList = applyStockDetailInfoList.Where(act => act.CompGoodsID == goodsInfo.GoodsId && !act.IsComfirmed).ToList(); string content = string.Empty; //1、判断是否存在护理液等特殊商品 if (goodsInfo.GoodsType == (int)GoodsType.LensSolution || goodsInfo.GoodsType == (int)GoodsType.CareProducts || goodsInfo.GoodsType == (int)GoodsType.NoSet) { flag = false; content = "护理液/用品或未设置等特殊商品"; } if (flag) { var setInfo = purchaseSetList.FirstOrDefault(act => act.GoodsId == goodsInfo.GoodsId); if (goodsInfo.ExpandInfo != null && setInfo != null) { //3、加盟价<=成本价*5% && 加盟价<=采购价/年返点 需手动确认,采购状态为待确认 if (goodsInfo.ExpandInfo.JoinPrice > (dicAvgSettlePrice.ContainsKey(goodsInfo.GoodsId) ? dicAvgSettlePrice[goodsInfo.GoodsId] : 0) * decimal.Parse("0.05")) { if (goodsInfo.ExpandInfo.YearDiscount == 0) { continue; } if (goodsInfo.ExpandInfo.JoinPrice > (setInfo.PurchasePrice / goodsInfo.ExpandInfo.YearDiscount)) { continue; } content = "加盟价<=采购价/年返点"; } else { content = "加盟价<=成本价*5%"; } } flag = false; } if (content.Length > 0) { foreach (var applyStockDetailInfo in dataList) { applyStockDetailInfo.IsComfirmed = true; applyStockDetailInfo.ComfirmTips = content; } } } } return(flag); }