package com.inkasso.factoring.invoicemanage.entity;

import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableName;
import com.inkasso.factoring.common.entity.BaseEntity;
import com.inkasso.factoring.file.entity.FileStorageDO;
import com.inkasso.factoring.system.user.entity.UserDO;

import javax.validation.constraints.NotNull;
import java.util.List;

/**
 * @Description : 发票管理-审核表
 * @Author : liutao
 * @Date: 2022-3-22
 */
@TableName("invoice_approval")
public class InvoiceApproval extends BaseEntity {

    /** 销售发票信息表Id **/
    @TableField(value = "invoice_basic_info_id")
    private Long invoiceBasicInfoId;
    /** 审核意见 **/
    @TableField(value = "approval_comment")
    private String approvalComment;
    /** 审核结论 **/
    @NotNull(message = "请选择审核结论")
    @TableField(value = "approval_conclusion")
    private String approvalConclusion;
    /** 审核人Id **/
    @TableField(value = "auditor_id")
    private Long auditorId;

    /** 审核人 **/
    @TableField(exist = false)
    private UserDO auditor;

    /**
     * 下游结算单附加
     */
    @TableField(exist = false)
    private List<FileStorageDO> settlementFile;
    /**
     *待开发票
     */
    @TableField(exist = false)
    private List<FileStorageDO> pendingInvoice;
    /**
     *上游结算单附加
     */
    @TableField(exist = false)
    private List<FileStorageDO> settlementUpstreamSignedFile;
    /**
     * 销售合同
     */
    @TableField(exist = false)
    private List<FileStorageDO> salesContract;
    /**
     *采购合同
     */
    @TableField(exist = false)
    private List<FileStorageDO> purchContract;

    /**
     * 金额种类
     */
    @TableField(exist = false)
    private Boolean amountKind;
    /**
     * 销售发票
     */
    private SalesInvoiceInfo salesInvoiceInfo;

    public InvoiceApproval() {
    }

    public Long getInvoiceBasicInfoId() {
        return invoiceBasicInfoId;
    }

    public void setInvoiceBasicInfoId(Long invoiceBasicInfoId) {
        this.invoiceBasicInfoId = invoiceBasicInfoId;
    }

    public String getApprovalComment() {
        return approvalComment;
    }

    public void setApprovalComment(String approvalComment) {
        this.approvalComment = approvalComment;
    }

    public String getApprovalConclusion() {
        return approvalConclusion;
    }

    public void setApprovalConclusion(String approvalConclusion) {
        this.approvalConclusion = approvalConclusion;
    }

    public Long getAuditorId() {
        return auditorId;
    }

    public void setAuditorId(Long auditorId) {
        this.auditorId = auditorId;
    }

    public UserDO getAuditor() {
        return auditor;
    }

    public void setAuditor(UserDO auditor) {
        this.auditor = auditor;
    }

    public List<FileStorageDO> getSettlementFile() {
        return settlementFile;
    }

    public void setSettlementFile(List<FileStorageDO> settlementFile) {
        this.settlementFile = settlementFile;
    }

    public List<FileStorageDO> getPendingInvoice() {
        return pendingInvoice;
    }

    public void setPendingInvoice(List<FileStorageDO> pendingInvoice) {
        this.pendingInvoice = pendingInvoice;
    }

    public List<FileStorageDO> getSettlementUpstreamSignedFile() {
        return settlementUpstreamSignedFile;
    }

    public void setSettlementUpstreamSignedFile(List<FileStorageDO> settlementUpstreamSignedFile) {
        this.settlementUpstreamSignedFile = settlementUpstreamSignedFile;
    }

    public List<FileStorageDO> getSalesContract() {
        return salesContract;
    }

    public void setSalesContract(List<FileStorageDO> salesContract) {
        this.salesContract = salesContract;
    }

    public List<FileStorageDO> getPurchContract() {
        return purchContract;
    }

    public void setPurchContract(List<FileStorageDO> purchContract) {
        this.purchContract = purchContract;
    }

    public Boolean getAmountKind() {
        return amountKind;
    }

    public void setAmountKind(Boolean amountKind) {
        this.amountKind = amountKind;
    }

    public SalesInvoiceInfo getSalesInvoiceInfo() {
        return salesInvoiceInfo;
    }

    public void setSalesInvoiceInfo(SalesInvoiceInfo salesInvoiceInfo) {
        this.salesInvoiceInfo = salesInvoiceInfo;
    }
}
