package com.inkasso.factoring.ledgermanagement.entity;

import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableName;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.inkasso.adapter.bean.BaseBean;

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

/**
 * @Description : 贸理通货物分配类
 * @Author : L.Jia
 * @Date: 2022-04-15 16:37
 */
@TableName("ledger_fund_goods_assign")
public class LedgerFundGoodsAssign extends BaseBean {

    /**
     * 对应分账管理基本信息表Id
     */
    @TableField("ledger_account_basic_info_id")
    private Long ledgerAccountBasicInfoId;

    /**
     * 业务编号
     */
    @TableField("business_number")
    private String businessNumber;

    /**
     * sop底层资产编号
     */
    @TableField("underlying_assets_no")
    private String underlyingAssetsNo;

    /**
     * 验收单货物编号
     */
    @TableField("acceptance_goods_number")
    private String acceptanceGoodsNumber;

    /**
     * 结算单号
     */
    @TableField("settlement_number")
    private String settlementNumber;

    /**
     * 对应SOP放款记录Id
     */
    @TableField("billing_factoring_business_loan_record_id")
    private Long billingFactoringBusinessLoanRecordId;

    /**
     * 对应SOP应收账款Id
     */
    @TableField("sop_accounts_receivable_id")
    private Long sopAccountsReceivableId;

    /**
     * 供应商Id
     */
    @TableField("supplier_id")
    private Long supplierId;

    /**
     * 供应商名称
     */
    @TableField("supplier_name")
    private String supplierName;

    /**
     * 合同编号
     */
    @TableField("contract_no")
    private String contractNo;

    /**
     * 额度支用批次号
     */
    @TableField("quota_disburse_batch")
    private Integer quotaDisburseBatch;

    /**
     * 销售总价
     */
    @TableField("sales_total_price")
    private BigDecimal salesTotalPrice;

    /**
     * 采购总价
     */
    @TableField("purchase_total_price")
    private BigDecimal purchaseTotalPrice;

    /**
     * 放款日期/结算日期
     */
    @TableField("loan_date")
    @JsonFormat(pattern = "yyyy-MM-dd")
    private Date loanDate;

    /**
     * 放款金额
     */
    @TableField("loan_amount")
    private BigDecimal loanAmount;

    /**
     * 本次分配金额
     */
    @TableField("current_assign_amount")
    private BigDecimal currentAssignAmount;

    /**
     * 是否计提
     */
    @TableField("is_accrual")
    private Boolean accrual;

    /**
     * 计提金额
     */
    @TableField("accrual_amount")
    private BigDecimal accrualAmount;

    /**
     * 融资本金
     */
    @TableField("financing_principal")
    private BigDecimal financingPrincipal;

    /**
     * 是否分配融资利息和管理费
     */
    @TableField("has_assign_interest")
    private Boolean hasAssignInterest;

    /**
     * 融资利息
     */
    @TableField("financing_interest")
    private BigDecimal financingInterest;

    /**
     * 融资管理费（2023.3.21新增）
     */
    @TableField("financing_management_fee")
    private BigDecimal financingManagementFee;


    /**
     * 是否分配逾期利息
     */
    @TableField("has_assign_overdue_interest")
    private Boolean hasAssignOverdueInterest;

    /**
     * 逾期利息（2023.3.21新增）
     */
    @TableField("financing_overdue_interest")
    private BigDecimal financingOverdueInterest;

    /**
     * 平台利润
     */
    @TableField("platform_profit")
    private BigDecimal platformProfit;

    /**
     * 质保金
     */
    @TableField("guarantee")
    private BigDecimal guarantee;

    /**
     * 实退金额
     */
    @TableField("discount_amount")
    private BigDecimal discountAmount;

    /**
     * 应退利息（2023.3.21新增）
     */
    @TableField("refund_interest")
    private BigDecimal refundInterest;

    /**
     * 应退管理费（2023.3.21新增）
     */
    @TableField("refund_management_fee")
    private BigDecimal refundManagementFee;

    /**
     * 待分配金额
     */
    @TableField("to_assigned_amount")
    private BigDecimal toAssignedAmount;

    /**
     * 最近一期本金回款日期（如果没有回款取放款日期）
     */
    @TableField("latest_coll_date")
    private Date latestCollDate;

    /**
     * 最后一期计划本金收款日期
     */
    @TableField("last_plan_date")
    private Date lastPlanDate;

    /**
     * 账后基础表Id
     */
    @TableField("pay_coll_basic_id")
    private Long payCollBasicId;

    /**
     * 货物分配Id
     */
    @TableField("goods_assign_id")
    private Long goodsAssignId;

    /**
     * 待回款金额（本金）
     */
    @TableField("returned_amount")
    private BigDecimal returnedAmount;

    /**
     * 是否提交
     */
    @TableField("is_submit")
    private Boolean submit;

    /**
     * 待回款管理费
     */
    @TableField(exist = false)
    private BigDecimal returnedManagement;

    /**
     * 待回款利息
     */
    @TableField(exist = false)
    private BigDecimal returnedInterest;

    /**
     * 分配列表字符
     */
    @TableField(exist = false)
    private String planFactoringAssignListStr;

    /**
     * 验收状态
     */
    @TableField(exist = false)
    private String acceptanceStatus;

    /**
     * 结算状态
     */
    @TableField(exist = false)
    private String settlementStatus;

    /**
     * 开票状态
     */
    @TableField(exist = false)
    private String invoiceStatus;

    public Long getLedgerAccountBasicInfoId() {
        return ledgerAccountBasicInfoId;
    }

    public void setLedgerAccountBasicInfoId(Long ledgerAccountBasicInfoId) {
        this.ledgerAccountBasicInfoId = ledgerAccountBasicInfoId;
    }

    public String getUnderlyingAssetsNo() {
        return underlyingAssetsNo;
    }

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

    public String getSettlementNumber() {
        return settlementNumber;
    }

    public void setSettlementNumber(String settlementNumber) {
        this.settlementNumber = settlementNumber;
    }

    public Long getBillingFactoringBusinessLoanRecordId() {
        return billingFactoringBusinessLoanRecordId;
    }

    public void setBillingFactoringBusinessLoanRecordId(Long billingFactoringBusinessLoanRecordId) {
        this.billingFactoringBusinessLoanRecordId = billingFactoringBusinessLoanRecordId;
    }

    public Long getSopAccountsReceivableId() {
        return sopAccountsReceivableId;
    }

    public void setSopAccountsReceivableId(Long sopAccountsReceivableId) {
        this.sopAccountsReceivableId = sopAccountsReceivableId;
    }

    public Long getSupplierId() {
        return supplierId;
    }

    public void setSupplierId(Long supplierId) {
        this.supplierId = supplierId;
    }

    public String getSupplierName() {
        return supplierName;
    }

    public void setSupplierName(String supplierName) {
        this.supplierName = supplierName;
    }

    public String getContractNo() {
        return contractNo;
    }

    public void setContractNo(String contractNo) {
        this.contractNo = contractNo;
    }

    public Integer getQuotaDisburseBatch() {
        return quotaDisburseBatch;
    }

    public void setQuotaDisburseBatch(Integer quotaDisburseBatch) {
        this.quotaDisburseBatch = quotaDisburseBatch;
    }

    public BigDecimal getSalesTotalPrice() {
        return salesTotalPrice;
    }

    public void setSalesTotalPrice(BigDecimal salesTotalPrice) {
        this.salesTotalPrice = salesTotalPrice;
    }

    public BigDecimal getPurchaseTotalPrice() {
        return purchaseTotalPrice;
    }

    public void setPurchaseTotalPrice(BigDecimal purchaseTotalPrice) {
        this.purchaseTotalPrice = purchaseTotalPrice;
    }

    public Date getLoanDate() {
        return loanDate;
    }

    public void setLoanDate(Date loanDate) {
        this.loanDate = loanDate;
    }

    public BigDecimal getLoanAmount() {
        return loanAmount;
    }

    public void setLoanAmount(BigDecimal loanAmount) {
        this.loanAmount = loanAmount;
    }

    public BigDecimal getCurrentAssignAmount() {
        return currentAssignAmount;
    }

    public void setCurrentAssignAmount(BigDecimal currentAssignAmount) {
        this.currentAssignAmount = currentAssignAmount;
    }

    public BigDecimal getFinancingPrincipal() {
        return financingPrincipal;
    }

    public void setFinancingPrincipal(BigDecimal financingPrincipal) {
        this.financingPrincipal = financingPrincipal;
    }

    public BigDecimal getFinancingInterest() {
        return financingInterest;
    }

    public void setFinancingInterest(BigDecimal financingInterest) {
        this.financingInterest = financingInterest;
    }

    public BigDecimal getPlatformProfit() {
        return platformProfit;
    }

    public void setPlatformProfit(BigDecimal platformProfit) {
        this.platformProfit = platformProfit;
    }

    public BigDecimal getDiscountAmount() {
        return discountAmount;
    }

    public void setDiscountAmount(BigDecimal discountAmount) {
        this.discountAmount = discountAmount;
    }

    public Boolean getAccrual() {
        return accrual;
    }

    public void setAccrual(Boolean accrual) {
        this.accrual = accrual;
    }

    public BigDecimal getAccrualAmount() {
        return accrualAmount;
    }

    public void setAccrualAmount(BigDecimal accrualAmount) {
        this.accrualAmount = accrualAmount;
    }

    public BigDecimal getToAssignedAmount() {
        return toAssignedAmount;
    }

    public void setToAssignedAmount(BigDecimal toAssignedAmount) {
        this.toAssignedAmount = toAssignedAmount;
    }

    public BigDecimal getReturnedAmount() {
        return returnedAmount;
    }

    public void setReturnedAmount(BigDecimal returnedAmount) {
        this.returnedAmount = returnedAmount;
    }

    public String getPlanFactoringAssignListStr() {
        return planFactoringAssignListStr;
    }

    public void setPlanFactoringAssignListStr(String planFactoringAssignListStr) {
        this.planFactoringAssignListStr = planFactoringAssignListStr;
    }

    public BigDecimal getReturnedManagement() {
        return returnedManagement;
    }

    public void setReturnedManagement(BigDecimal returnedManagement) {
        this.returnedManagement = returnedManagement;
    }

    public BigDecimal getReturnedInterest() {
        return returnedInterest;
    }

    public void setReturnedInterest(BigDecimal returnedInterest) {
        this.returnedInterest = returnedInterest;
    }

    public Date getLastPlanDate() {
        return lastPlanDate;
    }

    public void setLastPlanDate(Date lastPlanDate) {
        this.lastPlanDate = lastPlanDate;
    }

    public Date getLatestCollDate() {
        return latestCollDate;
    }

    public void setLatestCollDate(Date latestCollDate) {
        this.latestCollDate = latestCollDate;
    }

    public Long getPayCollBasicId() {
        return payCollBasicId;
    }

    public void setPayCollBasicId(Long payCollBasicId) {
        this.payCollBasicId = payCollBasicId;
    }

    public BigDecimal getFinancingManagementFee() {
        return financingManagementFee;
    }

    public void setFinancingManagementFee(BigDecimal financingManagementFee) {
        this.financingManagementFee = financingManagementFee;
    }

    public BigDecimal getFinancingOverdueInterest() {
        return financingOverdueInterest;
    }

    public void setFinancingOverdueInterest(BigDecimal financingOverdueInterest) {
        this.financingOverdueInterest = financingOverdueInterest;
    }

    public BigDecimal getRefundInterest() {
        return refundInterest;
    }

    public void setRefundInterest(BigDecimal refundInterest) {
        this.refundInterest = refundInterest;
    }

    public BigDecimal getRefundManagementFee() {
        return refundManagementFee;
    }

    public void setRefundManagementFee(BigDecimal refundManagementFee) {
        this.refundManagementFee = refundManagementFee;
    }

    public Long getGoodsAssignId() {
        return goodsAssignId;
    }

    public void setGoodsAssignId(Long goodsAssignId) {
        this.goodsAssignId = goodsAssignId;
    }

    public Boolean getSubmit() {
        return submit;
    }

    public void setSubmit(Boolean submit) {
        this.submit = submit;
    }

    public String getBusinessNumber() {
        return businessNumber;
    }

    public void setBusinessNumber(String businessNumber) {
        this.businessNumber = businessNumber;
    }

    public String getAcceptanceGoodsNumber() {
        return acceptanceGoodsNumber;
    }

    public void setAcceptanceGoodsNumber(String acceptanceGoodsNumber) {
        this.acceptanceGoodsNumber = acceptanceGoodsNumber;
    }

    public BigDecimal getGuarantee() {
        return guarantee;
    }

    public void setGuarantee(BigDecimal guarantee) {
        this.guarantee = guarantee;
    }

    public String getAcceptanceStatus() {
        return acceptanceStatus;
    }

    public void setAcceptanceStatus(String acceptanceStatus) {
        this.acceptanceStatus = acceptanceStatus;
    }

    public String getSettlementStatus() {
        return settlementStatus;
    }

    public void setSettlementStatus(String settlementStatus) {
        this.settlementStatus = settlementStatus;
    }

    public String getInvoiceStatus() {
        return invoiceStatus;
    }

    public void setInvoiceStatus(String invoiceStatus) {
        this.invoiceStatus = invoiceStatus;
    }

    public Boolean getHasAssignInterest() {
        return hasAssignInterest;
    }

    public void setHasAssignInterest(Boolean hasAssignInterest) {
        this.hasAssignInterest = hasAssignInterest;
    }

    public Boolean getHasAssignOverdueInterest() {
        return hasAssignOverdueInterest;
    }

    public void setHasAssignOverdueInterest(Boolean hasAssignOverdueInterest) {
        this.hasAssignOverdueInterest = hasAssignOverdueInterest;
    }
}
