package com.sunxung.factoring.entity.invoicemanage;

import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableName;
import com.sunxung.factoring.entity.project.Project;
import com.sunxung.factoring.entity.sys.Dictionary;
import com.sunxung.factoring.entity.sys.FileStorage;
import com.sunxung.factoring.entity.sys.FileStorageDO;

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

/**
 * @Description : 发票管理-基本信息表
 * @Author : liutao
 * @Date: 2022-3-22
 */
@TableName("c_invoice_basic_info")
public class InvoiceBasicInfo extends Project {
    /**
     * 核心企业Id
     */
    @NotNull(message = "请选择核心企业")
    @TableField(value = "enterprise_customer_info_id")
    private Long enterpriseCustomerInfoId;
    /**
     * 贸易平台Id
     **/
    @NotNull(message = "请选择贸易平台")
    @TableField(value = "trading_platform_id")
    private Long tradingPlatformId;
    /**
     * 纳税识别号
     */
    @NotNull(message = "纳税人识别号不能为空")
    @TableField(value = "tax_identify_number")
    private String taxIdentifyNumber;
    /**
     * 地址
     */
    @TableField(value = "address")
    private String address;
    /**
     * 电话
     */
    @TableField(value = "phone")
    private String phone;
    /**
     * 开户行名称
     */
    @NotNull(message = "开户行名称不能为空")
    @TableField(value = "account_bank_name")
    private String accountBankName;
    /**
     * 开户账号
     */
    @NotNull(message = "开户行账号不能为空")
    @TableField(value = "account_number")
    private String accountNumber;
    /**
     * 发票类型
     */
    @NotNull(message = "请选择发票类型")
    @TableField(value = "invoice_type")
    private String invoiceType;
    /**
     * 金额种类
     */
    @NotNull(message = "请选择金额种类")
    @TableField(value = "amount_kind")
    private String amountKind;
    /**
     * 开票金额总和
     */
    @TableField(value = "open_amount")
    private BigDecimal openAmount;
    /**
     * 发票状态 已申请、已驳回、已开票
     */
    @TableField(value = "invoice_status")
    private Long invoiceStatus;
    /**
     * 备注
     */
    @TableField(value = "remark")
    private String remark;
    /**
     * 商品大类信息
     */
    @TableField(value = "product_broad_info")
    private String productBroadInfo;

    /**
     * 商品大类信息 附件
     */
    @TableField(exist = false)
    private List<FileStorage>  invoiceDetailList;

    @TableField(exist = false)
    private String taskId;
    /**
     * 发票类型
     **/
    @TableField(exist = false)
    private Dictionary invoiceTypeDic;
    /**
     * 金额种类
     **/
    @TableField(exist = false)
    private Dictionary amountKindDic;

    /**
     * 发票状态
     **/
    @TableField(exist = false)
    private Dictionary invoiceStatusDic;

    /**
     * 采购发票附件
     */
    @TableField(exist = false)
    private List<FileStorage> files;

    /**
     *待开发票
     */
    @TableField(exist = false)
    private List<FileStorage> pendingInvoice;

    /**
     * 需要删除的附加id
     */
    @TableField(exist = false)
    private List<Long> deleteIds;
    /**
     * 公司名称
     **/
    @TableField(exist = false)
    private String companyName;
    /**
     * 业务基础信息表id
     */
    @TableField(exist = false)
    private Long businessBasicInfoId;
    /**
     * 货物
     **/
    @TableField(exist = false)
    private List<InvoiceGoodsInfo> invoiceGoodsInfos;
    /**
     * 资金占用费
     **/
    @TableField(exist = false)
    private InvoicePossessionCostInfo invoicePossessionCostInfos;
    /**
     * 供应商
     **/
    @TableField(exist = false)
    private List<InvoiceSupplierInfo> invoiceSupplierInfos;

//    @TableField(exist = false)
//    public List<PurchaseInvoiceInfo> purchaseInvoiceInfos;
    /**
     * 采购发票-附件
     **/
    @TableField(exist = false)
    private List<Long> purchaseInvoiceFiles;

    /**
     * 开票明细-附件
     */
    @TableField(exist = false)
    private List<Long> invoiceDetailFiles;

    public InvoiceBasicInfo() {
    }

    public Long getEnterpriseCustomerInfoId() {
        return enterpriseCustomerInfoId;
    }

    public void setEnterpriseCustomerInfoId(Long enterpriseCustomerInfoId) {
        this.enterpriseCustomerInfoId = enterpriseCustomerInfoId;
    }

    public Long getTradingPlatformId() {
        return tradingPlatformId;
    }

    public void setTradingPlatformId(Long tradingPlatformId) {
        this.tradingPlatformId = tradingPlatformId;
    }

    public String getTaxIdentifyNumber() {
        return taxIdentifyNumber;
    }

    public void setTaxIdentifyNumber(String taxIdentifyNumber) {
        this.taxIdentifyNumber = taxIdentifyNumber;
    }

    public String getAddress() {
        return address;
    }

    public void setAddress(String address) {
        this.address = address;
    }

    public String getPhone() {
        return phone;
    }

    public void setPhone(String phone) {
        this.phone = phone;
    }

    public String getAccountBankName() {
        return accountBankName;
    }

    public void setAccountBankName(String accountBankName) {
        this.accountBankName = accountBankName;
    }

    public String getAccountNumber() {
        return accountNumber;
    }

    public void setAccountNumber(String accountNumber) {
        this.accountNumber = accountNumber;
    }

    public String getInvoiceType() {
        return invoiceType;
    }

    public void setInvoiceType(String invoiceType) {
        this.invoiceType = invoiceType;
    }

    public String getAmountKind() {
        return amountKind;
    }

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

    public Long getInvoiceStatus() {
        return invoiceStatus;
    }

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

    public String getRemark() {
        return remark;
    }

    public void setRemark(String remark) {
        this.remark = remark;
    }

    public Dictionary getInvoiceTypeDic() {
        return invoiceTypeDic;
    }

    public void setInvoiceTypeDic(Dictionary invoiceTypeDic) {
        this.invoiceTypeDic = invoiceTypeDic;
    }

    public Dictionary getAmountKindDic() {
        return amountKindDic;
    }

    public void setAmountKindDic(Dictionary amountKindDic) {
        this.amountKindDic = amountKindDic;
    }

    public BigDecimal getOpenAmount() {
        return openAmount;
    }

    public void setOpenAmount(BigDecimal openAmount) {
        this.openAmount = openAmount;
    }

    public Dictionary getInvoiceStatusDic() {
        return invoiceStatusDic;
    }

    public void setInvoiceStatusDic(Dictionary invoiceStatusDic) {
        this.invoiceStatusDic = invoiceStatusDic;
    }

    public List<FileStorage> getFiles() {
        return files;
    }

    public void setFiles(List<FileStorage> files) {
        this.files = files;
    }

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

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

    public List<Long> getDeleteIds() {
        return deleteIds;
    }

    public void setDeleteIds(List<Long> deleteIds) {
        this.deleteIds = deleteIds;
    }

    public String getCompanyName() {
        return companyName;
    }

    public void setCompanyName(String companyName) {
        this.companyName = companyName;
    }

    public List<InvoiceGoodsInfo> getInvoiceGoodsInfos() {
        return invoiceGoodsInfos;
    }

    public void setInvoiceGoodsInfos(List<InvoiceGoodsInfo> invoiceGoodsInfos) {
        this.invoiceGoodsInfos = invoiceGoodsInfos;
    }

    public InvoicePossessionCostInfo getInvoicePossessionCostInfos() {
        return invoicePossessionCostInfos;
    }

    public void setInvoicePossessionCostInfos(InvoicePossessionCostInfo invoicePossessionCostInfos) {
        this.invoicePossessionCostInfos = invoicePossessionCostInfos;
    }

    public List<InvoiceSupplierInfo> getInvoiceSupplierInfos() {
        return invoiceSupplierInfos;
    }

    public void setInvoiceSupplierInfos(List<InvoiceSupplierInfo> invoiceSupplierInfos) {
        this.invoiceSupplierInfos = invoiceSupplierInfos;
    }

    public Long getBusinessBasicInfoId() {
        return businessBasicInfoId;
    }

    public void setBusinessBasicInfoId(Long businessBasicInfoId) {
        this.businessBasicInfoId = businessBasicInfoId;
    }

    public String getTaskId() {
        return taskId;
    }

    public void setTaskId(String taskId) {
        this.taskId = taskId;
    }

    public String getProductBroadInfo() {
        return productBroadInfo;
    }

    public void setProductBroadInfo(String productBroadInfo) {
        this.productBroadInfo = productBroadInfo;
    }
//    public List<PurchaseInvoiceInfo> getPurchaseInvoiceInfos() {
//        return purchaseInvoiceInfos;
//    }
//
//    public void setPurchaseInvoiceInfos(List<PurchaseInvoiceInfo> purchaseInvoiceInfos) {
//        this.purchaseInvoiceInfos = purchaseInvoiceInfos;
//    }

    public List<Long> getPurchaseInvoiceFiles() {
        return purchaseInvoiceFiles;
    }

    public void setPurchaseInvoiceFiles(List<Long> purchaseInvoiceFiles) {
        this.purchaseInvoiceFiles = purchaseInvoiceFiles;
    }

    public List<FileStorage> getInvoiceDetailList() {
        return invoiceDetailList;
    }

    public void setInvoiceDetailList(
        List<FileStorage> invoiceDetailList) {
        this.invoiceDetailList = invoiceDetailList;
    }

    public List<Long> getInvoiceDetailFiles() {
        return invoiceDetailFiles;
    }

    public void setInvoiceDetailFiles(List<Long> invoiceDetailFiles) {
        this.invoiceDetailFiles = invoiceDetailFiles;
    }
}
