/**
 * @filename:SalesContract 2024-09-03
 * @project KJT v1.0.0 Copyright(c) 2024 wanglang Co. Ltd. All right reserved.
 */
package com.trade.service.trade.salescontract.domain;

import com.fasterxml.jackson.annotation.JsonFormat;
import com.trade.common.core.domain.BaseEntity;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;
import org.springframework.format.annotation.DateTimeFormat;

import java.math.BigDecimal;
import java.time.LocalDate;

/**
 * @Description:销售合同基础信息实体类
 * @version: v1.0.0
 * @author: wanglang
 */
@Data
@EqualsAndHashCode(callSuper = false)
// @Accessors(chain = true)
public class SalesContract extends BaseEntity<SalesContract> {

    private static final long serialVersionUID = 1725359840652L;
    /**
     * 客户id
     */
    private Long customerUserId;
    /**
     * 合同编号
     */
    private String contractNo;
    /**
     * 合同名称
     */
    private String contractName;
    /**
     * 进口商统一社会信用代码/注册号
     */
    private String importerCertNo;
    /**
     * 进口商企业名称
     */
    private String importerEnterpriseName;
    /**
     * 代理公司统一社会信用代码/注册号
     */
    private String agencyCertNo;
    /**
     * 代理公司企业名称
     */
    private String agencyEnterpriseName;
    /**
     * 贸易术语
     */
    private String tradeTerms;
    /**
     * 起运港
     */
    private String portDeparture;
    /**
     * 目的港
     */
    private String portDestination;
    /**
     * 模板类型1长银0自有
     */
    private Boolean templateType;
    /**
     * 签署日期
     */
    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
    private LocalDate signDate;
    /**
     * 提交状态1草稿2正式
     */
    private String submitStatus;
    /**
     * 合同状态
     */
    private String contractStatus;
    /**
     * 审核状态1待审核2风控审核通过3法务审核通过4风控审核不通过5法务审核不通过
     */
    private String auditStatus;
    /**
     * 汇率
     */
    private BigDecimal exchangeRate;

    /**
     * 是否有对应采购合同（“自营出口”的“生产企业”,不生成采购合同）
     */
    private Boolean hasPurchaseContract;
}
