public void DoProduct(Guid productId, Guid customerId, Guid slId, int stepCode, double qty, double unQty, double freezeQty) { var spBll = new StockProduct(); var spInfo = spBll.GetModel(productId, customerId); if (spInfo == null) { throw new ArgumentException(MC.M_StockProductInvalidError); } var pslaList = JsonConvert.DeserializeObject <List <ProductStockLocationAttrInfo> >(spInfo.StockLocations); var currTime = DateTime.Now; if (stepCode == (int)EnumData.EnumStep.发货) { #region 发货 var pslItem = pslaList.FirstOrDefault(m => m.StockLocationId.Equals(slId)); if (pslItem == null) { throw new ArgumentException(MC.GetString(MC.Params_Data_NotExist, "库位ID为“" + slId + "”")); } pslItem.FreezeQty += freezeQty; pslItem.Qty -= freezeQty; if (pslItem.Qty == 0 && pslItem.FreezeQty == 0) { pslaList.Remove(pslItem); } spInfo.Qty -= freezeQty; spInfo.FreezeQty += freezeQty; #endregion } else if (stepCode == (int)EnumData.EnumStep.架) { #region 架 var pslItem = pslaList.FirstOrDefault(m => m.StockLocationId.Equals(slId)); if (pslItem == null) { var slBll = new StockLocation(); var slInfo = slBll.GetModel(slId); if (slInfo == null) { throw new ArgumentException(MC.GetString(MC.Params_Data_NotExist, "库位ID为“" + slId + "”")); } pslaList.Add(new ProductStockLocationAttrInfo(slId, slInfo.Code, slInfo.Named, qty, 0, currTime)); } else { pslItem.Qty += qty; if (pslItem.Qty == 0 && pslItem.FreezeQty == 0) { pslaList.Remove(pslItem); } } spInfo.Qty += qty; spInfo.UnQty -= qty; if (spInfo.UnQty < 0) { throw new ArgumentException(MC.GetString(MC.Request_InvalidQty, qty.ToString())); } #endregion } spInfo.StockLocations = JsonConvert.SerializeObject(pslaList); spBll.Update(spInfo); }
public void DoShelfMissionProduct(string itemAppend) { var items = itemAppend.Split(new char[] { '$' }, StringSplitOptions.RemoveEmptyEntries); var shelfMissionId = Guid.Parse(items[0]); var orderId = Guid.Parse(items[1]); var productId = Guid.Parse(items[2]); var smBll = new ShelfMission(); var smInfo = smBll.GetModel(shelfMissionId); if (smInfo == null) { throw new ArgumentException(MC.GetString(MC.Params_Data_NotExist, shelfMissionId.ToString())); } var oBll = new OrderReceipt(); var orderInfo = oBll.GetModel(orderId); if (orderInfo == null) { throw new ArgumentException(MC.GetString(MC.Params_Data_NotExist, orderId.ToString())); } var pBll = new Product(); var productInfo = pBll.GetModel(productId); var minVolume = productInfo.OutPackVolume == 0 ? 1 : productInfo.OutPackVolume; var slItems = items[3].Split(new char[] { '|' }, StringSplitOptions.RemoveEmptyEntries); var slBll = new StockLocation(); var pslaList = new List <ProductStockLocationAttrInfo>(); var dicSl = new Dictionary <Guid, float>(); var totalQty = 0f; var currTime = DateTime.Now; foreach (var item in slItems) { var subItems = item.Split(new char[] { ',' }, StringSplitOptions.RemoveEmptyEntries); var slId = Guid.Parse(subItems[0]); var qty = float.Parse(subItems[1]); var slInfo = slBll.GetModel(slId); if (slInfo == null) { throw new ArgumentException(MC.GetString(MC.Params_Data_NotExist, "库位ID为" + slId + "")); } pslaList.Add(new ProductStockLocationAttrInfo(slId, slInfo.Code, slInfo.Named, qty, 0, currTime)); dicSl.Add(slId, qty); totalQty += qty; } var smpBll = new ShelfMissionProduct(); var smpInfo = smpBll.GetModel(shelfMissionId, orderId, productId); if (smpInfo == null) { throw new ArgumentException(MC.Data_NotExist); } smpInfo.Qty += totalQty; smpInfo.StockLocations = JsonConvert.SerializeObject(pslaList); smpInfo.LastUpdatedDate = currTime; smpBll.Update(smpInfo); smBll.SetTotalProduct(shelfMissionId.ToString()); #region 库存库位货品 var spBll = new StockProduct(); spBll.DoProduct(productId, orderInfo.CustomerId, (int)EnumData.EnumStep.架, dicSl); #endregion }
public void DoProduct(Guid productId, Guid customerId, Guid slId, bool isIncrease, double qty, double unQty, double freezeQty, int stepCode, string status) { var spInfo = dal.GetModel(productId, customerId); var sStepCode = Common.GetStepCode(spInfo == null ? null : spInfo.StepCode, stepCode.ToString(), false); var sLastStepName = Enum.GetName(typeof(EnumData.EnumStep), stepCode); var currQty = 0d; var currFreezeQty = 0d; if (!isIncrease) { #region 对库存货物“减”处理 if (spInfo != null) { if (unQty > 0) { currQty += unQty; spInfo.UnQty -= unQty; if (spInfo.UnQty < 0) { throw new ArgumentException(MC.M_QtyInvalidError); } } var pslaList = JsonConvert.DeserializeObject <List <ProductStockLocationAttrInfo> >(spInfo.StockLocations); var pslaInfo = pslaList.FirstOrDefault(m => m.StockLocationId.Equals(slId)); if (pslaInfo != null) { pslaInfo.Qty -= currQty; pslaInfo.FreezeQty -= currFreezeQty; } spInfo.StockLocations = JsonConvert.SerializeObject(pslaList); if (spInfo.StepCode == ((int)EnumData.EnumStep.收货).ToString() && spInfo.Qty == 0 && spInfo.UnQty == 0 && spInfo.FreezeQty == 0) { dal.Delete(productId, customerId); } else { dal.Update(spInfo); } } #endregion } else { #region 对库存货物“增”处理 if (spInfo != null) { #region 已存在相应数据,则执行修改操作 if (unQty > 0) { spInfo.UnQty += unQty; currQty += unQty; } var pslaList = JsonConvert.DeserializeObject <List <ProductStockLocationAttrInfo> >(spInfo.StockLocations); var pslaInfo = pslaList.FirstOrDefault(m => m.StockLocationId.Equals(slId)); if (pslaInfo != null) { pslaInfo.Qty += unQty; } else { var slBll = new StockLocation(); var slInfo = slBll.GetModel(slId); if (slInfo == null) { throw new ArgumentException(MC.GetString(MC.Params_Data_NotExist, slId.ToString())); } pslaList.Add(new ProductStockLocationAttrInfo(slId, slInfo.Code, slInfo.Named, currQty, currFreezeQty, DateTime.Now)); } spInfo.StockLocations = JsonConvert.SerializeObject(pslaList); dal.Update(spInfo); #endregion } else { #region 否则执行新增操作 if (unQty > 0) { currQty += unQty; } var slBll = new StockLocation(); var slInfo = slBll.GetModel(slId); if (slInfo == null) { throw new ArgumentException(MC.GetString(MC.Params_Data_NotExist, slId.ToString())); } var pslaList = new List <ProductStockLocationAttrInfo>(); pslaList.Add(new ProductStockLocationAttrInfo(slId, slInfo.Code, slInfo.Named, currQty, currFreezeQty, DateTime.Now)); spInfo = new StockProductInfo(productId, customerId, qty, unQty, freezeQty, sStepCode, sLastStepName, status, JsonConvert.SerializeObject(pslaList), "", DateTime.Now); dal.Insert(spInfo); #endregion } #endregion } }
public void DoProduct(Guid slId, Guid productId, bool isIncrease, double qty, double freezeQty) { var slpInfo = dal.GetModel(slId); if (!isIncrease) { #region 对库位货物“减”处理 if (slpInfo != null) { var slpaList = JsonConvert.DeserializeObject <List <StockLocationProductAttrInfo> >(slpInfo.ProductAttr); var slpaInfo = slpaList.FirstOrDefault(m => m.ProductId.Equals(productId)); if (slpaInfo != null) { if (qty > 0) { slpaInfo.Qty -= qty; if (slpaInfo.Qty < 0) { throw new ArgumentException(MC.GetString(MC.Request_InvalidQty, qty.ToString())); } } if (freezeQty > 0) { slpaInfo.FreezeQty -= freezeQty; if (slpaInfo.FreezeQty < 0) { throw new ArgumentException(MC.GetString(MC.Request_InvalidQty, freezeQty.ToString())); } } if (slpaInfo.Qty <= 0 && slpaInfo.FreezeQty <= 0) { slpaList.Remove(slpaInfo); } slpInfo.ProductAttr = JsonConvert.SerializeObject(slpaList); dal.Update(slpInfo); } } #endregion } else { #region 对库位货物“增”处理 if (slpInfo != null) { #region 已存在相应数据,则执行修改操作 var slpaList = JsonConvert.DeserializeObject <List <StockLocationProductAttrInfo> >(slpInfo.ProductAttr); var slpaInfo = slpaList.FirstOrDefault(m => m.ProductId.Equals(productId)); if (slpaInfo != null) { if (qty > 0) { slpaInfo.Qty += qty; } if (freezeQty > 0) { slpaInfo.FreezeQty += freezeQty; } } else { slpaList.Add(new StockLocationProductAttrInfo(productId, qty, freezeQty, DateTime.Now)); } slpInfo.ProductAttr = JsonConvert.SerializeObject(slpaList); dal.Update(slpInfo); #endregion } else { #region 否则执行新增操作 var slpaList = new List <StockLocationProductAttrInfo>(); slpaList.Add(new StockLocationProductAttrInfo(productId, qty > 0 ? qty : 0, freezeQty > 0 ? freezeQty : 0, DateTime.Now)); var slBll = new StockLocation(); var slInfo = slBll.GetModel(slId); var maxVolume = slInfo.Volume; if (qty > 0) { maxVolume -= qty; } slpInfo = new StockLocationProductInfo(slId, JsonConvert.SerializeObject(slpaList), maxVolume); dal.Insert(slpInfo); #endregion } #endregion } }