/// <summary> /// 收货 /// </summary> /// <param name="moveId"></param> /// <param name="updated"></param> /// <param name="updated2"></param> /// <returns></returns> public static OpResult MoveinReceive(string moveId, string updated, string updated2) { var op = new OpResult(); try { int IndexofA = updated.IndexOf('['); int IndexofB = updated.IndexOf(']'); int IndexofC = updated2.IndexOf('['); int IndexofD = updated2.IndexOf(']'); if (updated != "[]" || !updated.IsNullOrEmpty()) { updated = updated.Substring(IndexofA, IndexofB - IndexofA + 1); if (updated.Contains("\\")) { updated = updated.Replace("\\", ""); } } if (updated2 != "[]" || !updated2.IsNullOrEmpty()) { updated2 = updated2.Substring(IndexofC, IndexofD - IndexofC + 1); if (updated2.Contains("\\")) { updated2 = updated2.Replace("\\", ""); } } var dists = updated.ToObject <List <HouseMoveList> >(); var dists2 = updated2.ToObject <List <HouseMoveList> >(); if (!updated2.IsNullOrEmpty()) { if (dists2.Any()) { var barcodes = dists2.Select(o => o.Barcode); dists.RemoveAll(o => barcodes.Contains(o.Barcode)); dists.AddRange(dists2); } } dists = dists.Where(o => o.ActualQuantity > 0).ToList(); if (!dists.Any()) { op.Message = "收获量必须大于0!"; } else { var details = BaseService <HouseMoveList> .FindList(o => o.MoveId == moveId); var order = STHouseMoveService.Find(o => o.MoveId == moveId); var records = new List <InventoryRecord>(); foreach (var dt in details) { var obj = dists.FirstOrDefault(o => o.Barcode == dt.Barcode); if (obj == null) { continue; } else { dt.ActualQuantity = obj.ActualQuantity; dt.State = 4; dt.Memo = obj.Memo; var pro = ProductService.Find(o => o.Barcode == dt.Barcode || ("," + o.Barcodes + ",").Contains("," + dt.Barcode + ",")); records.Add(new InventoryRecord() { Barcode = pro != null ? pro.Barcode : dt.Barcode, StoreId = order.InStoreId, Source = 3, Number = dt.ActualQuantity, OperatId = order.MoveId }); } } order.ActualUID = Sys.CurrentUser.UID; order.ActualDT = DateTime.Now; order.State = 4; //增库存 BaseService <HouseMove> .Update(order); op = BaseService <HouseMoveList> .Update(details); if (op.Successed) { InventoryRecordService.SaveLog(records); } } } catch (Exception ex) { op.Message = ex.Message; Log.WriteError(ex); } return(op); }
/// <summary> /// 新增或修改 /// </summary> /// <param name="obj"></param> /// <returns></returns> public static OpResult SaveOrUpdate(HouseMove obj) { var re = new OpResult(); try { var details = new List <HouseMoveList>(); if (!string.IsNullOrWhiteSpace(obj.Inserted)) { var adds = obj.Inserted.ToObject <List <HouseMoveList> >(); if (adds.Any()) { details.AddRange(adds.Where(o => !o.Barcode.IsNullOrEmpty() && !o.Title.IsNullOrEmpty())); } } obj.CompanyId = CommonService.CompanyId; if (obj.Id == 0) { obj.MoveId = Logic.CommonRules.GUID; details.Each(o => { o.MoveId = obj.MoveId; o.StockOut = 0;//todo o.State = 1; }); obj.CreateDT = DateTime.Now; obj.CreateUID = Sys.CurrentUser.UID; obj.State = 1; Add(obj, false); re = BaseService <HouseMoveList> .AddRange(details); } else { var sour = STHouseMoveService.FindById(obj.Id); var list = BaseService <HouseMoveList> .FindList(o => o.MoveId == sour.MoveId); var uid = sour.CreateUID; var create = sour.CreateDT; var state = sour.State; obj.ToCopyProperty(sour); sour.CreateDT = create; sour.CreateUID = uid; sour.State = state; details.Each(o => { o.MoveId = sour.MoveId; o.State = sour.State; }); if (!string.IsNullOrWhiteSpace(obj.Deleted)) { var dels = obj.Deleted.ToObject <List <HouseMoveList> >(); if (dels.Any()) { var barcodes = dels.Select(o => o.Barcode).ToList(); var deletes = list.Where(o => barcodes.Contains(o.Barcode)).ToList(); BaseService <HouseMoveList> .CurrentRepository.RemoveRange(deletes, false); } } if (!string.IsNullOrWhiteSpace(obj.Updated)) { var upts = obj.Updated.ToObject <List <HouseMoveList> >(); if (upts.Any()) { var barcodes = upts.Select(o => o.Barcode).ToList(); var deletes = list.Where(o => barcodes.Contains(o.Barcode)).ToList(); BaseService <HouseMoveList> .CurrentRepository.RemoveRange(deletes, false); BaseService <HouseMoveList> .AddRange(upts, false); } } BaseService <HouseMoveList> .AddRange(details, false); re = Update(sour); } } catch (Exception ex) { re.Message = ex.Message; } return(re); }