统一财务费用来源入池链路
This commit is contained in:
@@ -61,6 +61,7 @@ class BusinessFeeSourceEventServiceTest {
|
||||
assertThat(values.getValue()[5]).isEqualTo("PO-US-001");
|
||||
assertThat(values.getValue()[9]).isNull();
|
||||
assertThat(values.getValue()[13]).isNull();
|
||||
verify(jdbc).update(startsWith("UPDATE fin_fee_source f JOIN fin_wallet_hold"), eq(901L));
|
||||
}
|
||||
|
||||
private EventEnvelope eventWithoutInbound() {
|
||||
|
||||
@@ -71,6 +71,22 @@ class WalletCommandEventServiceTest {
|
||||
eq("SUCCEEDED"), contains("\"holdStatus\":\"FROZEN\""), eq(envelope.eventId()));
|
||||
}
|
||||
|
||||
@Test
|
||||
void settledWalletHoldMarksMatchingReceivableSourceSettled() {
|
||||
EventEnvelope envelope = envelope("SETTLE", 31L, new BigDecimal("88.50"));
|
||||
when(jdbc.queryForList(startsWith("SELECT payload_hash"), eq(String.class), eq(envelope.eventId())))
|
||||
.thenReturn(List.of());
|
||||
when(jdbc.queryForObject(startsWith("SELECT COUNT(*)"), eq(Integer.class), anyString())).thenReturn(0);
|
||||
when(wallet.settle(eq(31L), eq("OVERSEAS_PROCUREMENT_FEE"), eq("PO-1"),
|
||||
eq("freeze-procurement-1"), any())).thenReturn(new WalletHold(9L, 31L,
|
||||
"OVERSEAS_PROCUREMENT_FEE", "PO-1", new BigDecimal("88.50"), new BigDecimal("80.00"),
|
||||
new BigDecimal("8.50"), "SETTLED", 71L, 72L, null, null, null));
|
||||
|
||||
service.consume(envelope);
|
||||
|
||||
verify(jdbc).update(startsWith("UPDATE fin_fee_source f JOIN fin_wallet_hold"), eq(9L));
|
||||
}
|
||||
|
||||
@Test
|
||||
void rejectsCustomerMismatchBeforeTouchingWallet() {
|
||||
EventEnvelope envelope = envelope("FREEZE", 31L, new BigDecimal("10.00"));
|
||||
|
||||
+2
-1
@@ -64,7 +64,8 @@ class FinanceExportProviderServiceTest {
|
||||
new BigDecimal("100"), "BANK_TRANSFER", "PAY-701", List.of("9001"), 9L, "财务员", LocalDateTime.parse("2026-08-20T10:00:00"), "")), List.of());
|
||||
FeeSourceDetail source = new FeeSourceDetail(81L, "FIRSTLEG", "CONTAINER_FEE", "CONT-31", 9001L, 2, "RECEIVABLE", 10001L,
|
||||
"客户A", null, null, null, 21L, "IN-21", 31L, "CONT-31", LocalDate.parse("2026-08-15"), "运费",
|
||||
BigDecimal.TEN, new BigDecimal("30"), new BigDecimal("300"), "CNY", "APPROVED",
|
||||
BigDecimal.TEN, "KG", new BigDecimal("30"), null, null, new BigDecimal("300"), "CNY",
|
||||
"CNY", new BigDecimal("300"), BigDecimal.ONE, "2026-08", "APPROVED",
|
||||
"AVAILABLE", true, null, "hash", 2, List.of());
|
||||
when(queryService.statements(10001L, false)).thenReturn(List.of(summary));
|
||||
when(reconciliationService.detailForPlatform(501L)).thenReturn(detail);
|
||||
|
||||
Reference in New Issue
Block a user