package com.ruoyi.system.domain;

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

import com.baomidou.mybatisplus.annotation.TableId;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.ruoyi.common.annotation.Excel;
import com.baomidou.mybatisplus.annotation.FieldFill;
import com.baomidou.mybatisplus.annotation.TableField;
import com.ruoyi.common.core.domain.BaseEntity;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.ToString;
import lombok.experimental.Accessors;

/**
 * 发票对象 fnc_invoice
 *
 * @author jlf
 * @date 2022-11-20
 */
@Data
@Accessors(chain = true)
@ToString(callSuper = true)
@EqualsAndHashCode(callSuper = true)
public class FncInvoice extends BaseEntity {

    /**
     * 发票id
     */
    @TableId
    private Long invoiceId;

    /**
     * 公司id
     */
    @Excel(name = "公司id")
    private Long companyId;

    /**
     * 公司名称
     */
    @Excel(name = "公司名称")
    private String companyName;

    /**
     * 发票类型（0:普通发票，1:增值税专用发票）
     */
    @Excel(name = "发票类型", readConverterExp = "0=:普通发票，1:增值税专用发票")
    private Integer invoiceType;

    /**
     * 发票性质  (0:进项，1:出项）
     */
    @Excel(name = "发票性质  (0:进项，1:出项）")
    private Integer invoiceNature;

    /**
     * 部门名称
     */
    @Excel(name = "部门名称")
    private String depName;

    /**
     * 发票日期
     */
    @JsonFormat(pattern = "yyyy-MM-dd")
    @Excel(name = "发票日期", width = 30, dateFormat = "yyyy-MM-dd")
    private Date invoiceDate;

    /**
     * 购买方名称
     */
    @Excel(name = "购买方名称")
    private String buyName;

    /**
     * 购买方纳税人识别号
     */
    @Excel(name = "购买方纳税人识别号")
    private String buyTaxpayerNo;

    /**
     * 购买方地址
     */
    @Excel(name = "购买方地址")
    private String buyAddress;

    /**
     * 购买方电话
     */
    @Excel(name = "购买方电话")
    private String buyPhone;

    /**
     * 购买方开户行
     */
    @Excel(name = "购买方开户行")
    private String buyBankDeposit;

    /**
     * 购买方银行账号
     */
    @Excel(name = "购买方银行账号")
    private String buyBankAccount;

    /**
     * 申请人
     */
    @Excel(name = "申请人")
    private String applicant;

    /**
     * 审核人
     */
    @Excel(name = "审核人")
    private String checker;

    /**
     * 项目编号/发票号码
     */
    @Excel(name = "项目编号/发票号码")
    private String projectOrInvoiceNo;

    /**
     * 合计金额
     */
    @Excel(name = "合计金额")
    private BigDecimal amountSum;

    /**
     * 合计税额
     */
    @Excel(name = "合计税额")
    private BigDecimal taxSum;

    /**
     * 价税合计（大写）
     */
    @Excel(name = "价税合计", readConverterExp = "大=写")
    private String amountTaxCapital;

    /**
     * 价税合计（小写）
     */
    @Excel(name = "价税合计", readConverterExp = "小=写")
    private BigDecimal amountTaxLower;

    /**
     * 销售方名称
     */
    @Excel(name = "销售方名称")
    private String saleName;

    /**
     * 销售方纳税人识别号
     */
    @Excel(name = "销售方纳税人识别号")
    private String saleTaxpayerNo;

    /**
     * 销售方地址
     */
    @Excel(name = "销售方地址")
    private String saleAddress;

    /**
     * 销售方电话
     */
    @Excel(name = "销售方电话")
    private String salePhone;

    /**
     * 销售方开户行
     */
    @Excel(name = "销售方开户行")
    private String saleBankDeposit;

    /**
     * 销售方银行账号
     */
    @Excel(name = "销售方银行账号")
    private String saleBankAccount;

    /**
     * 备注
     */
    @Excel(name = "备注")
    private String note;

    /**
     * 收款人
     */
    @Excel(name = "收款人")
    private String payee;

    /**
     * 复核人
     */
    @Excel(name = "复核人")
    private String reviewer;

    /**
     * 开票人
     */
    @Excel(name = "开票人")
    private String drawer;

    /**
     * 发票项信息
     */
    @TableField(exist = false)
    private List<FncInvoiceItem> fncInvoiceItemList;

}
