package com.ruoyi.hywz.entity;

import com.alibaba.excel.annotation.ExcelProperty;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.fasterxml.jackson.annotation.JsonFormat;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;

import java.io.Serializable;
import java.util.Date;
import java.util.List;


/**
 * <p>
 * 发票表
 * </p>
 *
 * @author mybatisplus-generator
 * @date 2024-04-08 14:25:45
 */
@Data
public class AdsMatHyxtInvoiceD implements Serializable {

    private static final long serialVersionUID = 1L;

    @TableField(exist = false)
    private List<AdsMatHyxtInvoiceD> ids;

    /**
     * 主键ID
     */
    @TableId(value = "id", type = IdType.ASSIGN_UUID)
    @ApiModelProperty(value = "主键ID")
    private String id;

    /**
     * 批次号
     */
    @ApiModelProperty(value = "批次号", hidden = true)
    private String batchNo;

    /**
     * 单据id
     */
    @ApiModelProperty(value = "单据id", hidden = true)
    private String applyId;

    /**
     * 项目编号
     */
    @ApiModelProperty(value = "项目编号")
    private String projectNo;

    /**
     * 项目名称
     */
    @ApiModelProperty(value = "项目名称")
    private String projectName;

    /**
     * 产业项目编码
     */
    @ApiModelProperty(value = "产业项目编码")
    private String ynProjectNo;

    /**
     * 产业项目名称
     */
    @ApiModelProperty(value = "产业项目名称")
    private String ynProjectName;

    /**
     * 销售方
     */
    @ApiModelProperty(value = "销售方")
    private String seller;

    /**
     * 购买方
     */
    @ApiModelProperty(value = "购买方")
    private String buyer;

    /**
     * 费用类型
     */
    @ApiModelProperty(value = "费用类型")
    private String costType;

    /**
     * 合同金额
     */
    @ApiModelProperty(value = "合同金额")
    private String contractAmount;

    /**
     * 可用预算金额
     */
    @ApiModelProperty(value = "可用预算金额")
    private String validBudgetAmount;

    /**
     * 申请单分类【项目类 非项目类】
     */
    @ApiModelProperty(value = "申请单分类【项目类 非项目类】")
    private String applyType;

    /**
     * 金额（含税）
     */
    @ApiModelProperty(value = "本次开票金额（含税）")
    private String taxAmount;

    /**
     * 税率
     */
    @ApiModelProperty(value = "税率")
    private String taxRate;

    /**
     * 收票人（业务人员）
     */
    @ApiModelProperty(value = "收票人（业务人员）")
    private String taker;

    /**
     * 收票单位（部门）
     */
    @ApiModelProperty(value = "收票单位（部门）")
    private String takerUnit;

    /**
     * 联系电话
     */
    @ApiModelProperty(value = "联系电话")
    private String telephone;

    /**
     * 申请日期
     */
    @ApiModelProperty(value = "申请日期")
//    @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
    private String applyDate;

    /**
     * 发票代码
     */
    @ApiModelProperty(value = "发票代码")
    private String invoiceCode;

    /**
     * 开票日期
     */
    @ApiModelProperty(value = "开票日期")
    @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
    private Date makeInvoiceDate;

    /**
     * 主业入账凭证号
     */
    @ApiModelProperty(value = "主业入账凭证号")
    private String voucherCode;

    /**
     * 产业入账凭证号
     */
    @ApiModelProperty(value = "产业入账凭证号")
    private String ynVoucherCode;

    /**
     * 是否生成入账凭证号【0未生成 1已生成】
     */
    @ApiModelProperty(value = "是否生成入账凭证号【0未生成 1已生成】")
    private Integer isGenerateCode;

    /**
     * 流程状态【0未提交 1已申请 2已审核 3已开票 4已报销】
     */
    @ApiModelProperty(value = "流程状态【0未提交 1已申请 2已审核 3已开票 4已报销】", hidden = true)
    private Integer status;

    /**
     * 稽核结果【0默认值 1通过 2不通过】
     */
    @ApiModelProperty(value = "稽核结果【0默认值 1通过 2不通过】", hidden = true)
    private Integer budgetCheckStatus;

    /**
     * 是否上传发票【0未上传 1已上传】
     */
    @ApiModelProperty(value = "是否上传发票【0未上传 1已上传】")
    private Integer isUploadInvoice;

    /**
     * 创建用户id
     */
    @ApiModelProperty(value = "创建用户id", hidden = true)
    private Long createUserId;

    /**
     * 创建用户账号
     */
    @ApiModelProperty(value = "创建用户账号", hidden = true)
    private String createUser;

    /**
     * 创建用户昵称
     */
    @ApiModelProperty(value = "创建用户昵称", hidden = true)
    private String createUserName;

    /**
     * 创建时间
     */
    @ApiModelProperty(value = "创建时间", hidden = true)
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
    private Date createTime;

    /**
     * 更新时间
     */
    @ApiModelProperty(value = "更新时间", hidden = true)
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
    private Date updateTime;

    /**
     * 是否删除【0未删除 1已删除】
     */
    @ApiModelProperty(value = "是否删除【0未删除 1已删除】", hidden = true)
    private Integer isDeleted;

    @ApiModelProperty("附件")
    @TableField(exist = false)
    private List<AdsMatHyxtInvoiceFileD> fileList;

    /**
     * 序号
     */
    @ApiModelProperty("序号")
    @TableField(exist = false)
    private Integer idx;

    @TableField(exist = false)
    private String businessId;

}
