// 托盘货放回方法 public void PutbackPickedPalletItemsToNewLocation(FBAPickDetail pickDetailInDb, string newLocation, string user) { var pickedCtns = 0; pickDetailInDb.FBAPalletLocation.ActualPlts -= pickDetailInDb.PltsFromInventory; pickDetailInDb.FBAPalletLocation.PickingPlts -= pickDetailInDb.PltsFromInventory; pickDetailInDb.FBAPalletLocation.ActualGrossWeight -= pickDetailInDb.ActualGrossWeight; pickDetailInDb.FBAPalletLocation.ActualCBM -= pickDetailInDb.ActualCBM; pickDetailInDb.FBAPalletLocation.FBAPallet.ActualPallets -= pickDetailInDb.PltsFromInventory; pickDetailInDb.FBAPalletLocation.FBAPallet.ActualQuantity -= pickDetailInDb.ActualQuantity; pickDetailInDb.FBAPalletLocation.FBAPallet.ActualGrossWeight -= pickDetailInDb.ActualGrossWeight; pickDetailInDb.FBAPalletLocation.FBAPallet.ActualCBM -= pickDetailInDb.ActualCBM; pickDetailInDb.FBAPalletLocation.FBAPallet.ComsumedPallets -= pickDetailInDb.PltsFromInventory; var newFBAPallet = new FBAPallet { ActualCBM = pickDetailInDb.ActualCBM, ActualGrossWeight = pickDetailInDb.ActualGrossWeight, ActualPallets = pickDetailInDb.PltsFromInventory, ActualQuantity = pickDetailInDb.ActualQuantity, AmzRefId = pickDetailInDb.FBAPalletLocation.FBAPallet.AmzRefId, Container = pickDetailInDb.FBAPalletLocation.FBAPallet.Container, ShipmentId = pickDetailInDb.FBAPalletLocation.FBAPallet.ShipmentId, ComsumedPallets = pickDetailInDb.PltsFromInventory, GrandNumber = pickDetailInDb.FBAPalletLocation.FBAPallet.GrandNumber, HowToDeliver = pickDetailInDb.FBAPalletLocation.FBAPallet.HowToDeliver, LocationStatus = FBAStatus.PutBack, IsOverSizeOrOverwidth = pickDetailInDb.FBAPalletLocation.FBAPallet.IsOverSizeOrOverwidth, HasSortingMarking = pickDetailInDb.FBAPalletLocation.FBAPallet.HasSortingMarking, PalletSize = pickDetailInDb.FBAPalletLocation.FBAPallet.PalletSize, WarehouseCode = pickDetailInDb.FBAPalletLocation.FBAPallet.WarehouseCode, DoesAppliedLabel = pickDetailInDb.FBAPalletLocation.FBAPallet.DoesAppliedLabel, FBAMasterOrder = pickDetailInDb.FBAPalletLocation.FBAPallet.FBAMasterOrder, Memo = "Put back from shipping order: " + pickDetailInDb.FBAShipOrder.ShipOrderNumber + " on " + DateTime.Now.ToString("yyyy-MM-dd") }; var newCartonLocationsList = new List <FBACartonLocation>(); var ctnLogList = new List <OrderOperationLog>(); foreach (var p in pickDetailInDb.FBAPickDetailCartons) { p.FBACartonLocation.ActualQuantity -= p.PickCtns; p.FBACartonLocation.PickingCtns -= p.PickCtns; p.FBACartonLocation.ActualGrossWeight -= p.FBACartonLocation.GrossWeightPerCtn * p.PickCtns; p.FBACartonLocation.ActualCBM -= p.FBACartonLocation.CBMPerCtn * p.PickCtns; if (p.FBACartonLocation.ActualGrossWeight < 0) { p.FBACartonLocation.ActualGrossWeight = 0; } if (p.FBACartonLocation.ActualCBM < 0) { p.FBACartonLocation.ActualCBM = 0; } var newFBACartonLocation = new FBACartonLocation { Status = FBAStatus.InPallet, ActualCBM = p.FBACartonLocation.CBMPerCtn * p.PickCtns, ActualGrossWeight = p.FBACartonLocation.GrossWeightPerCtn * p.PickCtns, ActualQuantity = p.PickCtns, LocationStatus = FBAStatus.PutBack, AmzRefId = p.FBACartonLocation.AmzRefId, AvailableCtns = p.PickCtns, CBMPerCtn = p.FBACartonLocation.CBMPerCtn, Container = p.FBACartonLocation.Container, GrandNumber = p.FBACartonLocation.GrandNumber, ShipmentId = p.FBACartonLocation.ShipmentId, GrossWeightPerCtn = p.FBACartonLocation.GrossWeightPerCtn, Location = "Pallet", HowToDeliver = p.FBACartonLocation.HowToDeliver, WarehouseCode = p.FBACartonLocation.WarehouseCode, FBAPallet = newFBAPallet, FBAOrderDetail = p.FBACartonLocation.FBAOrderDetail, FBAMasterOrder = p.FBACartonLocation.FBAMasterOrder, Memo = "Put back from shipping order: " + pickDetailInDb.FBAShipOrder.ShipOrderNumber + " on " + DateTime.Now.ToString("yyyy-MM-dd") }; pickedCtns += p.PickCtns; newCartonLocationsList.Add(newFBACartonLocation); ctnLogList.Add(new OrderOperationLog { Type = FBAStatus.PutBack, OperationDate = DateTime.Now, Operator = user, FBAShipOrder = pickDetailInDb.FBAShipOrder, Description = "Put back " + p.PickCtns + " in-pallet carton(s) from Carton Location Id: " + p.FBACartonLocation.Id + ", Container: " + p.FBACartonLocation.Container + ", ShipmentId(SKU): " + p.FBACartonLocation.ShipmentId + ", AmzRefId: " + p.FBACartonLocation.AmzRefId + ", Warehouse code: " + p.FBACartonLocation.WarehouseCode + " to new location: " + newLocation }); } pickDetailInDb.FBAPalletLocation.ActualQuantity -= pickedCtns; var newFBAPalletLocation = new FBAPalletLocation { Status = FBAStatus.InStock, ActualCBM = pickDetailInDb.ActualCBM, ActualGrossWeight = pickDetailInDb.ActualGrossWeight, ActualPlts = pickDetailInDb.PltsFromInventory, ActualQuantity = pickedCtns, AvailablePlts = pickDetailInDb.PltsFromInventory, AmzRefId = pickDetailInDb.AmzRefId, Container = pickDetailInDb.Container, CBMPerPlt = pickDetailInDb.FBAPalletLocation.CBMPerPlt, CtnsPerPlt = pickDetailInDb.FBAPalletLocation.CtnsPerPlt, GrandNumber = pickDetailInDb.FBAPalletLocation.GrandNumber, GrossWeightPerPlt = pickDetailInDb.FBAPalletLocation.GrossWeightPerPlt, HowToDeliver = pickDetailInDb.FBAPalletLocation.HowToDeliver, Location = newLocation, PalletSize = pickDetailInDb.FBAPalletLocation.PalletSize, ShipmentId = pickDetailInDb.FBAPalletLocation.ShipmentId, LocationStatus = FBAStatus.PutBack, WarehouseCode = pickDetailInDb.FBAPalletLocation.WarehouseCode, FBAMasterOrder = pickDetailInDb.FBAPalletLocation.FBAMasterOrder, FBAPallet = newFBAPallet, Memo = "Put back from shipping order: " + pickDetailInDb.FBAShipOrder.ShipOrderNumber + " on " + DateTime.Now.ToString("yyyy-MM-dd") }; var pltLog = new OrderOperationLog { Type = FBAStatus.PutBack, FBAShipOrder = pickDetailInDb.FBAShipOrder, OperationDate = DateTime.Now, Operator = user }; if (pickDetailInDb.FBAPickDetailCartons == null) { pltLog.Description = "Put back " + pickDetailInDb.PltsFromInventory + " empty pallet(s) from Pallet Location Id: " + pickDetailInDb.FBAPalletLocation.Id + ", Container: " + pickDetailInDb.Container + ", ShipmentId(SKU): " + pickDetailInDb.ShipmentId + ", AmzRefId: " + pickDetailInDb.AmzRefId + ", Warehouse code: " + pickDetailInDb.WarehouseCode + " to new location: " + newLocation; } else { pltLog.Description = "Put back " + pickDetailInDb.PltsFromInventory + " pallet(s) from Pallet Location Id: " + pickDetailInDb.FBAPalletLocation.Id + " Container: " + pickDetailInDb.Container + ", ShipmentId(SKU): " + pickDetailInDb.ShipmentId + ", AmzRefId: " + pickDetailInDb.AmzRefId + ", Warehouse code: " + pickDetailInDb.WarehouseCode + " to new location: " + newLocation; } _context.OrderOperationLogs.Add(pltLog); _context.OrderOperationLogs.AddRange(ctnLogList); _context.FBACartonLocations.AddRange(newCartonLocationsList); _context.FBAPallets.Add(newFBAPallet); _context.FBAPalletLocations.Add(newFBAPalletLocation); _context.FBAPickDetailCartons.RemoveRange(pickDetailInDb.FBAPickDetailCartons); _context.FBAPickDetails.Remove(pickDetailInDb); _context.SaveChanges(); }
public void RemovePickDetail(ApplicationDbContext context, int pickDetailId, bool isAddLogs) { var pickDetailInDb = context.FBAPickDetails .Include(x => x.FBAShipOrder) .Include(x => x.FBACartonLocation) .Include(x => x.FBAPalletLocation.FBAPallet.FBACartonLocations) .Include(x => x.FBAPickDetailCartons) .SingleOrDefault(x => x.Id == pickDetailId); // 如果palletLocation不为空,则说明从库存拣货单位是托盘 if (pickDetailInDb.FBAPalletLocation != null) { var ctnLogList = new List <OrderOperationLog>(); pickDetailInDb.FBAPalletLocation.AvailablePlts += pickDetailInDb.PltsFromInventory; pickDetailInDb.FBAPalletLocation.PickingPlts -= pickDetailInDb.PltsFromInventory; if (pickDetailInDb.FBAPalletLocation.PickingPlts == 0) { pickDetailInDb.FBAPalletLocation.Status = FBAStatus.InStock; } var pickDetailCartonsInDb = context.FBAPickDetailCartons .Include(x => x.FBACartonLocation) .Include(x => x.FBAPickDetail) .Where(x => x.FBAPickDetail.Id == pickDetailInDb.Id); foreach (var p in pickDetailCartonsInDb) { p.FBACartonLocation.AvailableCtns += p.PickCtns; p.FBACartonLocation.PickingCtns -= p.PickCtns; ctnLogList.Add(new OrderOperationLog { Type = FBAStatus.PutBack, OperationDate = DateTime.Now, Operator = _userName, FBAShipOrder = pickDetailInDb.FBAShipOrder, Description = "Put back " + p.PickCtns + " in-pallet carton(s) from Carton Location Id: " + p.FBACartonLocation.Id + ", Container: " + p.FBACartonLocation.Container + ", ShipmentId(SKU): " + p.FBACartonLocation.ShipmentId + ", AmzRefId: " + p.FBACartonLocation.AmzRefId + ", Warehouse code: " + p.FBACartonLocation.WarehouseCode + " to original location: " + pickDetailInDb.Location }); } var pltLog = new OrderOperationLog { Type = FBAStatus.PutBack, FBAShipOrder = pickDetailInDb.FBAShipOrder, OperationDate = DateTime.Now, Operator = _userName }; if (pickDetailInDb.FBAPickDetailCartons == null) { pltLog.Description = "Put back " + pickDetailInDb.PltsFromInventory + " empty pallet(s) from Pallet Location Id: " + pickDetailInDb.FBAPalletLocation.Id + ", Container: " + pickDetailInDb.Container + ", ShipmentId(SKU): " + pickDetailInDb.ShipmentId + ", AmzRefId: " + pickDetailInDb.AmzRefId + ", Warehouse code: " + pickDetailInDb.WarehouseCode + " to original location: " + pickDetailInDb.Location; } else { pltLog.Description = "Put back " + pickDetailInDb.PltsFromInventory + " pallet(s) from Pallet Location Id: " + pickDetailInDb.FBAPalletLocation.Id + " Container: " + pickDetailInDb.Container + ", ShipmentId(SKU): " + pickDetailInDb.ShipmentId + ", AmzRefId: " + pickDetailInDb.AmzRefId + ", Warehouse code: " + pickDetailInDb.WarehouseCode + " to original location: " + pickDetailInDb.Location; } if (isAddLogs) { context.OrderOperationLogs.Add(pltLog); context.OrderOperationLogs.AddRange(ctnLogList); } context.FBAPickDetailCartons.RemoveRange(pickDetailCartonsInDb); context.FBAPickDetails.Remove(pickDetailInDb); } // 反之如果palletLocation为空,则说明从库存拣货单位是箱子 else if (pickDetailInDb.FBAPalletLocation == null) { pickDetailInDb.FBACartonLocation.AvailableCtns += pickDetailInDb.ActualQuantity; pickDetailInDb.FBACartonLocation.PickingCtns -= pickDetailInDb.ActualQuantity; if (pickDetailInDb.FBACartonLocation.PickingCtns == 0 && pickDetailInDb.FBACartonLocation.Location != "Pallet") { pickDetailInDb.FBACartonLocation.Status = FBAStatus.InStock; } else if (pickDetailInDb.FBACartonLocation.PickingCtns == 0 && pickDetailInDb.FBACartonLocation.Location == "Pallet") { pickDetailInDb.FBACartonLocation.Status = FBAStatus.InPallet; } context.OrderOperationLogs.Add(new OrderOperationLog { Type = FBAStatus.PutBack, OperationDate = DateTime.Now, Operator = _userName, FBAShipOrder = pickDetailInDb.FBAShipOrder, Description = "Put back " + pickDetailInDb.ActualQuantity + " loose carton(s) from Carton Location Id: " + pickDetailInDb.FBACartonLocation.Id + ", Container: " + pickDetailInDb.FBACartonLocation.Container + ", ShipmentId(SKU): " + pickDetailInDb.FBACartonLocation.ShipmentId + ", AmzRefId: " + pickDetailInDb.FBACartonLocation.AmzRefId + ", Warehouse code: " + pickDetailInDb.FBACartonLocation.WarehouseCode + " to original location: " + pickDetailInDb.Location }); context.FBAPickDetails.Remove(pickDetailInDb); context.FBAPickDetailCartons.RemoveRange(_context.FBAPickDetailCartons .Include(x => x.FBAPickDetail) .Where(x => x.FBAPickDetail.Id == pickDetailInDb.Id)); } }