feat(firstleg): add private warehouse delivery fee

This commit is contained in:
2026-09-08 17:27:20 +08:00
parent ba81dece5e
commit 442518c382
6 changed files with 67 additions and 6 deletions
@@ -24,6 +24,8 @@ class FeeItemMigrationSqlContractTest {
.contains("matched_seed.trade_scope = f.trade_scope")
.contains("193000000001000111, 0, 'FBA_HEAD_FREIGHT'")
.contains("fee_code = 'FBA_HEAD_FREIGHT'")
.contains("193000000001000112, 0, 'PRIVATE_LAST_MILE_DELIVERY'")
.contains("fee_code = 'PRIVATE_LAST_MILE_DELIVERY'")
.contains("warehouse_receivable = 1")
.doesNotContain("LEFT JOIN tmp_fee_item_seed by_code")
.doesNotContain("LEFT JOIN tmp_fee_item_seed by_semantic")
@@ -337,6 +337,29 @@ class FeeManagementServiceTest {
.hasMessageContaining("仓储应收/应付");
}
@Test
@DisplayName("私人仓尾程派送费只允许PRIVATE目的地")
void restrictsPrivateLastMileDeliveryFeeByDestinationType() {
InboundOrderEntity fbaInbound = inbound();
fbaInbound.setDestinationType("FBA");
FeeItemEntity privateDelivery = item(true, true);
privateDelivery.setFeeCode("PRIVATE_LAST_MILE_DELIVERY");
when(repository.findInbound(10001L, 21L)).thenReturn(fbaInbound);
when(repository.findItem(11L)).thenReturn(privateDelivery);
assertThatThrownBy(() -> details.create(10001L, 21L, 9L,
detailRequest("RECEIVABLE")))
.isInstanceOf(BizException.class)
.hasMessageContaining("目的地类型为PRIVATE");
verify(repository, never()).insertDetail(any());
fbaInbound.setDestinationType("PRIVATE");
doAnswer(invocation -> { ((InboundFeeDetailEntity) invocation.getArgument(0)).setId(32L); return null; })
.when(repository).insertDetail(any());
assertThat(details.create(10001L, 21L, 9L, detailRequest("RECEIVABLE")).getId())
.isEqualTo(32L);
}
@Test
@DisplayName("审核只更新待审核明细")
void approvesPendingDetail() {