package com.dxhy.api.model.invoice;

import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.Data;

import java.io.Serializable;
import java.math.BigDecimal;
import java.util.Date;
import java.util.List;
import java.util.Map;

/**
 *
 * 发票信息实体
 *
 * @author jiaohongyang
 * @date 2019年3月26日 下午6:02:48
 */
@SuppressWarnings("AlibabaClassNamingShouldBeCamel")
@Data
@TableName("t_dx_record_invoice")
public class TDxRecordInvoice implements Serializable {

    private static final long serialVersionUID = -5394180132470482951L;

    /**
     * id
     */
    private Long id;

    /**
     * 发票类型 01-增值税专用发票 03-机动车销售统一发票 04-增值税普通发票 08-增值税电子专票 10-电子发票 11-卷票 14-通行费发票
     */
    private String invoiceType;
    /**
     * 发票代码
     */
    private String invoiceCode;
    /**
     * invoiceNo
     */
    private String invoiceNo;
    /**
     * 全电发票号码
     */
    private String eleInvoiceNo;
    /**
     * 开票日期
     */
    private Date invoiceDate;
    /**
     * 购方税号
     */
    private String gfTaxNo;
    /**
     * 购方名称
     */
    private String gfName;
    /**
     * 购方地址电话
     */
    private String gfAddressAndPhone;
    /**
     * 购方开户行及账号
     */
    private String gfBankAndNo;
    /**
     * 销方税号
     */
    private String xfTaxNo;
    /**
     * 销方名称
     */
    private String xfName;
    /**
     * 销方地址及电话
     */
    private String xfAddressAndPhone;
    /**
     * 销方开户行及账号
     */
    private String xfBankAndNo;
    /**
     * 销方纳税人类型代码 1：一般纳税人 2：小规模纳税人 3：转登记小规模纳税人 4：辅导期一般纳税人
     */
    private String xfNsrlxdm;
    /**
     * 金额
     */
    private BigDecimal invoiceAmount;
    /**
     * 税额
     */
    private BigDecimal taxAmount;
    /**
     * 价格合计
     */
    private BigDecimal totalAmount;
    /**
     * 抵扣税额
     */
    private BigDecimal dkTaxAmount;
    /**
     * 备注
     */
    private String remark;
    /**
     * 发票状态 0-正常  1-失控 2-作废  3-红冲 4-异常 7部分冲红 8全额红冲 80-红字发票待确认
     */
    private String invoiceStatus;
    /**
     * 是否已获取数电xml文件：0-未获取，1-已获取
     */
    private String xmlFlag;
    /**
     * 发票状态修改时间
     */
    private Date statusUpdateDate;
    /**
     * 发票状态最后修改时间
     */
    private Date lastUpdateDate;
    /**
     * 认证时间
     */
    private Date rzhDate;
    /**
     * 签收时间
     */
    private Date qsDate;
    /**
     * 最晚认证归属期 yyyyMM
     */
    private String rzhBelongDateLate;
    /**
     * 实际认证归属期 yyyyMM
     */
    private String rzhBelongDate;
    /**
     * 认证确认时间
     */
    private Date confirmDate;
    /**
     * 认证方式 1-勾选认证 2-扫描认证
     */
    private String rzhType;
    /**
     * 是否认证 0-未认证 1-已认证抵扣 2-已认证不抵扣
     */
    private String rzhYesorno;
    /**
     * 提交认证操作人账号
     */
    private String gxUserAccount;
    /**
     * 提交认证操作人
     */
    private String gxUserName;
    /**
     * 底账来源  0-采集 1-查验  2-票据采集 4-大企业归集
     */
    private String sourceSystem;
    /**
     * 是否有效 1-有效 0-无效
     */
    private String valid;
    /**
     * 发票代码+发票号码    唯一索引 防重复
     */
    private String uuid;
    /**
     * 采集时间
     */
    private Date createDate;
    /**
     * 自动查验时间使用
     */
    private Date checkDate;
    /**
     * 勾选时间
     */
    private Date gxDate;
    /**
     * 认证结果回传信息
     */
    private String rzhBackMsg;
    /**
     * 当前税款所属期
     */
    private String dqskssq;
    /**
     * 当前税款所属期勾选截止日
     */
    private String gxjzr;
    /**
     * 当前税款所属期可勾选发票开票日期范围起
     */
    private String gxfwq;
    /**
     * 当前税款所属期可勾选发票开票日期范围止
     */
    private String gxfwz;
    /**
     * 是否已勾选
     */
    private String sfygx;
    /**
     * 是否存入明细 0 无明细 1 有明细
     */
    private String detailYesorno;
    /**
     * 勾选方式(0-手工勾选 1-扫码勾选 2-导入勾选 3- 智能勾选 4-手工认证 5-扫码认证 6-导入认证)
     */
    private String gxType;
    /**
     * 认证处理状态  0-未认证 1-已勾选未确认，2已确认 3 已发送认证 4 认证成功 5 认证失败 6已撤销认证
     */
    private String authStatus;
    /**
     * 发送认证时间
     */
    private Date sendDate;
    /**
     * 认证类型(1-抵扣 2-退税 3-代办退税 4-不抵扣 5-撤销抵扣 6-撤销不抵扣）
     */
    private String rzlx;
    /**
     * 是否代办退税(0：否 1：是)
     */
    private String sfdbts;
    /**
     * 签收方式（0-扫码签收 1-扫描仪签收 2-app签收 3-导入签收 4-手工签收5-pdf上传签收
     */
    private String qsType;
    /**
     * 签收结果（0-未签收 1-已签收）
     */
    private String qsStatus;
    /**
     * 校验码
     */
    private String checkCode;
    /**
     * 通行费标志(Y-可抵扣通行费，N-不可抵扣通行费)
     */
    private String txfbz;
    /**
     * 零税率标志 (空:非零税率，1:税率栏位显示“免税”，2:税率栏位显示“不征收”，3:零税率
     */
    private String lslbz;
    /**
     * 转出状态 0-未转出   1-全部转出  2-部分转出
     */
    private String outStatus;
    /**
     * 转出金额
     */
    private Long outInvoiceAmout;
    /**
     * 转出税额
     */
    private Long outTaxAmount;
    /**
     * 转出原因1-免税项目用 ；2-集体福利,个人消费；3-非正常损失；4-简易计税方法征税项目用；5-免抵退税办法不得抵扣的进项税额；6-纳税检查调减进项税额；7-红字专用发票通知单注明的进项税额；8-上期留抵税额抵减欠税
     */
    private String outReason;
    /**
     * 转出备注
     */
    private String outRemark;
    /**
     * 转出日期
     */
    private Date outDate;
    /**
     * 转出税款所属期
     */
    private String outBelongDate;
    /**
     * 转出人
     */
    private String outBy;
    /**
     * 确认人
     */
    private String confirmUser;
    /**
     * 机器编号
     */
    private String machinecode;
    /**
     * 部门id
     */
    private String deptId;
    /**
     * 部门名称
     */
    private String deptName;
    /**
     * 结算单号
     */
    private String settlementNo;
    /**
     * 是否结算（0未结算1已结算）
     */
    private String settlementStatus;
    /**
     * 结算单来源
     */
    private String settleSource;
    /**
     * 付款状态（0-付款成功 1-付款失败）
     */
    private String paymentStatus;
    /**
     * 付款日期
     */
    private String paymentDate;
    /**
     * 凭证号
     */
    private String voucherNumber;
    /**
     * 付款金额
     */
    private String paymentSum;
    /**
     * 签收人
     */
    private String qsName;
    /**
     * 逾期申请结果
     */
    private String yqsqMsg;
    /**
     * 逾期申请标志  0-未申请  1--已申请 2发送申请，4申请成功，5申请失败 默认为空
     */
    private String yqsqStatus;
    /**
     * 管理状态  0正常1异常 2疑似非正常
     */
    private String glzt;
    /**
     *信息来源  0扫描认证  1系统推送 2出口转内销 3异常凭证转入  4未勾选数据初始化
     */
    private String xxly;
    /**
     * 逾期可勾选标志   0默认值，1可勾选逾期
     */
    private String yqkgxbz;
    /**
     * 异常类型  0发票状态异常1申报用途变更（抵扣变代办退税）2管理状态异常、注：发票状态为正常时为空
     */
    private String yclx;
    /**
     * 逾期审核状态  0--未审核  1--已审核  默认为空
     */
    private String yqshzt;
    /**
     * 签收人
     */
    private String userAccount;
    /**
     * 购方税号
     */
    private String newGfTaxno;
    /**
     * 撤销认证处理状态0未撤销，1申请撤销，2发送撤销，4撤销成功，5撤销失败
     */
    private String cxrzStatus;
    /**
     * 撤销认证操作时间
     */
    private Date cxrzDate;
    /**
     * 集团编码
     */
    private String company;
    /**
     * 逾期申请属期
     */
    private String yqCurrentPeriod;
    /**
     * 0-默认值 1-认证抵扣 2-认证不抵扣 3退税
     */
    private String bdkStatus;
    /**
     * 不抵扣操作时间
     */
    private Date bdkDate;
    /**
     * 撤销认证申请属期
     */
    private String cxrzCurrentPeriod;
    /**
     * 不抵扣申请属期
     */
    private String bdkCurrentPeriod;
    /**
     * 撤销不抵扣处理状态0未申请，1申请，2发送申请，4申请成功，5申请失败
     */
    private String cxbdkStatus;
    /**
     * 撤销不抵扣操作时间
     */
    private Date cxbdkDate;
    /**
     * 逾期申请时间
     */
    private Date yqsqDate;
    /**
     * 逾期审核时间
     */
    private Date yqshDate;
    /**
     * 供应商编码
     */
    private String vendorId;
    /**
     * 请求id
     */
    private String requestId;
    /**
     * 认证同步状态0未同步1已同步
     */
    private String sendRzStatus;
    /**
     * 认证同步时间
     */
    private Date sendRzDate;
    /**
     * 签收同步状态0未同步1已同步
     */
    private String sendQsStatus;
    /**
     * 签收同步时间
     */
    private Date sendQsDate;
    /**
     * 匹配状态，发票/结算单匹配状态（0-自动  1-手工  2-强制  3-不通过  4-不需匹配  5-取消 6-待审核 7-拒绝匹配 99-初始）
     */
    private String matchstatus;
    /**
     * 匹配关联号
     */
    private String matchNo;
    /**
     * 匹配日期
     */
    private Date matchDate;
    /**
     * 匹配错误信息
     */
    private String matchErrinfo;
    /**
     * 匹配用户
     */
    private String matchUser;
    /**
     * 匹配金额
     */
    private Long matchCost;
    /**
     * 匹配税额
     */
    private Long matchVat;
    /**
     * 供应商编码
     */
    private String venderNo;
    /**
     * 扫描匹配状态 0--未匹配  1--匹配成功  2--匹配失败
     */
    private String scanMatchStatus;
    /**
     * 扫描匹配时间
     */
    private Date scanMatchDate;
    /**
     * 订单号
     */
    private String orderNo;
    /**
     * 是否可认证，0未认证，1可认证
     */
    private String isAuth;
    /**
     * 出口转内销标志默认0否，1是
     */
    private String exportMark;
    /**
     * 扫描id
     */
    private String scanId;
    /**
     * 票池采集时间
     */
    private Date collectDate;
    /**
     * 票池采集来源 0-进项采集 1-票据采集  4大企业归集
     */
    private String collectFrom;
    /**
     * 票池采集状态 0-未采集 1-已采集
     */
    private String collectStatus;
    /**
     * 票池入池状态 0-成功 1-失败
     */
    private String poolStatus;
    /**
     * 入池失败原因
     */
    private String inPoolReason;
    /**
     * 凭证号
     */
    private String voucherNo;
    /**
     * 业务单据号
     */
    private String documentNumber;
    /**
     * 是否末次摊销 0-否，1-是
     */
    private String amortizeStatus;
    /**
     * 摊销金额
     */
    private String amortizeAmount;
    /**
     * 剩余摊销金额
     */
    private String remainAmortizeAmount;
    /**
     * 摊销业务单据编号
     */
    private String amortizeDocumentNumber;
    /**
     * 收款人
     */
    private String payee;
    /**
     * 复核人
     */
    private String reviewer;
    /**
     * 开票人
     */
    private String printor;
    /**
     * 是否有销货清单 0 否/1 是, 默认为 0
     */
    private String isSaleList;
    /**
     * 红蓝票标识 0 蓝/1 红
     */
    private String isRed;
    /**
     * 红票对应的蓝票代码
     */
    private String blueCode;
    /**
     * 红票对应的蓝票号码
     */
    private String blueNo;
    /**
     * 入账日期
     */
    private Date inAccountDate;
    /**
     * 是否入账
     */
    private String inAccountStatus;
    /**
     * 摊销人
     */
    private String amortizeUser;
    /**
     * 供应商违规标志0否，1是
     */
    private String illegalSupplier;
    /**
     * 密文
     */
    private String mw;
    /**
     * 机打号码 -卷票字段
     */
    private String jdhm;
    /**
     * 代开税号
     */
    private String dkTaxno;
    /**
     * 代开名称
     */
    private String dkTaxname;
    /**
     * 代开状态 0-非代开 1-代开
     */
    private String dkStatus;
    /**
     * 开票人
     */
    private String invoicer;
    /**
     * 报销单号（旧：关联业务单据）
     */
    private String relatedBusinessDocuments;
    /**
     * 普票二次查验状态 0-未查验 1-查验成功 2-查验失败 3-查验中
     */
    private String checkSign;
    /**
     * 触发企业管控规则 0-否 1-是
     */
    private String illegalEnterprise;
    /**
     * 发票来源 0-税控发票 1-全电发票
     */
    private String invoiceSource;
    /**
     * bdk_message是5时，保存具体原因
     */
    private String bdkYy;
    /**
     * 不抵扣类型，保存key。 1-用于非应税项目2-用于免税项目3-用于集体福利或者个人消费4-遭受非正常损失5-其他
     */
    private String bdkMessage;
    /**
     * 通道来源：0：大企业采集，1：大企业发票下载，2：数据平台，3：乐企采集，4：大企业增值税发票归集
     */
    private String tdly;
    /**
     * 乐企红字锁定标识Y-锁定；N-未锁定
     */
    private String lqHzsdbs;
    /**
     * 乐企入账状态：01-未入账 02-已入账 03-已入账撤销 04-入账中 05-撤销中
     */
    private String lqRzzt;
    /**
     * 乐企成品油异常标识：9-正常 1-成品油单价异常 2-成品油超库存异常
     */
    private String lqCpyycbs;
    /**
     * 乐企出口退税类代码：01-增值税专用发票可用于代办退税标签（仅用于代办退税）
     */
    private String lqCktsldm;
    /**
     * 乐企出口转内销证明编号
     */
    private String lqCkznxzmbh;
    /**
     * 乐企发票用途：0-未使用 1-已申请抵扣 2-已申请退税 3-已申请代办退税 4-已勾选不抵扣（历史数据） 5-已申请代办退税（历史数据） 6-已申请不抵扣 7-内销转出口 8-出口转内销 9-准予退税 10-不予退税 11-冬奥退税 12-农产品加计扣除
     */
    private String lqFpyt;
    /**
     * 乐企特殊票种：02农产品收购；03稀土矿产品发票；04稀土产成品发票；05：石脑油； 08成品油发票；06通行费（可抵扣）；07通行费（不可抵扣）
     */
    private String lqTspz;
    /**
     * 乐企特定要素类型代码：空：非特定要素 01：成品油发票 02：稀土发票 03：建筑服务发票 04：货物运输服务发票 05：不动产销售服务发票 06：不动产租赁服务发票 07：代收车船税 08：通行费 09：旅客运输服务发票 10：医疗服务（住院）发票 11：医疗服务（门诊）发票 12：自产农产品销售发票 13 拖拉机和联合收割机发票 14：机动车 15：二手车 16：农产品收购发票 17：光伏收购发票 18：卷烟发票
     */
    @TableField("lq_tdyslxDm")
    private String lqTdyslxDm;
    /**
     * 乐企增值税优惠用途（农产品加计扣除）  0：未使用 1：全部项目加计 2：全部项目不加计 3：部分项目加计
     */
    private String lqZzsyhyt;
    /**
     * 乐企消费税用途  00：未勾选库存 01：已勾选库存
     */
    private String lqXfsyt;

    /**
     * 机动车异常标识
     0：无风险
     1：低风险
     2：中风险
     3：高风险
     **/
    private String lqJdcycbs;
    /**
     * 业务类型：1通行费，2农产品，3，待确认农产品发票
     */
    private String ywlx;
    //columns END

    @TableField(exist = false)
    private String returnDate;

    /**
     * 特定要素-主信息扩展字段
     **/
    @TableField(exist = false)
    private Map<String,String> invoiceExt;
    /**
     * 特定要素-明细扩展字段
     **/
    @TableField(exist = false)
    private List<Map<String,String>> detailExt;

    /**
     * 附件信息
     **/
    @TableField(exist = false)
    private List<TDxRecordInvoiceFileModel> fileList;

    /**
     * 明细-铁路明细
     * 说明：此票只返回一条，且不保存在明细表中。保存到t_dx_tdys_tldzkp中，和底账表uuid对应
     **/
    @TableField(exist = false)
    private List<InvoiceTlkpInfoItem> detailList;

    /**
     * 数电票（航空运输电子客票行程单）=扩展主信息
     **/
    @TableField(exist = false)
    private TDxRecordInvoiceTdysMhxcd tdysMhxcd;

    /**
     * 数电票（航空运输电子客票行程单）=扩展主信息-明细
     **/
    @TableField(exist = false)
    private List<TDxRecordInvoiceTdysMhxcdItem> tdysMhxcdDetailList;

}
