package com.kaidi.oa.domain; import jakarta.persistence.Entity; import jakarta.persistence.GeneratedValue; import jakarta.persistence.GenerationType; import jakarta.persistence.Id; import jakarta.persistence.Table; import java.math.BigDecimal; import java.time.Instant; /** * 应收/应付款项(财务管理·往来核算)。一条 ArApItem 代表一笔往来账: * arApType 类型(应收 / 应付);partyName 往来单位(客户/供应商); * relatedRef 关联合同号或发票号;amount 款项金额;writtenOff 已核销; * unwrittenOff 未核销(= 金额 - 已核销,服务端维护);status 流转 * 未核销 → 部分核销 → 已结清(全核销即「已结清」);dueDate 账期;overdue 是否逾期(按账期)。 */ @Entity @Table(name = "ar_ap_item") public class ArApItem { public static final String T_AR = "应收"; public static final String T_AP = "应付"; public static final String S_OPEN = "未核销"; public static final String S_PARTIAL = "部分核销"; public static final String S_SETTLED = "已结清"; @Id @GeneratedValue(strategy = GenerationType.IDENTITY) private Long id; private String code; /** 类型:应收 / 应付。 */ private String arApType; /** 往来单位(客户 / 供应商)。 */ private String partyName; /** 关联合同号或发票号。 */ private String relatedRef; /** 关联合同 id(可空)。 */ private Long contractId; /** 关联发票 id(可空)。 */ private Long invoiceId; /** 款项金额。 */ private BigDecimal amount = BigDecimal.ZERO; /** 已核销金额。 */ private BigDecimal writtenOff = BigDecimal.ZERO; /** 未核销金额(= 金额 - 已核销)。 */ private BigDecimal unwrittenOff = BigDecimal.ZERO; /** 未核销 / 部分核销 / 已结清。 */ private String status; private String dueDate; private String companySubject; private String owner; private String remark; private Instant createdAt; public Long getId() { return id; } public void setId(Long id) { this.id = id; } public String getCode() { return code; } public void setCode(String code) { this.code = code; } public String getArApType() { return arApType; } public void setArApType(String arApType) { this.arApType = arApType; } public String getPartyName() { return partyName; } public void setPartyName(String partyName) { this.partyName = partyName; } public String getRelatedRef() { return relatedRef; } public void setRelatedRef(String relatedRef) { this.relatedRef = relatedRef; } public Long getContractId() { return contractId; } public void setContractId(Long contractId) { this.contractId = contractId; } public Long getInvoiceId() { return invoiceId; } public void setInvoiceId(Long invoiceId) { this.invoiceId = invoiceId; } public BigDecimal getAmount() { return amount; } public void setAmount(BigDecimal amount) { this.amount = amount; } public BigDecimal getWrittenOff() { return writtenOff; } public void setWrittenOff(BigDecimal writtenOff) { this.writtenOff = writtenOff; } public BigDecimal getUnwrittenOff() { return unwrittenOff; } public void setUnwrittenOff(BigDecimal unwrittenOff) { this.unwrittenOff = unwrittenOff; } public String getStatus() { return status; } public void setStatus(String status) { this.status = status; } public String getDueDate() { return dueDate; } public void setDueDate(String dueDate) { this.dueDate = dueDate; } public String getCompanySubject() { return companySubject; } public void setCompanySubject(String companySubject) { this.companySubject = companySubject; } public String getOwner() { return owner; } public void setOwner(String owner) { this.owner = owner; } public String getRemark() { return remark; } public void setRemark(String remark) { this.remark = remark; } public Instant getCreatedAt() { return createdAt; } public void setCreatedAt(Instant createdAt) { this.createdAt = createdAt; } }