package com.fjhx.sale.entity.contract.po;

import com.baomidou.mybatisplus.annotation.FieldFill;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableName;
import com.baomidou.mybatisplus.annotation.Version;
import com.fjhx.file.entity.ObsFile;
import com.ruoyi.common.core.domain.BasePo;
import lombok.Getter;
import lombok.Setter;

import java.math.BigDecimal;
import java.util.Date;
import java.util.List;

/**
 * <p>
 * 外销合同表
 * </p>
 *
 * @author
 * @since 2023-04-17
 */
@Getter
@Setter
@TableName("contract")
public class Contract extends BasePo {

    /**
     * 合同类型(1外销 2内销)
     */
    private String contractType;

    /**
     * 编码
     */
    private String code;

    /**
     * 合同模版ID
     */
    private Long contractTemplateId;

    /**
     * 卖方公司ID
     *
     * <p>
     * {@link com.fjhx.common.entity.contract.po.ContractTemplate}
     */
    private Long sellCorporationId;

    /**
     * 卖方联系人名称
     */
    private String sellContactName;

    /**
     * 卖方联系人电话
     */
    private String sellContactNumber;

    /**
     * 合同审批状态 0草稿 10、审批中；20、驳回  30、审批通过   99终止
     */
    private Integer status;

    /**
     * 到款状态 0未到款  10部分到款  20已到款
     */
    private Integer refundStatus;

    /**
     * 合同状态
     */
    private Integer contractStatus;

    /**
     * 卖方国家表id
     */
    private Long sellCountryId;

    /**
     * 卖方省份id
     */
    private Long sellProvinceId;

    /**
     * 卖方城市id
     */
    private Long sellCityId;

    /**
     * 卖方国家表名称
     */
    private String sellCountryName;

    /**
     * 卖方省份名称
     */
    private String sellProvinceName;

    /**
     * 卖方城市名称
     */
    private String sellCityName;

    /**
     * 卖方详细地址
     */
    private String sellAddress;

    /**
     * 卖方邮编
     */
    private String sellPostalCode;


    /**
     * 买方公司ID
     *
     * <p>
     * {@link com.fjhx.customer.entity.customer.po.Customer}
     */
    private Long buyCorporationId;

    /**
     * 买方联系人名称
     */
    private String buyContactName;

    /**
     * 买方联系人电话
     */
    private String buyContactNumber;

    /**
     * 币种汇率
     */
    private BigDecimal rate;

    /**
     * 买方国家表id
     */
    private Long buyCountryId;

    /**
     * 买方省份id
     */
    private Long buyProvinceId;

    /**
     * 买方城市id
     */
    private Long buyCityId;

    /**
     * 买方详细地址
     */
    private String buyAddress;

    /**
     * 买方邮编
     */
    private String buyPostalCode;

    /**
     * 币种（字典account_currency）
     */
    private String currency;

    /**
     * 合同金额
     */
    private BigDecimal amount;

    /**
     * 付款方式（字典funds_payment_method
     */
    private String paymentMethod;

    /**
     * 贸易方式（字典trade_methods）
     */
    private String tradeMethods;

    /**
     * 预付比例
     */
    private String advanceRatio;

    /**
     * 运输方式（字典  shipping_method）
     */
    private String transportMethod;

    /**
     * 运输备注
     */
    private String transportRemark;

    /**
     * 收款账号ID
     *
     * <p>
     * {@link com.fjhx.account.entity.account.po.AccountManagement}
     */
    private Long shroffAccountId;

    /**
     * 审批通过时间
     */
    private Date approvedDate;

    /**
     * 质保期
     */
    private Integer warranty;

    /**
     * 付款条件
     */
    private String remark;

    /**
     * 创建人名称
     */
    private String userName;

    /**
     * 结算状态 0未结算 1已结算
     */
    private Integer settlementStatus;

    /**
     * 交期
     */
    private Date deliveryTime;

    /**
     * 汇率json
     * List<ContractCurrencyRate> 转 json
     * {@link com.fjhx.sale.entity.contract.bo.ContractCurrencyRate}
     */
    private String currencyRateJson;

    /**
     * beneficiaryName
     */
    private String beneficiaryName;

    /**
     * beneficiaryBank
     */
    private String beneficiaryBank;

    /**
     * beneficiaryBankAddress
     */
    private String beneficiaryBankAddress;

    /**
     * beneficiaryAddress
     */
    private String beneficiaryAddress;

    /**
     * beneficiaryName
     */
    private String swiftCode;

    /**
     * beneficiaryAccountNumber
     */
    private String beneficiaryAccountNumber;

    /**
     * 户名
     */
    private String accountName;
    /**
     * 账号
     */
    private String accountOpening;
    /**
     * 开户银行
     */
    private String openingBank;

    /**
     * 利润预算表金额
     */
    private String budgetMoney;

    /**
     * 利润预算表备注
     */
    private String budgetRemark;

    /**
     * 利润结算表代理费
     */
    private BigDecimal profitAgencyFee;

    /**
     * 利润结算表备注
     */
    private String profitClearingRemark;

    /**
     * 是否变更  0:未变更  1已变更
     */
    private String isChange;

    /**
     * 是否下发交接单 0未  1下发
     */
    private String issue;

    /**
     * 原合同id
     */
    private Long oldContractId;

    /**
     * 外销跟单备注
     */
    private String documentaryRemark;

    /**
     * 是否有交接单文件
     */
    private Integer isDeliveryFile;

    /**
     * 是否有包装指示文件
     */
    private Integer isPackFile;

    /**
     * 版本号
     */
    @TableField(fill = FieldFill.INSERT)
    @Version
    private Integer version;

    /**
     * 是否显示
     */
    private Integer isShow;

    /**
     * 订单下发状态
     */
    private Integer orderDistributeStatus;

    /**
     * 订单下发时间
     */
    private Date orderDistributeTime;

    /**
     * 交接单附件列表
     */
    @TableField(exist = false)
    private List<ObsFile> fileList;

    /**
     * 包装附件列表
     */
    @TableField(exist = false)
    private List<ObsFile> packageFileList;

    /**
     * 备注文件列表
     */
    @TableField(exist = false)
    private List<ObsFile> remarkFileList;

    /**
     * 合同出货列表
     */
    @TableField(exist = false)
    private List<ContractShipment> contractShipmentList;

    /**
     * 合同收费项目
     */
    @TableField(exist = false)
    private List<ContractProject> contractProjectList;

    /**
     * 合同数量
     */
    @TableField(exist = false)
    private Integer count;

    /**
     * 归属公司名称
     */
    @TableField(exist = false)
    private String sellCorporationName;

    /**
     * 报价有效期
     */
    private String effective;

    @TableField(exist = false)
    private Long upId;

    /**
     * 流程id
     */
    private Long flowId;

    /**
     * 是否结清 1是0否
     */
    private Integer isSettled;

    /**
     * 生产公司id
     */
    private Long companyId;

    /**
     * 报价单
     */
    private Long quotationId;

    /**
     * 生产标签
     */
    private String prodTag;

    /**
     * 合同模板内容
     */
    private String templateContent;

    /**
     * 销售部门id
     */
    private Long deptId;

    /**
     * 订单类型 0销售合同 1样品单
     */
    private Integer type;

    /**
     * 生产备注
     */
    private String prodRemark;

    /**
     * 销售出库状态 0未出库 1已出库
     */
    private Integer outboundStatus;

}
