package cn.iocoder.yudao.module.crm.dal.dataobject.invoice; import cn.iocoder.yudao.framework.mybatis.core.dataobject.BaseDO; import cn.iocoder.yudao.module.crm.dal.dataobject.contract.CrmContractDO; import cn.iocoder.yudao.module.crm.dal.dataobject.customer.CrmCustomerDO; import cn.iocoder.yudao.module.crm.enums.common.CrmAuditStatusEnum; import cn.iocoder.yudao.module.system.api.user.dto.AdminUserRespDTO; import com.baomidou.mybatisplus.annotation.KeySequence; import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableName; import lombok.*; import java.math.BigDecimal; import java.time.LocalDateTime; /** * 开票 DO * * @author 超级管理员 */ @TableName("crm_invoice") @KeySequence("crm_invoice_seq") // 用于 Oracle、PostgreSQL、Kingbase、DB2、H2 数据库的主键自增。如果是 MySQL 等数据库,可不写。 @Data @EqualsAndHashCode(callSuper = true) @ToString(callSuper = true) @Builder @NoArgsConstructor @AllArgsConstructor public class CrmInvoiceDO extends BaseDO { /** * ID */ @TableId private Long id; /** * 开票编号 */ private String no; /** * 客户编号 * * 关联 {@link CrmCustomerDO#getId()} */ private Long customerId; /** * 合同编号 * * 关联 {@link CrmContractDO#getId()} */ private Long contractId; /** * 负责人编号,关联 {@link AdminUserRespDTO#getId()} */ private Long ownerUserId; /** * 发票类型 * * 字典 {@link cn.iocoder.yudao.module.crm.enums.DictTypeConstants#CRM_INVOICE_TYPE} */ private Integer invoiceType; /** * 发票号码 */ private String invoiceNo; /** * 发票抬头 */ private String invoiceTitle; /** * 开票金额,单位:元 */ private BigDecimal price; /** * 开票日期 */ private LocalDateTime invoiceTime; /** * 备注 */ private String remark; /** * 审批状态 * * 枚举 {@link CrmAuditStatusEnum} */ private Integer auditStatus; /** * 审核人用户编号 * * 审批人由「系统管理 - 审批配置」按业务类型统一配置(业务编码 crm_invoice_approve), * 提交时不指定;此处记录实际执行审核的用户。 */ private Long reviewerId; /** 审核人姓名(审核时冗余记录,避免列表展示再查用户) */ private String reviewerName; /** 审核时间 */ private LocalDateTime reviewTime; /** 审核意见(审核通过时的意见 / 审核不通过时的原因) */ private String reviewRemark; }