package com.sifang.modules.customer.entity;

import org.hibernate.annotations.GenericGenerator;

import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.Table;
import java.io.Serializable;
import java.math.BigDecimal;

@Entity
@Table(name = "crm_customer_incoming_application_retail_pay_info")
public class CrmCustomerIncomingApplicationRetailPayInfo implements Serializable {

    /**
     * id
     */
    private String id;

    /**
     * 进件申请id
     */
    private String applicationId;

    /**
     * crm_customer_entry 表id
     */
    private String entryId;

    /**
     * 租金计算方式(00:自定义租金计划)
     */
    private String rentCalcMethod;

    /**
     * 租赁方案(关联浙银租赁的融资租赁方案编号)
     */
    private String leaseScheme;

    /**
     * 融资额
     */
    private BigDecimal financingAmount;

    /**
     * 剩余留购款
     */
    private BigDecimal nominalPrice;

    /**
     * 还款频率(12：按月;4：按季度;2：按半年;1:按年;)
     */
    private String repayFrequency;

    /**
     * 期数(12/24/36)
     */
    private Integer leaseTimes;

    /**
     * 最后一期是否合并(Y/N)
     */
    private String isMergeFinalTerm;

    /**
     * 首付款收取方(0:浙银收取;1:厂商收取;2:无首付款)
     */
    private String downPaymentType;

    /**
     * 租赁年利率
     */
    private BigDecimal intRate;

    /**
     * 内含利率
     */
    private BigDecimal intRateReply;

    /**
     * 租赁期限（月）
     */
    private Integer leaseTerm;

    /**
     * 保证金退还方式(10:抵扣;20:退换)
     */
    private String depositReturnType;

    /**
     * 宽限期类型(10:无宽限;20:前一期;30:前二期;40:前三期;50:宽限期自定义;60:前四期;)
     */
    private String graceType;

    /**
     * 宽限期月份(当宽限期类型为自定义必填，月份用英文,隔开，最多支持4个月。)
     */
    private String graceMonth;

    /**
     * 是否返利(Y/N)
     */
    private String isReturnInterest;

    /**
     * 是否贴息(Y/N)
     */
    private String isSubsidyInterest;

    /**
     * 申请放款日(yyyy-MM-dd)
     */
    private String reqLoanDate;

    /**
     * 是否支持代扣(Y/N)
     */
    private String isWithholding;

    /**
     * 状态(状态(0 正常 1 删除))
     */
    private String status;

    private String collectManuDeposit;

    private String collectDepositMethod;

    private BigDecimal collectDepositRatio;

    private String downPaymentMethod;

    private BigDecimal downPaymentRatio;

    private static final long serialVersionUID = 1L;

    public String getCollectManuDeposit() {
        return collectManuDeposit;
    }

    public void setCollectManuDeposit(String collectManuDeposit) {
        this.collectManuDeposit = collectManuDeposit;
    }

    /**
     * id
     */
    @Id
    @GeneratedValue(generator = "idGenerator")
    @GenericGenerator(name = "idGenerator", strategy = "uuid")
    public String getId() {
        return id;
    }

    /**
     * id
     */
    public void setId(String id) {
        this.id = id;
    }

    /**
     * crm_customer_entry 表id
     */
    public String getEntryId() {
        return entryId;
    }

    /**
     * crm_customer_entry 表id
     */
    public void setEntryId(String entryId) {
        this.entryId = entryId;
    }

    /**
     * 租金计算方式(00:自定义租金计划)
     */
    public String getRentCalcMethod() {
        return rentCalcMethod;
    }

    /**
     * 租金计算方式(00:自定义租金计划)
     */
    public void setRentCalcMethod(String rentCalcMethod) {
        this.rentCalcMethod = rentCalcMethod;
    }

    /**
     * 租赁方案(关联浙银租赁的融资租赁方案编号)
     */
    public String getLeaseScheme() {
        return leaseScheme;
    }

    /**
     * 租赁方案(关联浙银租赁的融资租赁方案编号)
     */
    public void setLeaseScheme(String leaseScheme) {
        this.leaseScheme = leaseScheme;
    }

    /**
     * 融资额
     */
    public BigDecimal getFinancingAmount() {
        return financingAmount;
    }

    /**
     * 融资额
     */
    public void setFinancingAmount(BigDecimal financingAmount) {
        this.financingAmount = financingAmount;
    }

    /**
     * 剩余留购款
     */
    public BigDecimal getNominalPrice() {
        return nominalPrice;
    }

    /**
     * 剩余留购款
     */
    public void setNominalPrice(BigDecimal nominalPrice) {
        this.nominalPrice = nominalPrice;
    }

    /**
     * 还款频率(12：按月;4：按季度;2：按半年;1:按年;)
     */
    public String getRepayFrequency() {
        return repayFrequency;
    }

    /**
     * 还款频率(12：按月;4：按季度;2：按半年;1:按年;)
     */
    public void setRepayFrequency(String repayFrequency) {
        this.repayFrequency = repayFrequency;
    }

    /**
     * 期数(12/24/36)
     */
    public Integer getLeaseTimes() {
        return leaseTimes;
    }

    /**
     * 期数(12/24/36)
     */
    public void setLeaseTimes(Integer leaseTimes) {
        this.leaseTimes = leaseTimes;
    }

    /**
     * 最后一期是否合并(Y/N)
     */
    public String getIsMergeFinalTerm() {
        return isMergeFinalTerm;
    }

    /**
     * 最后一期是否合并(Y/N)
     */
    public void setIsMergeFinalTerm(String isMergeFinalTerm) {
        this.isMergeFinalTerm = isMergeFinalTerm;
    }

    /**
     * 首付款收取方(0:浙银收取;1:厂商收取;2:无首付款)
     */
    public String getDownPaymentType() {
        return downPaymentType;
    }

    /**
     * 首付款收取方(0:浙银收取;1:厂商收取;2:无首付款)
     */
    public void setDownPaymentType(String downPaymentType) {
        this.downPaymentType = downPaymentType;
    }

    /**
     * 租赁年利率
     */
    public BigDecimal getIntRate() {
        return intRate;
    }

    /**
     * 租赁年利率
     */
    public void setIntRate(BigDecimal intRate) {
        this.intRate = intRate;
    }

    /**
     * 内含利率
     */
    public BigDecimal getIntRateReply() {
        return intRateReply;
    }

    /**
     * 内含利率
     */
    public void setIntRateReply(BigDecimal intRateReply) {
        this.intRateReply = intRateReply;
    }

    /**
     * 租赁期限（月）
     */
    public Integer getLeaseTerm() {
        return leaseTerm;
    }

    /**
     * 租赁期限（月）
     */
    public void setLeaseTerm(Integer leaseTerm) {
        this.leaseTerm = leaseTerm;
    }

    /**
     * 保证金退还方式(10:抵扣;20:退换)
     */
    public String getDepositReturnType() {
        return depositReturnType;
    }

    /**
     * 保证金退还方式(10:抵扣;20:退换)
     */
    public void setDepositReturnType(String depositReturnType) {
        this.depositReturnType = depositReturnType;
    }

    /**
     * 宽限期类型(10:无宽限;20:前一期;30:前二期;40:前三期;50:宽限期自定义;60:前四期;)
     */
    public String getGraceType() {
        return graceType;
    }

    /**
     * 宽限期类型(10:无宽限;20:前一期;30:前二期;40:前三期;50:宽限期自定义;60:前四期;)
     */
    public void setGraceType(String graceType) {
        this.graceType = graceType;
    }

    /**
     * 宽限期月份(当宽限期类型为自定义必填，月份用英文,隔开，最多支持4个月。)
     */
    public String getGraceMonth() {
        return graceMonth;
    }

    /**
     * 宽限期月份(当宽限期类型为自定义必填，月份用英文,隔开，最多支持4个月。)
     */
    public void setGraceMonth(String graceMonth) {
        this.graceMonth = graceMonth;
    }

    /**
     * 是否返利(Y/N)
     */
    public String getIsReturnInterest() {
        return isReturnInterest;
    }

    /**
     * 是否返利(Y/N)
     */
    public void setIsReturnInterest(String isReturnInterest) {
        this.isReturnInterest = isReturnInterest;
    }

    /**
     * 是否贴息(Y/N)
     */
    public String getIsSubsidyInterest() {
        return isSubsidyInterest;
    }

    /**
     * 是否贴息(Y/N)
     */
    public void setIsSubsidyInterest(String isSubsidyInterest) {
        this.isSubsidyInterest = isSubsidyInterest;
    }

    /**
     * 申请放款日(yyyy-MM-dd)
     */
    public String getReqLoanDate() {
        return reqLoanDate;
    }

    /**
     * 申请放款日(yyyy-MM-dd)
     */
    public void setReqLoanDate(String reqLoanDate) {
        this.reqLoanDate = reqLoanDate;
    }

    /**
     * 是否支持代扣(Y/N)
     */
    public String getIsWithholding() {
        return isWithholding;
    }

    /**
     * 是否支持代扣(Y/N)
     */
    public void setIsWithholding(String isWithholding) {
        this.isWithholding = isWithholding;
    }

    public String getApplicationId() {
        return applicationId;
    }

    public void setApplicationId(String applicationId) {
        this.applicationId = applicationId;
    }

    public String getStatus() {
        return status;
    }

    public void setStatus(String status) {
        this.status = status;
    }


    public String getCollectDepositMethod() {
        return collectDepositMethod;
    }

    public void setCollectDepositMethod(String collectDepositMethod) {
        this.collectDepositMethod = collectDepositMethod;
    }

    public BigDecimal getCollectDepositRatio() {
        return collectDepositRatio;
    }

    public void setCollectDepositRatio(BigDecimal collectDepositRatio) {
        this.collectDepositRatio = collectDepositRatio;
    }

    public String getDownPaymentMethod() {
        return downPaymentMethod;
    }

    public void setDownPaymentMethod(String downPaymentMethod) {
        this.downPaymentMethod = downPaymentMethod;
    }

    public BigDecimal getDownPaymentRatio() {
        return downPaymentRatio;
    }

    public void setDownPaymentRatio(BigDecimal downPaymentRatio) {
        this.downPaymentRatio = downPaymentRatio;
    }

    @Override
    public String toString() {
        return "CrmCustomerIncomingApplicationRetailPayInfo{" +
                "id='" + id + '\'' +
                ", entryId='" + entryId + '\'' +
                ", rentCalcMethod='" + rentCalcMethod + '\'' +
                ", leaseScheme='" + leaseScheme + '\'' +
                ", financingAmount=" + financingAmount +
                ", nominalPrice=" + nominalPrice +
                ", repayFrequency='" + repayFrequency + '\'' +
                ", leaseTimes=" + leaseTimes +
                ", isMergeFinalTerm='" + isMergeFinalTerm + '\'' +
                ", downPaymentType='" + downPaymentType + '\'' +
                ", intRate=" + intRate +
                ", intRateReply=" + intRateReply +
                ", leaseTerm=" + leaseTerm +
                ", depositReturnType='" + depositReturnType + '\'' +
                ", graceType='" + graceType + '\'' +
                ", graceMonth='" + graceMonth + '\'' +
                ", isReturnInterest='" + isReturnInterest + '\'' +
                ", isSubsidyInterest='" + isSubsidyInterest + '\'' +
                ", reqLoanDate='" + reqLoanDate + '\'' +
                ", isWithholding='" + isWithholding + '\'' +
                '}';
    }
}
