package cn.iocoder.yudao.module.crm.controller.admin.finance.vo; import io.swagger.v3.oas.annotations.media.Schema; import lombok.Data; import java.math.BigDecimal; import java.time.LocalDateTime; import java.util.List; /** * 客户应收对账单 Response VO */ @Schema(description = "管理后台 - 客户应收对账单 Response VO") @Data public class CrmCustomerStatementRespVO { @Schema(description = "客户编号") private Long customerId; @Schema(description = "客户名称") private String customerName; @Schema(description = "订单数量") private Integer orderCount; @Schema(description = "订单总金额") private BigDecimal orderTotalAmount; @Schema(description = "已出库金额") private BigDecimal shippedAmount; @Schema(description = "已开票金额(审批通过)") private BigDecimal invoicedAmount; @Schema(description = "已回款金额(审批通过)") private BigDecimal collectedAmount; @Schema(description = "已出库未开票金额") private BigDecimal shippedNotInvoicedAmount; @Schema(description = "未核销应收金额(订单金额 - 已回款)") private BigDecimal outstandingAmount; @Schema(description = "下月计划回款金额") private BigDecimal nextMonthPlanAmount; @Schema(description = "订单明细") private List orders; @Schema(description = "开票流水") private List invoices; @Schema(description = "回款流水") private List receipts; @Schema(description = "订单行") @Data public static class OrderRow { @Schema(description = "销售订单编号") private Long saleOrderId; @Schema(description = "销售订单号") private String saleOrderNo; @Schema(description = "合同编号") private Long contractId; @Schema(description = "下单时间") private LocalDateTime orderTime; @Schema(description = "订单金额") private BigDecimal orderAmount; @Schema(description = "已出库金额") private BigDecimal shippedAmount; @Schema(description = "已开票金额") private BigDecimal invoicedAmount; @Schema(description = "已回款金额") private BigDecimal collectedAmount; @Schema(description = "已出库未开票金额") private BigDecimal shippedNotInvoicedAmount; @Schema(description = "未开票金额(订单金额 - 已开票)") private BigDecimal uninvoicedAmount; @Schema(description = "未核销应收金额") private BigDecimal outstandingAmount; @Schema(description = "订单状态(ERP 审核状态)") private Integer status; } @Schema(description = "开票流水") @Data public static class InvoiceRow { @Schema(description = "开票编号") private Long id; @Schema(description = "开票单号") private String no; @Schema(description = "发票号") private String invoiceNo; @Schema(description = "开票时间") private LocalDateTime invoiceTime; @Schema(description = "开票金额") private BigDecimal invoiceAmount; @Schema(description = "已回款金额") private BigDecimal collectedAmount; @Schema(description = "剩余应收") private BigDecimal remainingReceivable; @Schema(description = "销售订单编号") private Long saleOrderId; @Schema(description = "销售订单号") private String saleOrderNo; @Schema(description = "审批状态") private Integer status; } @Schema(description = "回款流水") @Data public static class ReceiptRow { @Schema(description = "回款编号") private Long id; @Schema(description = "回款单号") private String no; @Schema(description = "回款时间") private LocalDateTime returnTime; @Schema(description = "回款金额") private BigDecimal amount; @Schema(description = "关联开票编号") private Long invoiceId; @Schema(description = "关联发票号") private String invoiceNo; @Schema(description = "审批状态") private Integer status; } }