修改提交

This commit is contained in:
2026-09-04 10:34:35 +08:00
parent 4ca5a57e6a
commit e6859c470c
4 changed files with 77 additions and 9 deletions
@@ -242,6 +242,54 @@ class FbaPricingServiceTest {
verify(priceBookEstimator).estimate(any());
}
@Test
@DisplayName("客户未确认时待装柜订单可重新计算并替换已发送费用")
void recalculatesSentFeeBeforeCustomerConfirmation() {
readyRepository();
InboundPricingEntity inbound = inbound("10", "1");
inbound.setProcessStatus("WAIT_PALLET");
inbound.setFeeStatus("SENT");
InboundFeeEntity sent = savedFee("SENT");
when(repository.findInbound(TENANT, INBOUND)).thenReturn(inbound);
when(repository.findLatestFeeForUpdate(TENANT, INBOUND)).thenReturn(sent);
when(repository.nextFeeVersion(TENANT, INBOUND)).thenReturn(2);
when(repository.supersedeCurrent(TENANT, 501L, "SENT")).thenReturn(1);
when(priceBookEstimator.estimate(any())).thenReturn(
estimate("CBM", "1.0000", "10", "10", "0"));
FeeSnapshotResponse response = service.calculate(
TENANT, OPERATOR, INBOUND, NOW, "resend-before-confirm");
assertThat(response.feeVersion()).isEqualTo(2);
assertThat(response.feeStatus()).isEqualTo("CALCULATED");
assertThat(response.nextProcessStatus()).isEqualTo("WAIT_PALLET");
verify(repository).supersedeCurrent(TENANT, 501L, "SENT");
verify(repository).markInboundCalculated(TENANT, INBOUND, "WAIT_PALLET", "CBM",
new BigDecimal("1.0000"));
}
@Test
@DisplayName("客户已确认时拒绝重新计算已发送费用")
void rejectsRecalculationAfterCustomerConfirmation() {
readyRepository();
InboundPricingEntity inbound = inbound("10", "1");
inbound.setProcessStatus("WAIT_PALLET");
inbound.setFeeStatus("SENT");
InboundFeeEntity sent = savedFee("SENT");
sent.setCustomerConfirmedAt(NOW);
when(repository.findInbound(TENANT, INBOUND)).thenReturn(inbound);
when(repository.findLatestFeeForUpdate(TENANT, INBOUND)).thenReturn(sent);
assertThatThrownBy(() -> service.calculate(
TENANT, OPERATOR, INBOUND, NOW, "resend-after-confirm"))
.isInstanceOf(BizException.class)
.hasMessageContaining("客户已确认");
verify(priceBookEstimator, never()).estimate(any());
verify(repository, never()).supersedeCurrent(anyLong(), anyLong(), any());
verify(repository, never()).insertFee(any());
}
@Test
@DisplayName("当前生效价格表无匹配价格时明确拒绝")
void rejectsMissingActivePriceBookRate() {