package com.zt.plat.module.contractorder.dal.dataobject.contract;

import com.baomidou.mybatisplus.annotation.*;
import com.zt.plat.framework.mybatis.core.dataobject.BusinessBaseDO;
import lombok.*;

import java.math.BigDecimal;
import java.time.LocalDateTime;

/**
 * 合同主信息 DO
 *
 * @author 后台管理
 */
@TableName("bse_ctrt_main")
@KeySequence("bse_ctrt_main_seq") // 用于 Oracle、PostgreSQL、Kingbase、DB2、H2 数据库的主键自增。如果是 MySQL 等数据库，可不写。
@Data
@EqualsAndHashCode(callSuper = true)
@ToString(callSuper = true)
@Builder
@NoArgsConstructor
@AllArgsConstructor
/**
 * 支持业务基类继承：isBusiness=true 时继承 BusinessBaseDO，否则继承 BaseDO
 */
public class ContractMainDO extends BusinessBaseDO {

    /**
     * 主键
     */
    @TableId(type = IdType.ASSIGN_ID)
    private Long id;
    /**
     * 模板实例主键
     */
    @TableField("INSC_ID")
    private Long instanceId;
    /**
     * 系统合同编号;自动生成，校验唯一
     */
    @TableField("SYS_CTRT_NUM")
    private String systemContractNumber;
    /**
     * 状态(字典: BSE_CTRT_STS)
     */
    @TableField("STS")
    private String status;
    /**
     * 合同名称;与ERP(HTMC)对应，校验唯一
     */
    @TableField("CTRT_NAME")
    private String contractName;
    /**
     * 合同编号;与ERP(HTBH)对应，校验唯一
     */
    @TableField("CTRT_PPR_NUM")
    private String contractPaperNumber;
    /**
     * 是否虚拟合同;与ERP(SFXNHT)对应
     */
    @TableField("CTRT_VRTL")
    private String contractVirtual;
    /**
     * 交易方式(字典: HS_PYBL_TP)
     */
    @TableField("HS_PYBL")
    private String hasPayable;
    /**
     * 收支性质;与ERP(SZXZ)对应
     */
    @TableField("DRCT")
    private String direction;
    /**
     * 合同类型
     */
    @TableField("CTRT_TP")
    private String contractType;
    /**
     * 签署日期;与ERP(HTQDRQ)对应
     */
    @TableField("SGN_DT")
    private LocalDateTime signDate;
    /**
     * 开始日期;与ERP(HTQSRQ)对应
     */
    @TableField("STRT_DT")
    private LocalDateTime startDate;
    /**
     * 结束日期;与ERP(HTZZRQ)对应
     */
    @TableField("END_DT")
    private LocalDateTime endDate;
    /**
     * 签署地
     */
    @TableField("SGN_PLCE")
    private String signPlace;
    /**
     * 甲方公司编号;如果是采购合同，查询组织机构自动带出，且与ERP(HTQDZTBH)对应，如果是销售合同，手动选择，且与ERP(WLDWBH)对应。
     */
    @TableField("PRCH_CPN_NUM")
    private String purchaseCompanyNumber;
    /**
     * 甲方公司名称
     */
    @TableField("PRCH_CPN_NAME")
    private String purchaseCompanyName;
    /**
     * 甲方地址
     */
    @TableField("PRCH_ADR")
    private String purchaseAddress;
    /**
     * 甲方法定代表人
     */
    @TableField("PRCH_LDR")
    private String purchaseLeader;
    /**
     * 乙方公司编号;如果是销售合同，查询组织机构自动带出，且与ERP(HTQDZTBH)对应，如果是采购合同，手动选择，且与ERP(WLDWBH)对应。
     */
    @TableField("SALE_CPN_NUM")
    private String salesCompanyNumber;
    /**
     * 乙方公司名称
     */
    @TableField("SALE_CPN_NAME")
    private String salesCompanyName;
    /**
     * 乙方地址
     */
    @TableField("SALE_ADR")
    private String salesAddress;
    /**
     * 乙方企业负责人
     */
    @TableField("SALE_PRCH_LDR")
    private String salesPurchaseLeader;
    /**
     * 币种;与ERP(BZBH)对应
     */
    @TableField("CUR")
    private String currency;
    /**
     * 原币金额;与ERP(HTYBZJE)对应，币种不是人民币时，显示并手动填写，如果是人民币，隐藏且等于本币金额
     */
    @TableField("COO_AMT")
    private BigDecimal cooAmount;
    /**
     * 本币金额;与ERP(HTBWBZJE)对应
     */
    @TableField("BSC_AMT")
    private BigDecimal basicAmount;
    /**
     * 是否有履约保证金;为是，则保证金必填。
     */
    @TableField("HS_DPST")
    private String hasDeposit;
    /**
     * 原币履约保证金;与ERP(LYBZJBGQYB)对应，币种不是人民币时，显示并手动填写，如果是人民币，隐藏且等于本币金额
     */
    @TableField("COO_AMT_DPST")
    private BigDecimal cooAmountDeposit;
    /**
     * 本币履约保证金;与ERP(LYBZJBGQBWB)对应
     */
    @TableField("BSC_AMT_DPST")
    private BigDecimal basicAmountDeposit;
    /**
     * 是否有预付款;与ERP(SFYYFK)对应
     */
    @TableField("HS_PPYM")
    private String hasPrepayment;
    /**
     * 预付款比例;与ERP(YFKBL)对应
     */
    @TableField("PPYM_RTIO")
    private BigDecimal prepaymentRatio;
    /**
     * 预付款金额;与ERP(YFKJE)对应
     */
    @TableField("PPYM_AMT")
    private BigDecimal prepaymentAmount;
    /**
     * 是否有质保金;与ERP(SFHZBJ)对应
     */
    @TableField("HS_QLT_AMT")
    private String hasQualityAmount;
    /**
     * 质保金比例;与ERP(ZBJBL)对应
     */
    @TableField("QLT_RTIO")
    private BigDecimal qualityRatio;
    /**
     * 质保金金额;与ERP(BZJJE)对应
     */
    @TableField("QLT_AMT")
    private BigDecimal qualityAmount;
    /**
     * 补充协议类型;变更协议/增加条款
     */
    @TableField("RPL_AGR_TP")
    private String replenishAgreementType;
    /**
     * 备注;与ERP(BZXX)对应
     */
    @TableField("RMK")
    private String remark;
    /**
     * 施工类型编号(字典:ERP_CTRT_HTLXBH);与ERP(HTLXBH)对应，拓展信息
     */
    @TableField("CON_TP_NUM")
    private String constructionTypeNumber;
    /**
     * 施工类型名称(字典:ERP_CTRT_HTLXBH);与ERP(HTLXMC)对应，拓展信息
     */
    @TableField("CON_TP_NAME")
    private String constructionTypeName;
    /**
     * 代理方;与ERP(ZLIFNR)对应，拓展信息
     */
    @TableField("AGT")
    private String agent;
    /**
     * 类别;与ERP(HTLB)对应，拓展信息
     */
    @TableField("CTGR")
    private String category;
    /**
     * 原币金额-变更后;与ERP(BGHHTYBZJE)对应，拓展信息
     */
    @TableField("CHG_COO_AMT")
    private BigDecimal changeCooAmount;
    /**
     * 本币金额-变更后;与ERP(BGHHTBWBZJE)对应，拓展信息
     */
    @TableField("CHG_BSC_AMT")
    private BigDecimal changeBasicAmount;
    /**
     * 原币履约保证金-变更后;与ERP(LYBZJBGHYB)对应，拓展信息
     */
    @TableField("CHG_COO_AMT_DPST")
    private BigDecimal changeCooAmountDeposit;
    /**
     * 本币履约保证金-变更后;与ERP(LYBZJBGHBWB)对应，拓展信息
     */
    @TableField("CHG_BSC_AMT_DPST")
    private BigDecimal changeBasicAmountDeposit;
    /**
     * 是否框架合同;与ERP(SFKJHT)对应，拓展信息
     */
    @TableField("IS_FMWK")
    private String isFramework;
    /**
     * 境内/境外;与ERP(JNJW)对应，拓展信息
     */
    @TableField("IS_DOM")
    private String isDomestic;
    /**
     * 建筑服务发生地;与ERP(JZFWFSD)对应，拓展信息，销售合同，且类型为SAP02COSR必填
     */
    @TableField("ARCH_SVC_PLCE")
    private String architectureServicePlace;
    /**
     * 达到收款条件金额;与ERP(DDSKJE)对应，拓展信息，销售合同，且类型为SAP02COSR必填
     */
    @TableField("PYEE_CND_AMT")
    private BigDecimal payeeConditionAmount;
    /**
     * 步骤
     */
    @TableField("STP")
    private Integer step;
    /**
     * ERP请求状态(字典: ERP_REQ_STS)
     */
    @TableField("ERP_STS")
    private String erpStatus;
    /**
     * ERP请求失败原因
     */
    @TableField("CAUS")
    private String cause;
    /**
     * 流程实例编号
     */
    @TableField("PRCS_INSC_ID")
    private String processInstanceId;
    /**
     * 审批意见
     */
    @TableField("RVW_ONN")
    private String reviewOpinion;
    /**
     * 任务节点主键
     */
    @TableField("TSK_NDE_ID")
    private String taskNodeId;
    /**
     * 交货地点
     */
    @TableField("DLVY_ADR")
    private String deliveryAddress;
    /**
     * 交货方式(字典:FRCST_ASN)
     */
    @TableField("DLVY_WY")
    private String deliveryWay;
    /**
     * 甲方联系人
     */
    @TableField("PRCH_HMN")
    private String purchaseHuman;
    /**
     * 甲方电话
     */
    @TableField("PRCH_TEL")
    private String purchaseTel;
    /**
     * 甲方邮箱
     */
    @TableField("PRCH_EM")
    private String purchaseEmail;
    /**
     * 甲方传真
     */
    @TableField("PRCH_FAX")
    private String purchaseFax;
    /**
     * 甲方联系地址
     */
    @TableField("PRCH_CTCT_ADR")
    private String purchaseContactAddress;
    /**
     * 乙方联系人
     */
    @TableField("SALE_HMN")
    private String salesHuman;
    /**
     * 乙方电话
     */
    @TableField("SALE_TEL")
    private String salesTel;
    /**
     * 乙方邮箱
     */
    @TableField("SALE_EM")
    private String salesEmail;
    /**
     * 乙方传真
     */
    @TableField("SALE_FAX")
    private String salesFax;
    /**
     * 乙方联系地址
     */
    @TableField("SALE_CTCT_ADR")
    private String salesContactAddress;
    /**
     * ERP甲方公司编号
     */
    @TableField("ERP_PRCH_CPN_NUM")
    private String erpPurchaseCompanyNumber;
    /**
     * ERP甲方公司名称
     */
    @TableField("ERP_PRCH_CPN_NAME")
    private String erpPurchaseCompanyName;
    /**
     * ERP乙方公司编码
     */
    @TableField("ERP_SALE_CPN_NUM")
    private String erpSalesCompanyNumber;
    /**
     * ERP乙方公司名称
     */
    @TableField("ERP_SALE_CPN_NAME")
    private String erpSalesCompanyName;
    /**
     * 是否内部企业(字典：ERP_CTRT_YN)
     */
    @TableField("IS_INTL")
    private String isInternal;
    /**
     * 其它附件对象存储
     */
    @TableField("FILE_OBJ_OTH")
    private String fileObjectOther;
    /**
     * 模板附件对象存储
     */
    @TableField("FILE_OBJ")
    private String fileObject;
    /**
     * 合同分类(字典：SPLY_BSN_TP)
     */
    @TableField("BSN_TP")
    private String businessType;
    /**
     * 代理方名称
     */
    @TableField("AGT_NAME")
    private String agentName;
    /**
     * 货权转移类型(字典：ASY_MTNG_TP)
     */
    @TableField("MTNG_TP")
    private String meteringType;
    /**
     * 模板中间表ID
     */
    @TableField("BSN_ID")
    private Long businessId;
    /**
     * 甲方户名
     */
    @TableField("PRCH_ACCT_NAME")
    private String purchaseAccountName;
    /**
     * 甲方开户行
     */
    @TableField("PRCH_BNK_ACCT")
    private String purchaseBankAccount;
    /**
     * 甲方户号
     */
    @TableField("PRCH_ACCT_NUM")
    private String purchaseAccountNumber;
    /**
     * 甲方税号/社会信用代码
     */
    @TableField("PRCH_TAX_NUM")
    private String purchaseTaxNumber;
    /**
     * 乙方户名
     */
    @TableField("SALE_ACCT_NAME")
    private String salesAccountName;
    /**
     * 乙方开户行
     */
    @TableField("SALE_BNK_ACCT")
    private String salesBankAccount;
    /**
     * 乙方户号
     */
    @TableField("SALE_ACCT_NUM")
    private String salesAccountNumber;
    /**
     * 乙方税号/社会信用代码
     */
    @TableField("SALE_TAX_NUM")
    private String salesTaxNumber;
    /**
     * 否启用授信
     */
    @TableField("HS_CRDT")
    private String hasCredit;

    /**
     * 关联合同ID
     */
    @TableField(value = "REL_CTRT_ID")
    private Long relatedContractId;
}