package com.inkasso.factoring.financingmanagement.entity.vo;

import com.fasterxml.jackson.annotation.JsonFormat;

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

/**
 * @Description : 贸理通业务 应收账款对应的收放款计划
 * @Author : L.Jia
 * @Date: 2024-04-09 14:31
 */
public class PaymentCollectionPlanReceivableTrade {

    /**
     * 基础交易合同名称
     **/
    private String basicTradeContractName;
    /**
     * 基础交易合同编号
     **/
    private String basicTradeContractNo;
    /**
     * 三方协议合同编号
     **/
    private String tripartiteAgreementNo;
    /**
     * 到期日
     **/
    @JsonFormat(pattern = "yyyy-MM-dd")
    private Date expireDate;
    /**
     * 应收账款到期日
     **/
    @JsonFormat(pattern = "yyyy-MM-dd")
    private Date endDate;
    /**
     * 应收账款金额
     **/
    private BigDecimal accountReceivableAmount;
    /**
     * 应收账款净额
     **/
    private BigDecimal accountReceivableNetAmount;
    /**
     * 债务人
     **/
    private String debtor;
    /**
     * 是否豁免，默认false表示否，true表示已豁免
     **/
    private boolean notNeed;
    /**
     * 拟合作业务板块(出口保理/国内保理)
     **/
    private String businessType;
    /**
     * 合同信息应收账款ID
     **/
    private Long contractAccountReceivableId;
    /**
     * 底层资产ID
     **/
    private Long underlyingAssetsId;
    /**
     * 底层资产应收账款的ID
     **/
    private Long underlyingAccountReceivableId;

    /**
     * 应收账款起始日期
     **/
    @JsonFormat(pattern = "yyyy-MM-dd")
    private Date startDate;
    /**
     * 应收账款期限
     **/
    private Integer term;

    /**
     * 贸理通底层编号
     */
    private String tradeReceivablesNumber;

    /**
     * 底层资产编号
     */
    private String underlyingAssetsNo;

    /**
     * 本次付款金额（贸理通业务新增）
     */
    private BigDecimal payAmount;

    /**
     * 此应收账款对应的收放款计划
     */
    private List<PaymentCollectionPlanFactoringLoadRecord> tradePlanFactoringList;

    public String getBasicTradeContractName() {
        return basicTradeContractName;
    }

    public void setBasicTradeContractName(String basicTradeContractName) {
        this.basicTradeContractName = basicTradeContractName;
    }

    public String getBasicTradeContractNo() {
        return basicTradeContractNo;
    }

    public void setBasicTradeContractNo(String basicTradeContractNo) {
        this.basicTradeContractNo = basicTradeContractNo;
    }

    public String getTripartiteAgreementNo() {
        return tripartiteAgreementNo;
    }

    public void setTripartiteAgreementNo(String tripartiteAgreementNo) {
        this.tripartiteAgreementNo = tripartiteAgreementNo;
    }

    public Date getExpireDate() {
        return expireDate;
    }

    public void setExpireDate(Date expireDate) {
        this.expireDate = expireDate;
    }

    public Date getEndDate() {
        return endDate;
    }

    public void setEndDate(Date endDate) {
        this.endDate = endDate;
    }

    public BigDecimal getAccountReceivableAmount() {
        return accountReceivableAmount;
    }

    public void setAccountReceivableAmount(BigDecimal accountReceivableAmount) {
        this.accountReceivableAmount = accountReceivableAmount;
    }

    public BigDecimal getAccountReceivableNetAmount() {
        return accountReceivableNetAmount;
    }

    public void setAccountReceivableNetAmount(BigDecimal accountReceivableNetAmount) {
        this.accountReceivableNetAmount = accountReceivableNetAmount;
    }

    public String getDebtor() {
        return debtor;
    }

    public void setDebtor(String debtor) {
        this.debtor = debtor;
    }

    public boolean isNotNeed() {
        return notNeed;
    }

    public void setNotNeed(boolean notNeed) {
        this.notNeed = notNeed;
    }

    public String getBusinessType() {
        return businessType;
    }

    public void setBusinessType(String businessType) {
        this.businessType = businessType;
    }

    public Long getContractAccountReceivableId() {
        return contractAccountReceivableId;
    }

    public void setContractAccountReceivableId(Long contractAccountReceivableId) {
        this.contractAccountReceivableId = contractAccountReceivableId;
    }

    public Long getUnderlyingAssetsId() {
        return underlyingAssetsId;
    }

    public void setUnderlyingAssetsId(Long underlyingAssetsId) {
        this.underlyingAssetsId = underlyingAssetsId;
    }

    public Long getUnderlyingAccountReceivableId() {
        return underlyingAccountReceivableId;
    }

    public void setUnderlyingAccountReceivableId(Long underlyingAccountReceivableId) {
        this.underlyingAccountReceivableId = underlyingAccountReceivableId;
    }

    public Date getStartDate() {
        return startDate;
    }

    public void setStartDate(Date startDate) {
        this.startDate = startDate;
    }

    public Integer getTerm() {
        return term;
    }

    public void setTerm(Integer term) {
        this.term = term;
    }

    public String getTradeReceivablesNumber() {
        return tradeReceivablesNumber;
    }

    public void setTradeReceivablesNumber(String tradeReceivablesNumber) {
        this.tradeReceivablesNumber = tradeReceivablesNumber;
    }

    public String getUnderlyingAssetsNo() {
        return underlyingAssetsNo;
    }

    public void setUnderlyingAssetsNo(String underlyingAssetsNo) {
        this.underlyingAssetsNo = underlyingAssetsNo;
    }

    public BigDecimal getPayAmount() {
        return payAmount;
    }

    public void setPayAmount(BigDecimal payAmount) {
        this.payAmount = payAmount;
    }

    public List<PaymentCollectionPlanFactoringLoadRecord> getTradePlanFactoringList() {
        return tradePlanFactoringList;
    }

    public void setTradePlanFactoringList(List<PaymentCollectionPlanFactoringLoadRecord> tradePlanFactoringList) {
        this.tradePlanFactoringList = tradePlanFactoringList;
    }
}
