贴标申请,仓储转运
This commit is contained in:
+1
@@ -645,6 +645,7 @@ public class RelabelApplicationService implements WalletResultHandler {
|
|||||||
} else if ("COMPLETED".equals(next)) {
|
} else if ("COMPLETED".equals(next)) {
|
||||||
boolean preDispatched = "PRE_DISPATCH_CREATED".equals(application.getFulfillmentStatus());
|
boolean preDispatched = "PRE_DISPATCH_CREATED".equals(application.getFulfillmentStatus());
|
||||||
application.setFulfillmentStatus("OUTBOUNDED");
|
application.setFulfillmentStatus("OUTBOUNDED");
|
||||||
|
applications.updateById(application);
|
||||||
if (!StringUtils.hasText(application.getOutboundOrderNo())
|
if (!StringUtils.hasText(application.getOutboundOrderNo())
|
||||||
&& !preDispatched) {
|
&& !preDispatched) {
|
||||||
releaseInventory(customerId, operatorId, application);
|
releaseInventory(customerId, operatorId, application);
|
||||||
|
|||||||
+1
-1
@@ -35,7 +35,7 @@ public final class WarehouseTransferResponses {
|
|||||||
String lastlegOrderNo, String operatingWarehouseId, String fbaWarehouseCode,
|
String lastlegOrderNo, String operatingWarehouseId, String fbaWarehouseCode,
|
||||||
String destinationType, String destinationWarehouseCode, String destinationWarehouseName,
|
String destinationType, String destinationWarehouseCode, String destinationWarehouseName,
|
||||||
int packageCount, String deliveryMethod, boolean needRelabel, String relabelNo,
|
int packageCount, String deliveryMethod, boolean needRelabel, String relabelNo,
|
||||||
String relabelApplicationStatus, String relabelFulfillmentStatus,
|
String relabelStatus, String relabelFulfillmentStatus,
|
||||||
String status, LocalDateTime estimatedArrivalAt, LocalDateTime createdAt) {}
|
String status, LocalDateTime estimatedArrivalAt, LocalDateTime createdAt) {}
|
||||||
public record Detail(Long id, String transferNo, Long inboundOrderId, String inboundCode,
|
public record Detail(Long id, String transferNo, Long inboundOrderId, String inboundCode,
|
||||||
Long lastlegOrderId, String lastlegOrderNo, String orderType, String orderStatus,
|
Long lastlegOrderId, String lastlegOrderNo, String orderType, String orderStatus,
|
||||||
|
|||||||
+32
@@ -569,6 +569,38 @@ class RelabelApplicationServiceTest {
|
|||||||
assertEquals("COMPLETED", order.getRelabelStatus());
|
assertEquals("COMPLETED", order.getRelabelStatus());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
void zeroFeeCompletionPersistsFulfillmentForBothOutboundRoutes() {
|
||||||
|
for (String route : List.of("PRE_DISPATCH_CREATED", "OUTBOUND_CREATED")) {
|
||||||
|
RelabelApplication app = application(11L, "FBR-ZERO", "10001", "key", "hash", RelabelApplicationService.READY_FOR_OUTBOUND);
|
||||||
|
app.setLastlegOrderId(21L);
|
||||||
|
app.setWalletStatus("NOT_REQUIRED");
|
||||||
|
app.setChargeAmount(BigDecimal.ZERO);
|
||||||
|
app.setFulfillmentStatus(route);
|
||||||
|
if ("OUTBOUND_CREATED".equals(route)) app.setOutboundOrderNo("OUT-ZERO");
|
||||||
|
LastlegOrder order = order(21L, "10001", "LMO-ZERO", "PROCESSING");
|
||||||
|
order.setOrderType("RETURN_RELABEL");
|
||||||
|
order.setRelabelOrderNo(app.getRelabelNo());
|
||||||
|
when(applications.lockNo("10001", app.getRelabelNo())).thenReturn(app);
|
||||||
|
when(orders.selectById(21L)).thenReturn(order);
|
||||||
|
stubDetail(app);
|
||||||
|
List<String> persistedFulfillment = new java.util.ArrayList<>();
|
||||||
|
org.mockito.Mockito.doAnswer(invocation -> {
|
||||||
|
RelabelApplication saved = invocation.getArgument(0);
|
||||||
|
persistedFulfillment.add(saved.getFulfillmentStatus());
|
||||||
|
return 1;
|
||||||
|
}).when(applications).updateById(any(RelabelApplication.class));
|
||||||
|
|
||||||
|
service.changeStatus("10001", app.getRelabelNo(), "operator-2",
|
||||||
|
new RelabelRequests.ChangeStatus("COMPLETED", "finished"));
|
||||||
|
|
||||||
|
assertEquals("OUTBOUNDED", persistedFulfillment.get(persistedFulfillment.size() - 1), route);
|
||||||
|
}
|
||||||
|
verify(feeSources, never()).publishApproved(any(), any(), any());
|
||||||
|
verify(walletCommands, never()).publish(any(), anyLong(), any(), any(), any(), any(), anyLong());
|
||||||
|
verify(inventoryCommands, never()).release(any(), any(), any());
|
||||||
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
void completingEarlierReturnRelabelDoesNotOverwriteLaterApplicationStatus() {
|
void completingEarlierReturnRelabelDoesNotOverwriteLaterApplicationStatus() {
|
||||||
RelabelApplication application = application(11L, "FBR-FIRST", "10001", "key-1", "hash", RelabelApplicationService.READY_FOR_OUTBOUND);
|
RelabelApplication application = application(11L, "FBR-FIRST", "10001", "key-1", "hash", RelabelApplicationService.READY_FOR_OUTBOUND);
|
||||||
|
|||||||
+2
-2
@@ -136,7 +136,7 @@ class WarehouseTransferServiceTest {
|
|||||||
1, 20, null, null, null, null, null, null, null, null));
|
1, 20, null, null, null, null, null, null, null, null));
|
||||||
|
|
||||||
assertEquals("RL-20260923-000001", result.records().get(0).relabelNo());
|
assertEquals("RL-20260923-000001", result.records().get(0).relabelNo());
|
||||||
assertEquals("COMPLETED", result.records().get(0).relabelApplicationStatus());
|
assertEquals("COMPLETED", result.records().get(0).relabelStatus());
|
||||||
assertEquals("READY_FOR_DISPATCH", result.records().get(0).relabelFulfillmentStatus());
|
assertEquals("READY_FOR_DISPATCH", result.records().get(0).relabelFulfillmentStatus());
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -152,7 +152,7 @@ class WarehouseTransferServiceTest {
|
|||||||
1, 20, null, null, null, null, null, null, null, null));
|
1, 20, null, null, null, null, null, null, null, null));
|
||||||
|
|
||||||
assertEquals(1, result.records().size());
|
assertEquals(1, result.records().size());
|
||||||
assertNull(result.records().get(0).relabelApplicationStatus());
|
assertNull(result.records().get(0).relabelStatus());
|
||||||
assertNull(result.records().get(0).relabelFulfillmentStatus());
|
assertNull(result.records().get(0).relabelFulfillmentStatus());
|
||||||
verify(relabelApplications, never()).selectList(any());
|
verify(relabelApplications, never()).selectList(any());
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user