/// <summary> /// 修改主表退货状态(及其明细表) /// </summary> /// <param name="Ids">一组Id</param> /// <param name="state">状态</param> /// <returns>修改后的列表</returns> public static OpResult SetStates(string Ids, short state) { var re = OpResult.Fail("操作失败"); var ids = Ids.Split(',').Select(o => int.Parse(o)).ToList(); var list = CommodityReturnsBLL.FindList(o => ids.Contains(o.Id)); list.ForEach(o => { o.State = state; }); var returnId = CommodityReturnsBLL.FindList(o => ids.Contains(o.Id)).Select(o => o.ReturnId); var detail = BaseService <CommodityReturnsDetail> .FindList(o => returnId.Contains(o.ReturnId)); var invents = new List <InventoryRecord>(); if (state == 2) {//转为已完成状态 #region 从商品库中扣除相应库存 var query = from a in list join b in detail on a.ReturnId equals b.ReturnId from c in ProductService.CurrentRepository.QueryEntity where b.Barcode == c.Barcode || ("," + c.Barcodes + ",").Contains("," + b.Barcode + ",") group new { a, b, c } by new { a.StoreId, c.Barcode } into g select new { g.Key.StoreId, g.Key.Barcode, ReturnNum = g.Sum(o => o.b.ReturnNum) }; var datas = query.ToList(); datas.Each(o => { invents.Add(new InventoryRecord() { Barcode = o.Barcode, StoreId = o.StoreId, Number = o.ReturnNum, Source = 14 }); }); list.Each(o => o.VerifyTime = DateTime.Now); } detail.ForEach(o => { o.State = state; }); CommodityReturnsBLL.Update(list, false); re = BaseService <CommodityReturnsDetail> .Update(detail, true); if (re.Successed) { InventoryRecordService.SaveLog(invents); } #endregion return(re); }
/// <summary> /// 操作栏_修改明细表退货状态(及其主表) /// </summary> /// <param name="id">当前行id</param> /// <param name="state">要修改成这个状态</param> /// <returns>修改后的列表</returns> public static OpResult setState_Editor(int id, short state) { var re = OpResult.Fail("操作失败"); var obj = BaseService <CommodityReturnsDetail> .Find(o => o.Id == id); obj.State = state; var returnId = obj.ReturnId; var comReturn = CommodityReturnsBLL.Find(o => o.ReturnId == returnId); var invents = new List <InventoryRecord>(); if (state == 2) {//转为已完成 #region 从商品库中扣除相应库存 var datas = new Dictionary <string, decimal>(); datas.Add(obj.Barcode, obj.ReturnNum); //判断出库的商品是否有库存记录 //var stockNums = CommodityService.GetStockNumsByStoreId(comReturn.StoreId); //foreach (var d in datas) //{ // var stockNum = stockNums.FirstOrDefault(o => o.Key == d.Key); // if (stockNum.Value == 0 && string.IsNullOrEmpty(stockNum.Key)) // { // re.Message = string.Format("条码:{0} 不存在库存记录,无法退货", d.Key); // return re; // } //} //扣除库存 //var updateReusult = CommodityService.OutBoundReduceStock(datas, comReturn.StoreId); var pro = ProductService.Find(o => o.Barcode == obj.Barcode || ("," + o.Barcodes + ",").Contains("," + obj.Barcode + ",")); if (pro != null) { invents.Add(new InventoryRecord() { Barcode = pro.Barcode, StoreId = comReturn.StoreId, Number = obj.ReturnNum, Source = 14 }); } //var updateReusult = BaseService<CommodityReturnsDetail>.Update(obj); ////更新状态 //if (updateReusult.Successed) //{ //} //else //{ // re.Message = updateReusult.Message; // return re; //} #endregion } re = BaseService <CommodityReturnsDetail> .Update(obj); var minstate = BaseService <CommodityReturnsDetail> .CurrentRepository.QueryEntity.Where(o => o.ReturnId == returnId).Min(o => o.State); //int detailCount = detail.Count(); //int countState = 0; //foreach (var d in detail) //{ // if (d.State == state) // { // countState = countState + 1; // } //} //if (countState == detailCount) //{ // comReturn.State = state; // re = CommodityReturnsBLL.Update(comReturn); //} comReturn.State = minstate; re = CommodityReturnsBLL.Update(comReturn); if (re.Successed) { InventoryRecordService.SaveLog(invents); } return(re); }