/// <summary> /// 注意:此方法是服务自动调用,WEB页面请用Declare /// </summary> public void AutoDeclare(DateTime endTime, ref StringBuilder failMessage) { var canUseWarehouses = WMSSao.GetAllCanUseWarehouseDics(); foreach (var warehouseInfo in canUseWarehouses) { Guid warehouseId = warehouseInfo.Key; if (warehouseId != Guid.Empty) { //获取该仓库下的全部进货申报数据 var data = WMSSao.GetStockDeclareDtos(warehouseId, new List <Guid>()); if (data == null || data.Count == 0) { failMessage.AppendLine(warehouseInfo.Value + "没有可生成的数据!"); continue; } var purchasingSets = _purchaseSet.GetPurchaseSetListByWarehouseId(warehouseId); var realGoodsInfos = _goodsCenterSao.GetStockDeclareGridList(data.Keys.ToList()).ToDictionary(k => k.RealGoodsId, v => v); var purchasingGoodsDics = _purchasingDetailManager.GetStockDeclarePursingGoodsDicsWithFiliale(warehouseId, new List <Guid>(), new[] { PurchasingState.NoSubmit, PurchasingState.Purchasing, PurchasingState.PartComplete, PurchasingState.StockIn, PurchasingState.WaitingAudit, PurchasingState.Refusing }, data.Keys.ToList()); var details = GetDataList(warehouseId, data, purchasingGoodsDics, realGoodsInfos, purchasingSets); if (details.Count == 0) { failMessage.AppendLine(warehouseInfo.Value + "没有可生成的数据!"); continue; } failMessage.AppendLine(warehouseInfo.Value + "开始生成采购单!"); BuilderPurchasing(details, purchasingSets, warehouseId, null, "进货申报服务", ref failMessage); failMessage.AppendLine(warehouseInfo.Value + "结束生成采购单!"); } } }
protected void Page_Load(object sender, EventArgs e) { if (!IsPostBack) { RDP_StartTime.SelectedDate = Convert.ToDateTime(DateTime.Now.AddDays(-7).ToString("yyyy-MM-dd 00:00:00.000")); RDP_EndTime.SelectedDate = DateTime.Now; var personinfo = CurrentSession.Personnel.Get(); var items = _purchaseSet.GetPersonList(); foreach (var item in items) { item.PersonResponsibleName = _personnelSao.GetName(item.PersonResponsible); } RCB_Pm.DataSource = items; RCB_Pm.DataTextField = "PersonResponsibleName"; RCB_Pm.DataValueField = "PersonResponsible"; RCB_Pm.DataBind(); if (items.FirstOrDefault(ent => ent.PersonResponsible == personinfo.PersonnelId) != null) { RCB_Pm.SelectedValue = personinfo.PersonnelId.ToString(); } RCB_Pm.Items.Insert(0, new RadComboBoxItem("负责人列表", Guid.Empty.ToString())); var wList = WMSSao.GetWarehouseAuthDics(personinfo.PersonnelId); RCB_Warehouse.Items.Insert(0, new RadComboBoxItem("授权仓库列表", Guid.Empty.ToString())); RCB_Warehouse.DataSource = wList; RCB_Warehouse.DataBind(); if (wList.Count == 1) { RCB_Warehouse.SelectedValue = wList.First().Key.ToString(); } } }
/// <summary> /// 入库仓Changed事件 /// </summary> /// <param name="sender"></param> /// <param name="e"></param> protected void DDLWaerhouse_OnSelectedIndexChanged(object sender, EventArgs e) { Guid warehouseId = string.IsNullOrEmpty(RCB_Warehouse.SelectedValue) ? Guid.Empty : new Guid(RCB_Warehouse.SelectedValue); //获得入库储 var personinfo = CurrentSession.Personnel.Get(); var warehouseAuth = WMSSao.GetSingleWarehouseAndFilialeAuth(personinfo.PersonnelId, warehouseId); //获得物流配送公司 var hlist = new List <HostingFilialeAuth>(); var saleFiliales = new List <HostingFilialeAuth>(); if (warehouseAuth != null) { foreach (var filialeAuth in warehouseAuth.FilialeAuths) { hlist.Add(filialeAuth); foreach (var filiale in filialeAuth.ProxyFiliales) { if (hlist.All(p => p.HostingFilialeId != filiale.ProxyFilialeId) && saleFiliales.All(ent => ent.HostingFilialeId != filiale.ProxyFilialeId)) { saleFiliales.Add(new HostingFilialeAuth { HostingFilialeId = filiale.ProxyFilialeId, HostingFilialeName = filiale.ProxyFilialeName }); } } } } RCB_Filile.DataSource = hlist.Union(saleFiliales); RCB_Filile.DataTextField = "HostingFilialeName"; RCB_Filile.DataValueField = "HostingFilialeId"; RCB_Filile.DataBind(); RCB_Filile.Items.Insert(0, new RadComboBoxItem("全部", Guid.Empty.ToString())); }
/// <summary>加载公司,仓库,采购人 /// </summary> private void LoadData() { //仓库列表 var warehouseDics = WMSSao.GetWarehouseAuth(CurrentSession.Personnel.Get().PersonnelId); if (warehouseDics != null) { WarehouseAuths = warehouseDics; foreach (var warehouseDic in warehouseDics) { RCB_Warehouse.Items.Add(new RadComboBoxItem(warehouseDic.WarehouseName, warehouseDic.WarehouseId.ToString())); } RCB_Warehouse.Items.Insert(0, new RadComboBoxItem("--请选择仓库--", Guid.Empty.ToString())); } RCB_Warehouse.SelectedIndex = 0; //WarehouseId = GlobalConfig.MainWarehouseID; RCB_Personnel.DataTextField = "RealName"; RCB_Personnel.DataValueField = "PersonnelId"; RCB_Personnel.DataSource = PersonnelList; RCB_Personnel.DataBind(); RCB_Personnel.Items.Insert(0, new RadComboBoxItem("全部采购人", Guid.Empty.ToString())); RCB_Personnel.SelectedIndex = 0; PersonnelId = Guid.Empty; var list = _companyCussent.GetCompanyCussentList(CompanyType.Suppliers, Enum.State.Enable).ToList(); RCB_Company.DataSource = list; RCB_Company.DataTextField = "CompanyName"; RCB_Company.DataValueField = "CompanyId"; RCB_Company.DataBind(); RCB_Company.Items.Insert(0, new RadComboBoxItem("全部供应商", Guid.Empty.ToString())); RCB_Company.SelectedIndex = 0; CompanyId = Guid.Empty; }
/// <summary> /// 统计需调拨订单 /// </summary> /// <param name="pmId"></param> /// <param name="starttime"></param> /// <param name="endtime"></param> /// <param name="warehouseId"></param> /// <returns></returns> public IList <GoodsOrderInfo> GetAllocationOrdersList(Guid pmId, DateTime starttime, DateTime endtime, Guid warehouseId) { IList <GoodsOrderInfo> goodsOrderInfos = new List <GoodsOrderInfo>(); var orderNeedeGoods = _goodsOrderDetail.GetNeedPurchasingGoodses(warehouseId, pmId, starttime, endtime, new List <int> { (int)Enum.OrderState.RequirePurchase }); if (orderNeedeGoods.Count > 0) { var orderBaseList = _goodsOrderDetail.GetGoodsQuantityDics(warehouseId, starttime, endtime, pmId); // 获取商品的可用库存 Dictionary <Guid, int> stockQuantitys = WMSSao.GetLackQuantity(warehouseId, orderNeedeGoods.Select(ent => ent.RealGoodsId).Distinct()); List <NeedPurchasingGoods> details = GetList(orderNeedeGoods, stockQuantitys); var orderNos = details.Select(ent => ent.OrderNo).Distinct(); var filialeDics = MISService.GetAllFiliales().ToDictionary(k => k.ID, v => v.Name); foreach (var order in orderBaseList.Where(ent => orderNos.Contains(ent.OrderNo))) { if (goodsOrderInfos.Any(ent => ent.OrderNo == order.OrderNo)) { continue; } goodsOrderInfos.Add(new GoodsOrderInfo { OrderNo = order.OrderNo, Consignee = order.Consignee, EffectiveTime = order.EffectiveTime, Memo = filialeDics.ContainsKey(order.SaleFilialeId) ? filialeDics[order.SaleFilialeId] : "", SaleFilialeId = order.SaleFilialeId }); } } return(goodsOrderInfos); }
protected void RGGoodsOrder_NeedDataSource(object source, GridNeedDataSourceEventArgs e) { var pageIndex = RGGoodsOrder.CurrentPageIndex + 1; var pageSize = RGGoodsOrder.PageSize; int totalCount = 0; IList <GoodsOrderInfo> goodsOrderList = new List <GoodsOrderInfo>(); var authWarehouseList = WMSSao.GetWarehouseAuthDic(CurrentSession.Personnel.Get().PersonnelId); if (authWarehouseList != null && authWarehouseList.WarehouseDics != null && authWarehouseList.WarehouseDics.Count > 0) { var authWarehouseIds = authWarehouseList.WarehouseDics.Select(act => act.Key).ToList(); goodsOrderList = _goodsOrder.GetOrderList(authWarehouseIds, StartTime, EndTime, SearchGoods, SearchKey, new List <OrderState> { OrderState.RequirePurchase }, pageIndex, pageSize, out totalCount); } else { RAM.Alert("当前登录人没有授权仓库!"); } TextBoxDate.Text = CountRepeat(goodsOrderList); var expression = new GridSortExpression { FieldName = "OrderTime", SortOrder = GridSortOrder.Ascending }; RGGoodsOrder.MasterTableView.SortExpressions.AddSortExpression(expression); RGGoodsOrder.DataSource = goodsOrderList; RGGoodsOrder.VirtualItemCount = totalCount; if (goodsOrderList.Count > 0) { DicOrderClew = _operationLogManager.GetOperationLogList(goodsOrderList.Select(act => act.OrderId).ToList()); } }
protected void Page_Load(object sender, EventArgs e) { if (!IsPostBack) { AllSourceList = CacheCollection.Filiale.GetList().ToDictionary(ent => ent.ID, ent => ent.Name); RCB_OrderState.DataSource = GetOrderStateList().OrderBy(w => w.Key).ToList(); RCB_OrderState.DataBind(); var personinfo = CurrentSession.Personnel.Get(); var wList = WMSSao.GetWarehouseAuthDics(personinfo.PersonnelId); RCB_Warehouse.DataSource = wList; RCB_Warehouse.DataBind(); var yearlist = new List <int>(); for (var i = 2007; i <= (DateTime.Now.Year - GlobalConfig.KeepYear); i++) { yearlist.Add(i); } DDL_Years.DataSource = yearlist.OrderByDescending(y => y); DDL_Years.DataBind(); DDL_Years.Items.Add(new ListItem(GlobalConfig.KeepYear + "年内数据", "0")); DDL_Years.SelectedValue = "0"; YearsSelectedIndex(); BindWebSiteInfo(); } }
/// <summary>加载赠品商品 /// </summary> private void LoadGiftGoods() { var goodsGiftList = _goodsCenterSao.GetAllGiftList(); var result = WMSSao.BindGift(goodsGiftList.Select(ent => ent.Key)); foreach (var item in goodsGiftList) { var goodsStock = result.ContainsKey(item.Key) ? result[item.Key] : 0; GoodsGiftList.Items.Add(new RadListBoxItem(item.Value + " [" + goodsStock + "]", item.Key.ToString())); } }
/// <summary> /// 加载仓库 /// </summary> private void BindStock() { var personinfo = CurrentSession.Personnel.Get(); var result = WMSSao.GetWarehouseAuthDic(personinfo.PersonnelId); WarehouseDic = result != null && result.WarehouseDics != null ? result.WarehouseDics : new Dictionary <Guid, string>(); RCB_Stock.DataSource = WarehouseDic; RCB_Stock.DataTextField = "Value"; RCB_Stock.DataValueField = "Key"; RCB_Stock.DataBind(); }
protected void Page_Load(object sender, EventArgs e) { if (!IsPostBack) { var personnelInfo = CurrentSession.Personnel.Get(); //获取授权仓库列表 AuthWarehouses = WMSSao.GetWarehouseAuthDics(personnelInfo.PersonnelId); RDP_StartTime.SelectedDate = DateTime.Now.AddMonths(-1); RDP_EndTime.SelectedDate = DateTime.Now; } }
/// <summary> /// 根据入库红冲生成的新入库单,创建待处理队列数据 /// </summary> /// <param name="newInDocumentRedId"></param> /// <param name="occurTime"></param> /// <returns></returns> public IEnumerable <RealTimeGrossSettlementProcessQueueInfo> CreateByNewInDocumentAtRed(Guid newInDocumentRedId, DateTime occurTime) { List <RealTimeGrossSettlementProcessQueueInfo> result = new List <RealTimeGrossSettlementProcessQueueInfo>(); try { var newInDocument = _redDao.GetDocumentRed(newInDocumentRedId); // 入库红冲单,对应的新入库单 var newInDocumentDetails = _redDao.GetDocumentRedDetailListByRedId(newInDocumentRedId); // 入库红冲单,对应的新入库单明细 if (newInDocument == null || newInDocument.DocumentType != (int)DocumentType.NewInDocument || newInDocument.RedType != (int)RedType.ModifyPriceInRed || newInDocument.State != (int)DocumentRedState.Finished || newInDocumentDetails == null || newInDocumentDetails.Count == 0) { return(result); } var purchaseStockInRecord = _storageDao.GetStorageRecord(newInDocument.LinkTradeId); // 入库红冲单,对应的原始入库单 var purchaseStockInDetails = _storageDao.GetStorageRecordDetailListByStockId(newInDocument.LinkTradeId); // 入库红冲单,对应的原始入库单明细 if (purchaseStockInRecord == null || purchaseStockInRecord.StockType != (int)StorageRecordType.BuyStockIn || purchaseStockInRecord.StockState != (int)StorageRecordState.Finished || purchaseStockInDetails == null || purchaseStockInDetails.Count == 0) { return(result); } var goodsStockQuantityDict = WMSSao.GetGoodsStockQuantiyByFilialeIdGoodsIds(newInDocument.FilialeId, newInDocumentDetails.Select(m => m.GoodsId).Distinct()); var lastGoodsUnitPriceDict = GetLatestListByMultiGoods(newInDocument.FilialeId, newInDocumentDetails.Select(m => m.GoodsId).Distinct()); foreach (var groupByGoodsId in newInDocumentDetails.GroupBy(g => g.GoodsId)) { var purchaseStockInDetailsByGoodsId = purchaseStockInDetails.Where(m => m.GoodsId == groupByGoodsId.Key); var item = new RealTimeGrossSettlementProcessQueueInfo { QueueId = Guid.NewGuid(), FilialeId = newInDocument.FilialeId, GoodsId = groupByGoodsId.Key, StockQuantity = goodsStockQuantityDict.ContainsKey(groupByGoodsId.Key) ? goodsStockQuantityDict[groupByGoodsId.Key] : 0, LastGrossSettlement = lastGoodsUnitPriceDict.ContainsKey(groupByGoodsId.Key) ? lastGoodsUnitPriceDict[groupByGoodsId.Key] : null, RelatedTradeType = (int)RealTimeGrossSettlementRelatedTradeType.StockInFormDashAtRed, RelatedTradeNo = newInDocument.TradeCode, GoodsQuantityInBill = groupByGoodsId.Sum(m => Math.Abs(m.Quantity)), GoodsAmountInBill = groupByGoodsId.Sum(m => Math.Abs(m.UnitPrice * m.Quantity)), // 红冲单金额 ExtField_1 = purchaseStockInDetailsByGoodsId.Sum(m => Math.Abs(m.UnitPrice * m.Quantity)), // 原采购入库单金额 OccurTime = occurTime == DateTime.MinValue ? (newInDocument.AuditTime.HasValue ? newInDocument.AuditTime.Value : newInDocument.DateCreated) : occurTime, CreateTime = DateTime.Now }; result.Add(item); } } catch (Exception ex) { ERP.SAL.LogCenter.LogService.LogError(string.Format("创建基于入库红冲生成的新入库单 {0} 的即时结算价失败!", newInDocumentRedId), LOG_TAG, ex); } return(result); }
/// <summary> /// 获取仓库信息 /// </summary> /// <param name="eval"></param> /// <param name="isOut"></param> /// <returns></returns> private void GetWarehouseList() { var result = WMSSao.GetWarehouseAuthDic(Personnel.PersonnelId); var warehouseList = new Dictionary <Guid, string> { { Guid.Empty, "请选择仓库" } }; RCB_Warehouse.Text = String.Empty; RCB_Warehouse.Items.Clear(); RCB_Warehouse.DataSource = result != null?warehouseList.Union(result.WarehouseDics) : warehouseList; RCB_Warehouse.DataBind(); RCB_Warehouse.SelectedIndex = 0; }
private void BindInStock() { var personnel = CurrentSession.Personnel.Get(); var result = WMSSao.GetWarehouseAuthDic(personnel.PersonnelId); WarehouseAuth = result; RCB_Warehouse.DataSource = result != null && result.WarehouseDics != null ? result.WarehouseDics : new Dictionary <Guid, string>(); RCB_Warehouse.DataTextField = "Value"; RCB_Warehouse.DataValueField = "Key"; RCB_Warehouse.DataBind(); if (result != null && result.WarehouseDics != null && result.WarehouseDics.Count > 0) { RCB_Warehouse.SelectedValue = result.WarehouseDics.First().Key.ToString(); } }
/// <summary> ADD:2013.7.27 阮剑锋 /// </summary> /// <param name="id"></param> /// <returns></returns> public static string GetName(Guid id) { var dic = WMSSao.GetAllCanUseWarehouseDics(); if (dic == null) { return(string.Empty); } if (dic.ContainsKey(id)) { return(dic[id]); } return(string.Empty); }
/// <summary>添加日销售量 /// </summary> /// <param name="orderInfo"></param> /// <param name="detailList"></param> /// <param name="dicAvgSettlePrice"></param> public void SaveGoodsDaySalesStatistics(GoodsOrderInfo orderInfo, IList <GoodsOrderDetailInfo> detailList, IDictionary <Guid, decimal> dicAvgSettlePrice) { if (orderInfo.HostingFilialeId == Guid.Empty) { orderInfo.HostingFilialeId = WMSSao.GetHostingFilialeIdByWarehouseIdGoodsTypes(orderInfo.DeliverWarehouseId, orderInfo.SaleFilialeId, detailList.Select(ent => ent.GoodsType).Distinct()); } var goodsSeriesList = _goodsCenterSao.GetGoodsSeriesList(orderInfo.SaleFilialeId, detailList.Select(w => w.GoodsID).Distinct().ToList()); //根据订单Id获取实际商品价格(参加促销活动的商品要抵扣相应的促销价,从而得到新的实际商品价格) Dictionary <Guid, decimal> dicGoodsPriceDict = _promotionSao.GetGoodsPriceDict(orderInfo.OrderId); var list = new List <GoodsDaySalesStatisticsInfo>(); foreach (var goodsOrderDetailInfo in detailList) { var gdsinfo = new GoodsDaySalesStatisticsInfo { DeliverWarehouseId = orderInfo.DeliverWarehouseId, SaleFilialeId = orderInfo.SaleFilialeId, SalePlatformId = orderInfo.SalePlatformId, GoodsId = goodsOrderDetailInfo.GoodsID, RealGoodsId = goodsOrderDetailInfo.RealGoodsID, GoodsSales = goodsOrderDetailInfo.Quantity, DayTime = orderInfo.OrderTime, Specification = goodsOrderDetailInfo.PurchaseSpecification, SellPrice = ((dicGoodsPriceDict != null && dicGoodsPriceDict.ContainsKey(goodsOrderDetailInfo.GoodsID)) ? dicGoodsPriceDict[goodsOrderDetailInfo.GoodsID] : goodsOrderDetailInfo.SellPrice) * (decimal)goodsOrderDetailInfo.Quantity, GoodsName = goodsOrderDetailInfo.GoodsName, GoodsCode = goodsOrderDetailInfo.GoodsCode, ClassId = Guid.Empty, AvgSettlePrice = ((dicAvgSettlePrice != null && dicAvgSettlePrice.Any() && dicAvgSettlePrice.ContainsKey(goodsOrderDetailInfo.GoodsID)) ? dicAvgSettlePrice[goodsOrderDetailInfo.GoodsID] : 0) * (decimal)goodsOrderDetailInfo.Quantity, HostingFilialeId = orderInfo.HostingFilialeId }; if (goodsSeriesList != null && goodsSeriesList.Count > 0) { var result = goodsSeriesList.FirstOrDefault(p => p.GoodsID.Equals(goodsOrderDetailInfo.GoodsID)); if (result != null) { gdsinfo.GoodsName = result.GoodsName; gdsinfo.GoodsCode = result.GoodsCode; gdsinfo.ClassId = result.ClassID; gdsinfo.BrandId = result.BrandId; gdsinfo.SeriesId = result.SeriesId; } } list.Add(gdsinfo); } _goodsOrderDetail.SaveGoodsSales(list); }
public static void RunTask() { var pg = DataAccessor.GetPurchasingGoodsList(TaskType.All); var goodsIdList = pg.Select(w => w.GoodsId).Distinct().ToList(); IList <GoodsInfo> goodsList = _goodsCenterSao.GetGoodsListByGoodsIds(goodsIdList).ToList(); var warehouses = WMSSao.GetAllCanUseWarehouseDics(); foreach (var p in pg) { bool isRun; TaskType taskType; bool hasSaveLastPurchasingDate; int avgStockDays; DateTime nextStockDate; DateTime nextPurchasingDate; int step; GoodsInfo goodsInfo = goodsList.FirstOrDefault(w => w.GoodsId == p.GoodsId); if (goodsInfo == null) { continue; } p.GoodsName = goodsInfo.GoodsName; p.GoodsCode = goodsInfo.GoodsCode; p.Units = goodsInfo.Units; if (goodsInfo.ExpandInfo != null) { p.PackQuantity = goodsInfo.ExpandInfo.PackCount; } //计算报备日期是否匹配 CalculateStockDay(p, p.LastPurchasingDate, p.FilingDay, p.StockingDays, out isRun, out taskType, out avgStockDays, out nextStockDate, out step, out hasSaveLastPurchasingDate, out nextPurchasingDate); if (isRun) { Routine.DoPurchasing(p, goodsInfo, avgStockDays, nextStockDate, taskType, step, nextPurchasingDate, warehouses); } if (hasSaveLastPurchasingDate) { //记录最后的采购运行时间 DataAccessor.UpdateLastPurchasingDate(p.WarehouseId, p.HostingFilialeId, p.GoodsId, DateTime.Now); } } }
protected void Page_Load(object sender, EventArgs e) { if (!Page.IsPostBack) { AllCompanyList = _companyCussent.GetCompanyCussentList(); AllCompanyBalanceList = _companyCussent.GetCompanyBalanceList(); AllCompanyClassList = _companyClass.GetCompanyClassList(); AllCompanyBalanceDetailList = _companyCussent.GetCompanyBalanceDetailList(); Dictionary <Guid, string> dataSource = new Dictionary <Guid, string> { { Guid.Empty, "--所有--" } }; RCB_Warehouse.DataSource = dataSource.Union(WMSSao.GetAllCanUseWarehouseDics()); var filialeList = FilialeList.Where(f => f.FilialeTypes.Contains((int)FilialeType.SaleCompany) || f.FilialeTypes.Contains((int)FilialeType.LogisticsCompany) && !f.FilialeTypes.Contains((int)FilialeType.EntityShop)); RCB_FilialeList.DataSource = filialeList; var personnelInfo = CurrentSession.Personnel.Get(); if (personnelInfo.CurrentFilialeId == Guid.Empty) { personnelInfo.CurrentFilialeId = filialeList.First().ID; CurrentSession.Personnel.Set(personnelInfo); } SelectFilialeId = personnelInfo.CurrentFilialeId; GetCompanyCussent(); RCB_Warehouse.DataBind(); RCB_FilialeList.DataTextField = "Name"; RCB_FilialeList.DataValueField = "ID"; RCB_FilialeList.DataBind(); RCB_FilialeList.SelectedValue = string.Format("{0}", personnelInfo.CurrentFilialeId); RDP_StartDate.SelectedDate = DateTime.Now.AddDays(-30); RDP_EndDate.SelectedDate = DateTime.Now; } if (GetPowerOperationPoint("CBIsOut") && !string.IsNullOrWhiteSpace(RCB_FilialeList.SelectedValue) && new Guid(RCB_FilialeList.SelectedValue) != Guid.Empty) { CB_IsOut.Visible = true; } else { CB_IsOut.Visible = false; } }
public int AddNewApplyStock(ApplyStockInfo applyStockInfo, IList <ApplyStockDetailInfo> applyStockDetailInfoList, IDictionary <Guid, decimal> settledics, out string errorMsg) { var isalliance = FilialeManager.IsAllianceShopFiliale(applyStockInfo.FilialeId, out errorMsg); if (isalliance)//联盟店 { if (applyStockInfo.CompanyWarehouseId == Guid.Empty) { applyStockInfo.PurchaseType = (int)PurchaseType.FromPurchase; } var filialeInfo = FilialeManager.Get(applyStockInfo.CompanyId); applyStockInfo.CompanyName = filialeInfo != null && filialeInfo.ID != Guid.Empty ? filialeInfo.Name : "-"; //新增加盟店采购申请添加时待确认 if (applyStockInfo.StockState >= (int)ApplyStockState.Delivering) { var goodsIds = applyStockDetailInfoList.Select(ent => ent.CompGoodsID).Distinct().ToList(); var goodsInfos = _goodsInfoSao.GetGoodsListByGoodsIds(goodsIds); if (goodsInfos == null || goodsInfos.Count != goodsIds.Count) { errorMsg = "GMS商品信息获取失败"; return(-1); } var hostingFilialeId = WMSSao.GetHostingFilialeIdByWarehouseIdGoodsTypes(applyStockInfo.CompanyWarehouseId, applyStockInfo.CompanyId, goodsInfos.Select(ent => ent.GoodsType).Distinct()); if (hostingFilialeId == Guid.Empty) { errorMsg = "获取仓库对应的物流公司失败"; return(-1); } var flag = IsMatchSendCondition(applyStockInfo, applyStockDetailInfoList, hostingFilialeId, goodsInfos.ToDictionary(k => k.GoodsId, v => v), settledics, out errorMsg); //确认不通过修改采购申请状态为等待确认 if (!flag) { applyStockInfo.StockState = (int)ApplyStockState.Confirming; } } } if (_applyStockDao.Insert(applyStockInfo) && _applyStockDao.InsertDetail(applyStockDetailInfoList) > 0) { errorMsg = ""; return(applyStockInfo.StockState); } errorMsg = "添加申请明细时失败"; return(-1); }
/// <summary> /// 根据采购退货出库单,创建待处理队列数据 /// </summary> /// <param name="purchaseReturnStockOutId"></param> /// <param name="occurTime"></param> /// <returns></returns> public IEnumerable <RealTimeGrossSettlementProcessQueueInfo> CreateByPurchaseReturnStockOut(Guid purchaseReturnStockOutId, DateTime occurTime) { List <RealTimeGrossSettlementProcessQueueInfo> result = new List <RealTimeGrossSettlementProcessQueueInfo>(); try { var purchaseReturnStockOutRecord = _storageDao.GetStorageRecord(purchaseReturnStockOutId); var purchaseReturnStockOutDetails = _storageDao.GetStorageRecordDetailListByStockId(purchaseReturnStockOutId); if (purchaseReturnStockOutRecord == null || purchaseReturnStockOutRecord.StockType != (int)StorageRecordType.BuyStockOut || purchaseReturnStockOutRecord.StockState != (int)StorageRecordState.Finished || purchaseReturnStockOutDetails == null || purchaseReturnStockOutDetails.Count == 0) { return(result); } Dictionary <Guid, int> goodsStockQuantityDict = new Dictionary <Guid, int>(); // 销售公司向物流配送公司采购退货时,销售公司的库存为0 if (purchaseReturnStockOutRecord.TradeBothPartiesType != (int)TradeBothPartiesType.HostingToSale) { goodsStockQuantityDict = WMSSao.GetGoodsStockQuantiyByFilialeIdGoodsIds(purchaseReturnStockOutRecord.FilialeId, purchaseReturnStockOutDetails.Select(m => m.GoodsId).Distinct()); } var lastGoodsUnitPriceDict = GetLatestListByMultiGoods(purchaseReturnStockOutRecord.FilialeId, purchaseReturnStockOutDetails.Select(m => m.GoodsId).Distinct()); foreach (var groupByGoodsId in purchaseReturnStockOutDetails.GroupBy(g => g.GoodsId)) { var item = new RealTimeGrossSettlementProcessQueueInfo { QueueId = Guid.NewGuid(), FilialeId = purchaseReturnStockOutRecord.FilialeId, GoodsId = groupByGoodsId.Key, StockQuantity = goodsStockQuantityDict.ContainsKey(groupByGoodsId.Key) ? goodsStockQuantityDict[groupByGoodsId.Key] : 0, LastGrossSettlement = lastGoodsUnitPriceDict.ContainsKey(groupByGoodsId.Key) ? lastGoodsUnitPriceDict[groupByGoodsId.Key] : null, RelatedTradeType = (int)RealTimeGrossSettlementRelatedTradeType.PurchaseReturnStockOut, RelatedTradeNo = purchaseReturnStockOutRecord.TradeCode, GoodsQuantityInBill = groupByGoodsId.Sum(m => Math.Abs(m.Quantity)), GoodsAmountInBill = -groupByGoodsId.Sum(m => Math.Abs(m.UnitPrice * m.Quantity)),// 采购退货,金额为负数 OccurTime = occurTime == DateTime.MinValue ? purchaseReturnStockOutRecord.DateCreated : occurTime, CreateTime = DateTime.Now }; result.Add(item); } } catch (Exception ex) { ERP.SAL.LogCenter.LogService.LogError(string.Format("创建基于采购退货出库单 {0} 的即时结算价失败!", purchaseReturnStockOutId), LOG_TAG, ex); } return(result); }
/// <summary>RCB_GoodsGift下拉选择事件 /// </summary> protected void RCB_GoodsGiftOnSelectedIndexChanged(object o, RadComboBoxSelectedIndexChangedEventArgs e) { var rlbGoodsGift = new RadListBoxItem(e.Text, e.Value); if (!string.IsNullOrEmpty(e.Value) && RCB_GoodsGift.FindItemByValue(e.Value) == null) { var item = GoodsGiftList.Items.FirstOrDefault(ent => ent.Value == rlbGoodsGift.Value); if (item == null) { var goodsId = new List <Guid> { new Guid(e.Value) }; var result = WMSSao.BindGift(goodsId); var quantity = result.ContainsKey(new Guid(rlbGoodsGift.Value)) ? result[new Guid(rlbGoodsGift.Value)] : 0; GoodsGiftList.Items.Add(new RadListBoxItem(rlbGoodsGift.Text + " [" + quantity + "]", rlbGoodsGift.Value)); } RCB_GoodsGift.Text = string.Empty; } }
/// <summary> /// 按时间取出缺货商品数和缺货订单数 /// </summary> /// <param name="warehouseName"></param> /// <param name="personResponsible"></param> /// <param name="starttime"></param> /// <param name="endtime"></param> /// <param name="warehouseId"></param> /// <returns></returns> public IList <GoodsAllocateStatistic> GetNeedeGoodsOrderList(Guid warehouseId, string warehouseName, Guid personResponsible, DateTime starttime, DateTime endtime) { var result = new List <GoodsAllocateStatistic>(); var orderNeedeGoods = _goodsOrderDetail.GetNeedPurchasingGoodses(warehouseId, personResponsible, starttime, endtime, new List <int> { (int)Enum.OrderState.RequirePurchase }); if (orderNeedeGoods.Count > 0) { // 缺货数 Dictionary <Guid, int> stockQuantitys = WMSSao.GetLackQuantity(warehouseId, orderNeedeGoods.Select(ent => ent.RealGoodsId).Distinct()); foreach (var personResponsibleGroup in orderNeedeGoods.GroupBy(ent => ent.PersonResponsible)) { var allocateStatistic = new GoodsAllocateStatistic { PersonResponsible = personResponsible, PersonnelName = _personnelSao.GetName(personResponsibleGroup.Key), WarehouseId = warehouseId, WarehouseName = warehouseName }; List <NeedPurchasingGoods> details = new List <NeedPurchasingGoods>(); foreach (var needPurchasingGoodses in personResponsibleGroup.Where(ent => stockQuantitys.ContainsKey(ent.RealGoodsId))) { if (stockQuantitys[needPurchasingGoodses.RealGoodsId] < 0) { int quantity = needPurchasingGoodses.Quantity; if (quantity > Math.Abs(stockQuantitys[needPurchasingGoodses.RealGoodsId])) { needPurchasingGoodses.Quantity = quantity + stockQuantitys[needPurchasingGoodses.RealGoodsId]; } stockQuantitys[needPurchasingGoodses.RealGoodsId] = stockQuantitys[needPurchasingGoodses.RealGoodsId] + quantity; details.Add(needPurchasingGoodses); } } allocateStatistic.OrderCount = details.Select(ent => ent.OrderNo).Distinct().Count(); allocateStatistic.GoodsQuantities = details.Sum(ent => ent.Quantity); result.Add(allocateStatistic); } } return(result); }
protected void GridRGGoodsDemand_NeedDataSource(object sender, GridNeedDataSourceEventArgs e) { var datasource = new List <StockDeclareDTO>(); if (Page.IsPostBack) { if (!e.IsFromDetailTable) { var purchasingSets = CompanyId != Guid.Empty ? _purchaseSet.GetPurchaseSetListByWarehouseIdAndCompanyId(WarehouseId, CompanyId) : _purchaseSet.GetPurchaseSetListByWarehouseId(WarehouseId); if (purchasingSets == null || purchasingSets.Count == 0) { RAM.Alert("该仓库未找到对应的采购设置商品!"); RGGoodsDemand.DataSource = new List <StockDeclareDTO>(); return; } var dics = WMSSao.GetStockDeclareDtos(WarehouseId, new List <Guid>()); if (!string.IsNullOrWhiteSpace(TextBoxKeys.Text)) { var realGoodsIds = _goodsCenterSao.GetRealGoodsIdListByGoodsNameOrCode(TextBoxKeys.Text); if (realGoodsIds.Count > 0) { dics = dics.Where(act => realGoodsIds.Contains(act.Key)).ToDictionary(k => k.Key, v => v.Value); } } var realGoodsInfos = _goodsCenterSao.GetStockDeclareGridList(dics.Keys.ToList()).ToDictionary(k => k.RealGoodsId, v => v); var purchasingGoodsDics = _purchasingDetail.GetStockDeclarePursingGoodsDicsWithFiliale(WarehouseId, dics.Values.SelectMany(ent => ent).Select(ent => ent.FilialeId), new[] { PurchasingState.NoSubmit, PurchasingState.Purchasing, PurchasingState.PartComplete, PurchasingState.StockIn, PurchasingState.WaitingAudit, PurchasingState.Refusing }, dics.Keys.ToList()); List <StockDeclareDTO> data; StockDeclareDtos = GetDataList(dics, purchasingGoodsDics, realGoodsInfos, purchasingSets, out data); datasource.AddRange(data); } else //加载对应物流公司申报数 { datasource = GetDataList(StockDeclareDtos); } } RGGoodsDemand.DataSource = datasource.OrderBy(w => w.GoodsName).ThenBy(w => w.Sku).ToList(); }
/// <summary> /// /// </summary> /// <param name="applyId"></param> /// <returns></returns> public IList <ApplyStockDetailInfo> FindDetailList(Guid applyId) { var infoList = _applyStockDao.FindDetailList(applyId); var applyInfo = _applyStockDao.FindById(applyId); var quantityDic = new Dictionary <Guid, int>(); if (applyInfo != null) { quantityDic = WMSSao.GoodsEffitiveStockBySaleFilialeId(applyInfo.CompanyWarehouseId, null, infoList.GroupBy(ent => new { ent.GoodsId, ent.CompGoodsID }).ToDictionary(k => k.Key.GoodsId, v => v.Key.CompGoodsID), applyInfo.CompanyId); if (quantityDic == null) { throw new ApplicationException("库存中心异常FindDetailList"); } } foreach (var info in infoList) { info.GoodsStock = quantityDic.ContainsKey(info.GoodsId) ? quantityDic[info.GoodsId] : 0; } return(infoList); }
/// <summary> /// 原始查询 查询30天 /// </summary> /// <param name="warehouseId"></param> /// <param name="hostingFilialeId"></param> /// <param name="days"> </param> /// <param name="goodsInfo"> </param> /// <param name="childGoods"></param> /// <returns></returns> public IList <StockWarningInfo> GetStockWarningList(Guid warehouseId, Guid hostingFilialeId, int days, GoodsInfo goodsInfo, Dictionary <Guid, ChildGoodsInfo> childGoods) { IList <StockWarningInfo> stockWarningList = new List <StockWarningInfo>(); if (goodsInfo != null && goodsInfo.GoodsId != Guid.Empty) { var realgoodsIds = childGoods.Count > 0 ? childGoods.Keys.ToList() : new List <Guid> { goodsInfo.GoodsId }; stockWarningList = _stockWarningDao.GetStockWarningList(warehouseId, hostingFilialeId, realgoodsIds, days); if (stockWarningList.Count > 0) { var quantityList = WMSSao.GetStockStatisticsDtos(realgoodsIds.ToDictionary(k => k, v => goodsInfo.GoodsType), warehouseId, hostingFilialeId); foreach (var info in stockWarningList) { info.GoodsName = goodsInfo.GoodsName; info.GoodsCode = goodsInfo.GoodsCode; info.IsOnShelf = goodsInfo.IsOnShelf; if (childGoods.ContainsKey(info.GoodsId)) { var childGoodsInfo = childGoods[info.GoodsId] ?? new ChildGoodsInfo(); info.Specification = childGoodsInfo.Specification; info.IsScarcity = childGoodsInfo.IsScarcity; } var statisInfo = !quantityList.ContainsKey(hostingFilialeId) ? null : quantityList[hostingFilialeId].FirstOrDefault(act => act.RealGoodsId == info.GoodsId); if (statisInfo != null) { info.NonceWarehouseGoodsStock = statisInfo.CurrentStock; info.UppingQuantity = statisInfo.UppingQuantity; info.RequireQuantity = statisInfo.RequireQuantity; info.SubtotalQuantity = statisInfo.SubtotalQuantity; info.NonceRequest = statisInfo.RequireQuantity; } } } } return(stockWarningList.OrderBy(ent => ent.Specification).ToList()); }
protected void ShowGoodsGiftList(Guid goodsId) { try { if (goodsId != Guid.Empty) { var result = _goodsCenterSao.GetGoodsGiftList(goodsId); GoodsGiftList.Items.Clear(); if (result != null && result.Count > 0) { var goodsStockDic = WMSSao.BindGift(result.Select(ent => ent.Key)); foreach (var item in result) { var quantity = goodsStockDic.ContainsKey(item.Key) ? goodsStockDic[item.Key] : 0; GoodsGiftList.Items.Add(new RadListBoxItem(item.Value + " [" + quantity + "]", item.Key.ToString())); } } } } catch (Exception) { RAM.Alert("温馨提示:操作失败!"); } }
/// <summary> /// 统计需调拨商品 /// </summary> /// <param name="pmId"></param> /// <param name="starttime"></param> /// <param name="endtime"></param> /// <param name="warehouseId"></param> /// <returns></returns> public IList <StorageRecordDetailInfo> GetAllocationGoodsList(Guid pmId, DateTime starttime, DateTime endtime, Guid warehouseId) { IList <StorageRecordDetailInfo> datasource = new List <StorageRecordDetailInfo>(); var orderNeedeGoods = _goodsOrderDetail.GetNeedPurchasingGoodses(warehouseId, pmId, starttime, endtime, new List <int> { (int)Enum.OrderState.RequirePurchase }); if (orderNeedeGoods.Count > 0) { // 获取商品的可用库存 Dictionary <Guid, int> stockQuantitys = WMSSao.GetLackQuantity(warehouseId, orderNeedeGoods.Select(ent => ent.RealGoodsId).Distinct()); List <NeedPurchasingGoods> details = GetList(orderNeedeGoods, stockQuantitys); if (details.Any()) { var goodsDics = _goodsCenterSao.GetDictRealGoodsUnitModel(details.Select(ent => ent.RealGoodsId).Distinct().ToList()); foreach (var dic in details.GroupBy(ent => ent.RealGoodsId)) { var goods = goodsDics != null && goodsDics.ContainsKey(dic.Key) ? goodsDics[dic.Key] : null; if (goods == null) { continue; } datasource.Add(new StorageRecordDetailInfo { GoodsCode = goods.GoodsCode, GoodsName = goods.PurchaseName, Specification = goods.Specification, Quantity = dic.Sum(ent => ent.Quantity) }); } } } return(datasource); }
public IList <CityDTO> ToList() { return(CacheHelper.Get(Key, () => WMSSao.GetAddressLibrary().Cities)); }
/// <summary> /// 新增门店采购单 /// </summary> /// <param name="applyStockInfo"></param> /// <param name="applyStockDetailInfoList"></param> /// <param name="errorMsg"> </param> /// <returns>采购申请状态</returns> public int Add(ApplyStockInfo applyStockInfo, IList <ApplyStockDetailInfo> applyStockDetailInfoList, out string errorMsg) { int state = -1; try { var isalliance = FilialeManager.IsAllianceShopFiliale(applyStockInfo.FilialeId, out errorMsg); if (isalliance)//联盟店 { if (applyStockInfo.CompanyWarehouseId == Guid.Empty) { applyStockInfo.PurchaseType = (int)PurchaseType.FromPurchase; } var filialeInfo = FilialeManager.Get(applyStockInfo.CompanyId); applyStockInfo.CompanyName = filialeInfo != null && filialeInfo.ID != Guid.Empty ? filialeInfo.Name : "-"; //新增加盟店采购申请添加时待确认 if (applyStockInfo.StockState >= (int)ApplyStockState.Delivering) { var goodsIds = applyStockDetailInfoList.Select(ent => ent.CompGoodsID).Distinct().ToList(); var goodsInfos = _goodsInfoSao.GetGoodsListByGoodsIds(goodsIds); if (goodsInfos == null || goodsInfos.Count != goodsIds.Count) { errorMsg = "GMS商品信息获取失败"; return(state); } var hostingFilialeId = WMSSao.GetHostingFilialeIdByWarehouseIdGoodsTypes(applyStockInfo.CompanyWarehouseId, applyStockInfo.CompanyId, goodsInfos.Select(ent => ent.GoodsType).Distinct()); if (hostingFilialeId == Guid.Empty) { errorMsg = "获取仓库对应的物流公司失败"; return(state); } var settleDics = _grossSettlementDal.GetLatestUnitPriceListByMultiGoods(hostingFilialeId, goodsIds); var flag = IsMatchSendCondition(applyStockInfo, applyStockDetailInfoList, hostingFilialeId, goodsInfos.ToDictionary(k => k.GoodsId, v => v), settleDics, out errorMsg); //确认不通过修改采购申请状态为等待确认 if (!flag) { applyStockInfo.StockState = (int)ApplyStockState.Confirming; } } } using (var ts = new TransactionScope(TransactionScopeOption.Required)) { bool isSuccess = _applyStockDao.Insert(applyStockInfo); if (isSuccess) { if (_applyStockDao.InsertDetail(applyStockDetailInfoList) > 0) { state = applyStockInfo.StockState; } else { isSuccess = false; errorMsg = "添加申请明细时失败"; } } else { errorMsg = "添加申请记录失败"; } if (isSuccess) { ts.Complete(); } } return(state); } catch (Exception exp) { SAL.LogCenter.LogService.LogError(string.Format("新增采购申请报错: applyStockInfo={0}, applyStockDetailInfoList={1}", new Framework.Core.Serialize.JsonSerializer().Serialize(applyStockInfo), new Framework.Core.Serialize.JsonSerializer().Serialize(applyStockDetailInfoList)), "采购管理", exp); errorMsg = exp.Message; return(-1); } }
/// <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); }
public bool UpdateApplyStockState(ApplyStockInfo applyInfo, int state, bool alliance, out IDictionary <Guid, decimal> settleDics, out string msg) { msg = string.Empty; var dics = new Dictionary <Guid, string>(); settleDics = new Dictionary <Guid, decimal>(); if (state == (int)ApplyStockState.Delivering && !alliance) { var detailList = FindDetailList(applyInfo.ApplyId); var goodsIds = detailList.Select(ent => ent.CompGoodsID).Distinct().ToList(); var goodsInfos = _goodsInfoSao.GetGoodsListByGoodsIds(goodsIds); if (goodsInfos == null || goodsInfos.Count != goodsIds.Count) { msg = "GMS商品信息获取失败"; return(false); } var hostingFilialeId = WMSSao.GetHostingFilialeIdByWarehouseIdGoodsTypes(applyInfo.CompanyWarehouseId, applyInfo.CompanyId, goodsInfos.Select(ent => ent.GoodsType).Distinct()); if (hostingFilialeId == Guid.Empty) { msg = "获取仓库对应的物流公司失败"; return(false); } settleDics = _grossSettlementDal.GetLatestUnitPriceListByMultiGoods(hostingFilialeId, goodsIds); var result = IsMatchSendCondition(applyInfo, detailList, hostingFilialeId, goodsInfos.ToDictionary(k => k.GoodsId, v => v), settleDics, out msg); if (!result) { //更新采购申请信息 state = (int)ApplyStockState.Confirming; dics = detailList.Where(act => act.IsComfirmed).ToDictionary(k => k.GoodsId, v => v.ComfirmTips); } } bool flag = _applyStockDao.UpdateApplyStockState(applyInfo.ApplyId, state); //修改明细中商品需确认标识 if (flag && dics.Count > 0) { if (dics.Select(dic => _applyStockDao.UpdateDetailTips(applyInfo.ApplyId, dic.Key, dic.Value, true)).Any(result => !result)) { flag = false; } } if (!flag) { msg = "修改对应门店采购申请状态失败!"; } else { if (alliance) { string message; var parenId = FilialeManager.GetShopHeadFilialeId(applyInfo.FilialeId); //联盟店备注格式:[XX] var result = ShopSao.UpdatePurchaseState(parenId, applyInfo.ApplyId, state, string.Empty, out message); if (!result) { msg = message; flag = false; } } } return(flag); }