223 lines
4.5 KiB
Java
223 lines
4.5 KiB
Java
package org.dromara.crm.domain.bo;
|
|
|
|
import io.github.linpeilie.annotations.AutoMapper;
|
|
import jakarta.validation.constraints.*;
|
|
import lombok.Data;
|
|
import lombok.EqualsAndHashCode;
|
|
import org.dromara.common.core.validate.AddGroup;
|
|
import org.dromara.common.core.validate.EditGroup;
|
|
import org.dromara.common.mybatis.core.domain.BaseEntity;
|
|
import org.dromara.crm.domain.CrmQuote;
|
|
|
|
import java.math.BigDecimal;
|
|
import java.time.LocalDate;
|
|
import java.util.List;
|
|
|
|
/**
|
|
* 报价单业务对象 crm_quote
|
|
*
|
|
* @author 系统管理员
|
|
* @date 2025-01-03
|
|
*/
|
|
@Data
|
|
@EqualsAndHashCode(callSuper = true)
|
|
@AutoMapper(target = CrmQuote.class, reverseConvertGenerate = false)
|
|
public class CrmQuoteBo extends BaseEntity {
|
|
|
|
/**
|
|
* 主键ID
|
|
*/
|
|
@NotNull(message = "主键不能为空", groups = { EditGroup.class })
|
|
private Long id;
|
|
|
|
/**
|
|
* 报价单编号(系统自动生成)
|
|
*/
|
|
private String quoteNo;
|
|
|
|
/**
|
|
* 报价单标题(可不填,系统自动生成)
|
|
*/
|
|
private String quoteTitle;
|
|
|
|
/**
|
|
* 报价单类型(sales-销售/purchase-采购)
|
|
*/
|
|
@NotBlank(message = "报价单类型不能为空", groups = { AddGroup.class, EditGroup.class })
|
|
@Pattern(regexp = "sales|purchase", message = "报价单类型只能为销售或采购", groups = { AddGroup.class, EditGroup.class })
|
|
private String quoteType;
|
|
|
|
/**
|
|
* 客户ID
|
|
*/
|
|
@NotNull(message = "客户ID不能为空", groups = { AddGroup.class, EditGroup.class })
|
|
private Long customerId;
|
|
|
|
/**
|
|
* 客户名称(冗余字段)
|
|
*/
|
|
private String customerName;
|
|
|
|
/**
|
|
* 快速检索关键字(用于报价主题/客户名称模糊检索)
|
|
*/
|
|
private String keyword;
|
|
|
|
/**
|
|
* 商机ID
|
|
*/
|
|
private Long opportunityId;
|
|
|
|
/**
|
|
* 联系人ID
|
|
*/
|
|
private Long contactId;
|
|
|
|
/**
|
|
* 联系人姓名(冗余字段)
|
|
*/
|
|
private String contactName;
|
|
|
|
/**
|
|
* 联系人手机(冗余字段)
|
|
*/
|
|
private String contactMobile;
|
|
|
|
/**
|
|
* 联系人邮箱(冗余字段)
|
|
*/
|
|
private String contactEmail;
|
|
|
|
/**
|
|
* 版本号(如V1.0,V1.1,V2.0)
|
|
*/
|
|
private String version;
|
|
|
|
/**
|
|
* 父版本ID
|
|
*/
|
|
private Long parentId;
|
|
|
|
/**
|
|
* 是否最新版本(0否 1是)
|
|
*/
|
|
private Integer isLatest;
|
|
|
|
/**
|
|
* 整单折扣率(百分比)
|
|
*/
|
|
@DecimalMin(value = "0.00", message = "折扣率不能为负数")
|
|
@DecimalMax(value = "100.00", message = "折扣率不能超过100")
|
|
private BigDecimal discountRate;
|
|
|
|
/**
|
|
* 有效期(天数)
|
|
*/
|
|
@Min(value = 1, message = "有效期必须大于0")
|
|
private Integer validityDays;
|
|
|
|
/**
|
|
* 报价日期
|
|
*/
|
|
private LocalDate quoteDate;
|
|
|
|
/**
|
|
* 报价日期开始
|
|
*/
|
|
private String quoteDateBegin;
|
|
|
|
/**
|
|
* 报价日期结束
|
|
*/
|
|
private String quoteDateEnd;
|
|
|
|
/**
|
|
* 到期日期
|
|
*/
|
|
private LocalDate expireDate;
|
|
|
|
/**
|
|
* 状态
|
|
*/
|
|
private String status;
|
|
|
|
/**
|
|
* 拒绝原因
|
|
*/
|
|
private String rejectReason;
|
|
|
|
/**
|
|
* 负责人ID
|
|
*/
|
|
private Long ownerUserId;
|
|
|
|
/**
|
|
* 负责人姓名(冗余字段)
|
|
*/
|
|
private String ownerUserName;
|
|
|
|
/**
|
|
* 报价主体ID(关联crm_supplier_info表)
|
|
*/
|
|
@NotNull(message = "报价主体不能为空", groups = { AddGroup.class, EditGroup.class })
|
|
private Long supplierId;
|
|
|
|
/**
|
|
* 报价主体名称(冗余字段)
|
|
*/
|
|
private String supplierName;
|
|
|
|
/**
|
|
* 关联合同ID
|
|
*/
|
|
private Long contractId;
|
|
|
|
/**
|
|
* 付款条款
|
|
*/
|
|
private String paymentTerms;
|
|
|
|
/**
|
|
* 交付条款
|
|
*/
|
|
private String deliveryTerms;
|
|
|
|
/**
|
|
* 运费(元)
|
|
*/
|
|
@DecimalMin(value = "0.00", message = "运费不能为负数")
|
|
private BigDecimal freight;
|
|
|
|
/**
|
|
* 附件(多个用逗号分隔)
|
|
*/
|
|
private String attachments;
|
|
|
|
/**
|
|
* 报价单模板内容(富文本HTML)
|
|
*/
|
|
private String templateContent;
|
|
|
|
/**
|
|
* 备注
|
|
*/
|
|
private String remark;
|
|
|
|
/**
|
|
* 产品列表
|
|
*/
|
|
@NotEmpty(message = "产品列表不能为空", groups = { AddGroup.class })
|
|
private List<CrmQuoteProductBo> products;
|
|
|
|
/**
|
|
* 审批人ID(用于查询某个用户已审批过的报价单)
|
|
*/
|
|
private Long approvedByUserId;
|
|
|
|
/**
|
|
* 排除的状态(用于默认排除已作废的记录)
|
|
*/
|
|
private String excludeStatus;
|
|
|
|
}
|