fix(lastleg): allow edits with historical procurement warehouse
This commit is contained in:
+3
@@ -417,6 +417,9 @@ public class OverseasProcurementService implements WalletResultHandler {
|
||||
} catch (NumberFormatException exception) {
|
||||
throw badRequest("purchaseWarehouseId must be a numeric overseas partner warehouse ID");
|
||||
}
|
||||
// Keep the warehouse snapshot already frozen on a historical order. A later master-data
|
||||
// deactivation must not block unrelated edits such as recording outbound details.
|
||||
if (Long.toString(numericId).equals(order.getPurchaseWarehouseId())) return;
|
||||
var option = warehouseDirectory.required(numericId);
|
||||
order.setPurchaseWarehouseId(option.warehouseId());
|
||||
order.setPurchaseWarehouseName(option.warehouseName());
|
||||
|
||||
+21
@@ -177,6 +177,27 @@ class OverseasProcurementServiceTest {
|
||||
assertEquals("洛杉矶采购仓", order.getPurchaseWarehouseName());
|
||||
}
|
||||
|
||||
@Test
|
||||
void unchangedHistoricalWarehouseDoesNotBlockUnrelatedEditsAfterDeactivation() {
|
||||
OverseasProcurementOrder order = order(OverseasProcurementService.APPROVED, 100, 0);
|
||||
order.setPurchaseWarehouseId("10");
|
||||
order.setPurchaseWarehouseName("历史采购仓");
|
||||
when(orders.lockNo("100", "HC1")).thenReturn(order);
|
||||
when(orders.findNo("100", "HC1")).thenReturn(order);
|
||||
when(histories.listOrder("100", 1L)).thenReturn(List.of());
|
||||
ObjectMapper mapper = new ObjectMapper();
|
||||
var request = new OverseasProcurementRequests.Update(0L, null, null, null, null,
|
||||
null, mapper.getNodeFactory().textNode("10"), null,
|
||||
null, null, null, null, null, mapper.getNodeFactory().textNode("更新出库信息"));
|
||||
|
||||
service.update("100", "HC1", "7", request);
|
||||
|
||||
assertEquals("10", order.getPurchaseWarehouseId());
|
||||
assertEquals("历史采购仓", order.getPurchaseWarehouseName());
|
||||
verify(warehouseDirectory, never()).required(10L);
|
||||
verify(orders).updateById(order);
|
||||
}
|
||||
|
||||
@Test
|
||||
void customerOptionsAreDeduplicatedSnapshotsFromProcurementOrders() {
|
||||
OverseasProcurementOrder option = new OverseasProcurementOrder();
|
||||
|
||||
Reference in New Issue
Block a user