fix: retain scanned carton traceability in measurement drafts
This commit is contained in:
@@ -138,6 +138,41 @@ class MeasurementBatchServiceTest {
|
||||
org.mockito.ArgumentMatchers.eq(100L), any());
|
||||
}
|
||||
|
||||
@Test
|
||||
void manualDraftKeepsExactScannedCartonTraceability() {
|
||||
InboundMeasurementEntity existing = new InboundMeasurementEntity();
|
||||
existing.setId(100L);
|
||||
existing.setTenantId(1L);
|
||||
existing.setInboundId(10L);
|
||||
existing.setStatus("RECEIVED");
|
||||
existing.setVersion(3);
|
||||
InboundMeasurementItemEntity scanned = new InboundMeasurementItemEntity();
|
||||
scanned.setInboundDetailId(80001L);
|
||||
scanned.setItemNo("001");
|
||||
scanned.setExternalDetailNo("INB-001#1-1");
|
||||
scanned.setBoxCode("INB-001#1-1");
|
||||
scanned.setScannedShipmentId("FBA-001");
|
||||
scanned.setMachineNo("MJ-01");
|
||||
scanned.setDeviceMeasuredAt(LocalDateTime.of(2026, 9, 2, 10, 0));
|
||||
when(repository.findMeasurement(1L, 10L, 100L)).thenReturn(existing);
|
||||
when(repository.updateMeasurement(existing)).thenReturn(true);
|
||||
when(repository.listItems(1L, 100L)).thenReturn(List.of(scanned));
|
||||
|
||||
service.saveBatch(new MeasurementBatchCommand(
|
||||
1L, 10L, 100L, 3, "MANUAL", "PLATFORM", null, null, null,
|
||||
LocalDateTime.now(), null, null, null, null, null, 9L, List.of(item(BigDecimal.ONE))));
|
||||
|
||||
ArgumentCaptor<List<InboundMeasurementItemEntity>> items = ArgumentCaptor.forClass(List.class);
|
||||
verify(repository).replaceItems(org.mockito.ArgumentMatchers.eq(1L),
|
||||
org.mockito.ArgumentMatchers.eq(100L), items.capture());
|
||||
InboundMeasurementItemEntity saved = items.getValue().get(0);
|
||||
assertThat(saved.getBoxCode()).isEqualTo("INB-001#1-1");
|
||||
assertThat(saved.getExternalDetailNo()).isEqualTo("INB-001#1-1");
|
||||
assertThat(saved.getScannedShipmentId()).isEqualTo("FBA-001");
|
||||
assertThat(saved.getMachineNo()).isEqualTo("MJ-01");
|
||||
assertThat(saved.getDeviceMeasuredAt()).isEqualTo(LocalDateTime.of(2026, 9, 2, 10, 0));
|
||||
}
|
||||
|
||||
private MeasurementBatchCommand.Item item(BigDecimal unitWeight) {
|
||||
return new MeasurementBatchCommand.Item(
|
||||
80001L, "001", "A", 2, new BigDecimal("40"), new BigDecimal("30"),
|
||||
|
||||
Reference in New Issue
Block a user