fix(lastleg): preserve dropship source pallets
This commit is contained in:
+2
-2
@@ -135,8 +135,8 @@ public class DropshipOrderService {
|
||||
throw conflict("Dropship pallet activation is incomplete; repair profiles before retrying");
|
||||
}
|
||||
Map<String, List<InboundStockReceipt>> receiptsByPallet = receipts.stream()
|
||||
.filter(receipt -> receipt.getPalletNo() != null)
|
||||
.collect(Collectors.groupingBy(InboundStockReceipt::getPalletNo));
|
||||
.filter(receipt -> receipt.getSourcePalletNo() != null)
|
||||
.collect(Collectors.groupingBy(InboundStockReceipt::getSourcePalletNo));
|
||||
if (receiptsByPallet.size() != profilesForOrder.size()) {
|
||||
throw conflict("PDA pallet count does not match dropship source pallet count");
|
||||
}
|
||||
|
||||
+1
@@ -16,6 +16,7 @@ public class InboundPlanPallet {
|
||||
private String customerId;
|
||||
private Long planId;
|
||||
private String palletNo;
|
||||
private String sourcePalletNo;
|
||||
private String destinationWarehouseId;
|
||||
private String destinationWarehouseCode;
|
||||
private String destinationWarehouseName;
|
||||
|
||||
+1
@@ -25,6 +25,7 @@ public class InboundStockReceipt {
|
||||
private String productNameEn;
|
||||
private Long warehousePalletId;
|
||||
private String palletNo;
|
||||
private String sourcePalletNo;
|
||||
private Long warehouseLocationId;
|
||||
private String warehouseLocationCode;
|
||||
private String batchNo;
|
||||
|
||||
+1
-1
@@ -945,7 +945,7 @@ public class InboundPdaWorkflowService {
|
||||
boolean wholePalletInbound = "ONE_CLICK_DROPSHIP".equals(orderType);
|
||||
Map<String, InboundPlanPallet> palletsByNo = wholePalletInbound
|
||||
? repository.pallets(plan.getId()).stream().collect(java.util.stream.Collectors.toMap(
|
||||
InboundPlanPallet::getPalletNo, value -> value)) : Map.of();
|
||||
InboundPlanPallet::getSourcePalletNo, value -> value)) : Map.of();
|
||||
Map<Long, InboundPlanPalletAllocation> allocationsByPallet = wholePalletInbound
|
||||
? allocations.stream().collect(java.util.stream.Collectors.toMap(
|
||||
InboundPlanPalletAllocation::getPalletId, value -> value)) : Map.of();
|
||||
|
||||
+2
-1
@@ -116,7 +116,7 @@ public class InboundStockReceiptService {
|
||||
if (value(allocation.getPickedPackageCount()) != value(allocation.getPlannedPackageCount())) {
|
||||
throw conflict("One-click dropship inbound must receive a complete source pallet");
|
||||
}
|
||||
DropshipPalletSnapshot sourcePallet = dropshipPallets.get(pallet.getPalletNo());
|
||||
DropshipPalletSnapshot sourcePallet = dropshipPallets.get(pallet.getSourcePalletNo());
|
||||
if (sourcePallet == null || sourcePallet.packageCount() != value(allocation.getPickedPackageCount())) {
|
||||
throw conflict("One-click dropship source pallet SKU package total does not match PDA receipt");
|
||||
}
|
||||
@@ -261,6 +261,7 @@ public class InboundStockReceiptService {
|
||||
receipt.setProductNameEn(sku.productNameEn());
|
||||
receipt.setWarehousePalletId(pallet.getWarehousePalletId());
|
||||
receipt.setPalletNo(pallet.getPalletNo());
|
||||
receipt.setSourcePalletNo(pallet.getSourcePalletNo());
|
||||
receipt.setWarehouseLocationId(pallet.getWarehouseLocationId());
|
||||
receipt.setBatchNo(plan.getPlanNo());
|
||||
receipt.setReceivedPackages(packages);
|
||||
|
||||
+3
-1
@@ -297,7 +297,8 @@ public class InboundPlanService {
|
||||
if (palletVolume.compareTo(remainingVolume) > 0) palletVolume = remainingVolume;
|
||||
InboundPlanPallet pallet = new InboundPlanPallet();
|
||||
pallet.setId(IdWorker.getId()); pallet.setCustomerId(plan.getCustomerId()); pallet.setPlanId(plan.getId());
|
||||
pallet.setPalletNo(source.palletNo().trim()); pallet.setDestinationWarehouseId(order.destinationWarehouseId());
|
||||
pallet.setPalletNo(source.palletNo().trim()); pallet.setSourcePalletNo(source.palletNo().trim());
|
||||
pallet.setDestinationWarehouseId(order.destinationWarehouseId());
|
||||
pallet.setDestinationWarehouseCode(order.destinationWarehouseCode());
|
||||
pallet.setDestinationWarehouseName(order.destinationWarehouseName());
|
||||
pallet.setCapacityCbm(PalletAllocator.PALLET_CAPACITY_CBM); pallet.setAllocatedVolumeCbm(palletVolume);
|
||||
@@ -437,6 +438,7 @@ public class InboundPlanService {
|
||||
String sourcePalletNo = palletIndex < sourcePalletNos.size() ? sourcePalletNos.get(palletIndex) : null;
|
||||
pallet.setPalletNo(sourcePalletNo == null || sourcePalletNo.isBlank()
|
||||
? plan.getPlanNo() + "-P" + String.format("%03d", palletIndex + 1) : sourcePalletNo.trim());
|
||||
pallet.setSourcePalletNo(sourcePalletNo == null || sourcePalletNo.isBlank() ? null : sourcePalletNo.trim());
|
||||
pallet.setDestinationWarehouseId(sample.destinationWarehouseId());
|
||||
pallet.setDestinationWarehouseCode(sample.destinationWarehouseCode());
|
||||
pallet.setDestinationWarehouseName(sample.destinationWarehouseName());
|
||||
|
||||
Reference in New Issue
Block a user