private TInvt Do2(int whId, int custId, string rcvCode, TInInboundD t) { //这是新增的情况 var h = new TInvt { WhId = whId, SkuId = t.SkuId, Sku = t.Sku, Barcode = t.Barcode, CreatedBy = DefaultUser.UserName, IsDeleted = false, Qty = t.Qty, CreatedTime = DateTime.UtcNow }; var bin = GetDefalutBin(whId); var d2 = new TInvtD { HId = h.Id, WhId = whId, SkuId = t.SkuId, Sku = t.Sku, Barcode = t.Barcode, ZoneId = bin.Item1, ZoneCode = bin.Item2, BinId = bin.Item3, BinCode = bin.Item4, CreatedBy = "rick.li", IsDeleted = 0, Qty = t.Qty, CreatedTime = DateTime.UtcNow }; var log = new TInvtChangeLog { OrderId = t.HId, OrderType = Enum.GetName(typeof(EnumOrderType), EnumOrderType.RCV), OrderCode = rcvCode, WhId = whId, InvtDId = d2.Id, CustId = custId, SkuId = t.SkuId, Barcode = t.Barcode, BinId = d2.BinId, ZoneId = d2.ZoneId, Qty = t.Qty, CreatedBy = DefaultUser.UserName, CreatedTime = DateTime.UtcNow, }; d2.TInvtChangeLog = log; h.DetailList.Add(d2); h.Qty = d2.Qty; return(h); }
private void DoDeliveryLog(long shpId, string shpCode, int whId, int custId, TInvtD invtd, int qty) { var log = new TInvtChangeLog { OrderId = shpId, OrderType = Enum.GetName(typeof(EnumOrderType), EnumOrderType.SHP), OrderCode = shpCode, WhId = whId, CustId = custId, InvtDId = invtd.Id, SkuId = invtd.SkuId, Barcode = invtd.Barcode, BinId = invtd.BinId, ZoneId = invtd.ZoneId, Qty = qty, CreatedBy = DefaultUser.UserName, CreatedTime = DateTime.UtcNow, }; wmsinventory.TInvtChangeLogs.Add(log); }
public void UnlockAndMove(long oId, string oCode, int oWhId, int oCustId, VInvtData fromData, VInvtData toData) { //首先查询库存,然后循环扣减 var invts = wmsinventory.TInvtDs .Where(x => x.ZoneId == fromData.ZoneId && x.BinId == fromData.BinId && x.SkuId == fromData.SkuId && x.Qty - x.AllotQty - x.LockedQty > 0 && x.LockedQty > 0) .ToList(); var totalQty = fromData.Qty; var detaiList = new List <TInvtD>(); foreach (var invt in invts) { var invtDetail = new TInvtD { HId = invt.HId, ZoneId = toData.ZoneId, ZoneCode = toData.ZoneCode, BinId = toData.BinId, BinCode = toData.BinCode, SkuId = toData.SkuId, Sku = toData.Sku, Barcode = toData.Barcode, CreatedBy = DefaultUser.UserName, CreatedTime = DateTime.UtcNow }; var invtLog = new TInvtChangeLog { OrderId = oId, OrderType = Enum.GetName(typeof(EnumOrderType), EnumOrderType.RCV), OrderCode = oCode, WhId = oWhId, InvtDId = invtDetail.Id, CustId = oCustId, SkuId = toData.SkuId, Barcode = toData.Barcode, BinId = toData.BinId, ZoneId = toData.ZoneId, CreatedBy = DefaultUser.UserName, CreatedTime = DateTime.UtcNow, }; var invtLog2 = new TInvtChangeLog { OrderId = oId, OrderType = Enum.GetName(typeof(EnumOrderType), EnumOrderType.RCV), OrderCode = oCode, WhId = oWhId, InvtDId = invt.Id, CustId = oCustId, SkuId = toData.SkuId, Barcode = toData.Barcode, BinId = toData.BinId, ZoneId = toData.ZoneId, CreatedBy = DefaultUser.UserName, CreatedTime = DateTime.UtcNow, }; if (totalQty > 0) { var canQty = invt.LockedQty; if (canQty >= totalQty) { invt.LockedQty -= totalQty; totalQty = 0; invtLog2.Qty = totalQty; invt.TInvtChangeLog = invtLog2; invtDetail.Qty = totalQty; invtLog.Qty = totalQty; invtDetail.TInvtChangeLog = invtLog; detaiList.Add(invtDetail); } else { invt.LockedQty -= canQty; totalQty -= canQty; invtLog2.Qty = canQty; invt.TInvtChangeLog = invtLog2; invtDetail.Qty = canQty; invtLog.Qty = canQty; invtDetail.TInvtChangeLog = invtLog; detaiList.Add(invtDetail); } } } wmsinventory.TInvtDs.AddRange(detaiList); wmsinventory.SaveChanges(); }