Files
baiyue-firstleg/finance/src/main/java/com/baiyue/finance/dto/FinanceSettlementDtos.java
T

56 lines
4.0 KiB
Java

package com.baiyue.finance.dto;
import com.fasterxml.jackson.annotation.JsonUnwrapped;
import java.math.BigDecimal;
import java.time.Instant;
import java.time.LocalDate;
import java.time.LocalDateTime;
import java.util.List;
/** Stable DTOs for the phase-one AR/AP settlement operations. */
public final class FinanceSettlementDtos {
private FinanceSettlementDtos() {}
public record CreateReceivableSettlementRequest(long reconciliationStatementId, String currency) {}
public record CreatePayableSettlementRequest(long customerId, long supplierId, List<Long> feeSourceIds,
LocalDate dueDate, String currency) {}
public record CreateSettlementPaymentRequest(LocalDate transactionDate, BigDecimal amount, String currency,
String method, String referenceNo, List<String> voucherFileIds,
Integer expectedVersion, String remark) {}
public record SettlementActionRequest(String action, String reason, Integer expectedVersion) {}
public record SettlementSummary(long settlementId, String settlementNo, String direction, long customerId,
String customerName, Long supplierId, String supplierName,
Long reconciliationStatementId, String reconciliationStatementNo,
String businessPeriod, String feeItemSummary, String currency,
BigDecimal totalAmount, BigDecimal paidAmount, BigDecimal outstandingAmount,
LocalDate generatedDate, LocalDate dueDate, String paymentStatus,
String status, long createdBy, String createdByName,
LocalDateTime createdAt, LocalDateTime updatedAt,
LocalDateTime lastPaymentAt, int version) {}
public record SettlementLine(long feeSourceId, String sourceType, long sourceFeeId, int sourceVersion,
String direction, long customerId, String customerName, Long supplierId,
String supplierName, Long orderId, String orderNo, Long inboundId,
String inboundCode, Long containerId, String containerNo,
LocalDate businessDate, String feeItemName,
BigDecimal quantity, BigDecimal unitPrice, BigDecimal amount, String currency,
String reviewStatus, String sourceStatus,
boolean statementGenerated) {}
public record SettlementTransaction(long transactionId, String transactionNo, String transactionType, LocalDate transactionDate,
BigDecimal amount, String method, String referenceNo,
List<String> voucherFileIds, long createdBy, String createdByName,
LocalDateTime createdAt,
String remark) {}
public record SettlementRevision(int revisionNo, String action, BigDecimal beforeAmount,
BigDecimal afterAmount, String reason, long operatorId, String operatorName,
LocalDateTime occurredAt) {}
public record SettlementDetail(@JsonUnwrapped SettlementSummary summary, List<SettlementLine> lines,
List<SettlementTransaction> transactions,
List<SettlementRevision> revisions) {}
public record SettlementListEnvelope(String code, String message, List<SettlementSummary> data,
String requestId, String traceId, Instant timestamp) {}
public record SettlementDetailEnvelope(String code, String message, SettlementDetail data,
String requestId, String traceId, Instant timestamp) {}
}