package com.tofly.feesapi.dzfp.entity;

import com.baomidou.mybatisplus.annotation.*;
import com.baomidou.mybatisplus.extension.activerecord.Model;
import com.fasterxml.jackson.annotation.JsonFormat;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.EqualsAndHashCode;
import org.springframework.format.annotation.DateTimeFormat;

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


/**
 * 电子发票汇总表
 */
@Data
@EqualsAndHashCode(callSuper = true)
@TableName(value = "EI_FPKJ_REQUEST", resultMap = "eiFpkjRequestMap")
@ApiModel
public class EiFpkjRequest extends Model<EiFpkjRequest> {
    private static final long serialVersionUID = 1L;

    /**
     * 流水编号
     */
    @TableId(value = "LSBH", type = IdType.AUTO)
    @ApiModelProperty(value = "流水编号")
    private String lsbh;

    /**
     * 用户所属片区
     */
    @ApiModelProperty(value = "用户所属片区")
    private String yhSspq;
    /**
     * 所属公司
     */
    @ApiModelProperty(value = "所属公司")
    private String ssgs;

    /**
     * 发票是否合并开票1是0否
     */
    @ApiModelProperty(value = "发票是否合并开票1是0否")
    private String fpSfHb;
    /**
     * 合并开票类型，1多笔欠费，2多用户欠费
     */
    @ApiModelProperty(value = "合并开票类型，1多笔欠费，2多用户欠费")
    private String fpHbLx;
    /**
     * 购方银行开户行
     */
    @ApiModelProperty(value = "购方银行开户行")
    private String buyerbank;
    /**
     * 销方银行开户行
     */
    @ApiModelProperty(value = "销方银行开户行")
    private String salerbank;
    /**
     * 诺诺网发票流水号（用于查询）
     */
    @ApiModelProperty(value = "诺诺网发票流水号（用于查询）")
    private String nnwFplsh;

    /**
     * 用户编号
     */
    @ApiModelProperty(value = "用户编号")
    private String yhbh;
    /**
     * 抄表卡号
     */
    @ApiModelProperty(value = "抄表卡号")
    private String cbkh;
    /**
     * 财务日期
     */
    @ApiModelProperty(value = "财务日期")
    private String cwrq;
    /**
     * 收费ID
     */
    @ApiModelProperty(value = "收费ID")
    private String sfid;
    /**
     * 收费金额
     */
    @ApiModelProperty(value = "收费金额")
    private BigDecimal ssje;
    /**
     * 收费类型
     */
    @ApiModelProperty(value = "收费类型")
    private String sflx;
    /**
     * 收费人员
     */
    @ApiModelProperty(value = "收费人员")
    private String sfry;
    /**
     * 收费日期
     */
    @ApiModelProperty(value = "收费日期")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private Date sfrq;
    /**
     * 购方名称
     */
    @ApiModelProperty(value = "购方名称")
    private String buyername;
    /**
     * 购方税号
     */
    @ApiModelProperty(value = "购方税号")
    private String buyertaxnum;
    /**
     * 购方电话
     */
    @ApiModelProperty(value = "购方电话")
    private String buyertel;
    /**
     * 购方地址
     */
    @ApiModelProperty(value = "购方地址")
    private String buyeraddress;
    /**
     * 购方银行账号
     */
    @ApiModelProperty(value = "购方银行账号")
    private String buyeraccount;
    /**
     * 销方税号
     */
    @ApiModelProperty(value = "销方税号")
    private String salertaxnum;
    /**
     * 销方电话
     */
    @ApiModelProperty(value = "销方电话")
    private String salertel;
    /**
     * 销方地址
     */
    @ApiModelProperty(value = "销方地址")
    private String saleraddress;
    /**
     * 销方银行账号
     */
    @ApiModelProperty(value = "销方银行账号")
    private String saleraccount;
    /**
     * 订单号（每个企业唯一）
     */
    @ApiModelProperty(value = "订单号（每个企业唯一）")
    private String orderno;
    /**
     * 订单时间
     */
    @ApiModelProperty(value = "订单时间")
    private String invoicedate;
    /**
     * 冲红时填写的对应蓝票发票代码（红票必填 10位或12 位， 11位的时候请左补 0）
     */
    @ApiModelProperty(value = "冲红时填写的对应蓝票发票代码（红票必填 10位或12 位， 11位的时候请左补 0）")
    private String invoicecode;
    /**
     * 冲红时填写的对应蓝票发票号码（红票必填，不满8位请左补0）
     */
    @ApiModelProperty(value = "冲红时填写的对应蓝票发票号码（红票必填，不满8位请左补0）")
    private String invoicenum;
    /**
     * 冲红原因：1:销货退回;2:开票有误;3:服务中止;4:发生销售折让
     */
    @ApiModelProperty(value = "冲红原因：1:销货退回;2:开票有误;3:服务中止;4:发生销售折让")
    private Integer redreason;
    /**
     * 红字信息表编号.专票冲红时此项必填，且必须在备注中注明“开具红字增值税专用
     */
    @ApiModelProperty(value = "红字信息表编号.专票冲红时此项必填，且必须在备注中注明“开具红字增值税专用")
    private String billinfono;
    /**
     * 部门门店id（诺诺系统中的id）
     */
    @ApiModelProperty(value = "部门门店id（诺诺系统中的id）")
    private String departmentid;
    /**
     * 开票员id（诺诺系统中的id）
     */
    @ApiModelProperty(value = "开票员id（诺诺系统中的id）")
    private String clerkid;
    /**
     * 冲红时，在备注中注明
     */
    @ApiModelProperty(value = "冲红时，在备注中注明")
    private String remark;
    /**
     * 不含税金额
     */
    @ApiModelProperty(value = "不含税金额 ")
    private BigDecimal extaxamount;
    /**
     * 合计税额
     */
    @ApiModelProperty(value = "合计税额")
    private BigDecimal taxamount;
    /**
     * 价税合计
     */
    @ApiModelProperty(value = "价税合计 ")
    private BigDecimal orderamount;
    /**
     * 复核人
     */
    @ApiModelProperty(value = "复核人")
    private String checker;
    /**
     * 收款人
     */
    @ApiModelProperty(value = "收款人")
    private String payee;
    /**
     * 开票员
     */
    @ApiModelProperty(value = "开票员")
    private String clerk;
    /**
     * 清单标志：非清单:0；清单:1，默认:0，电票固定为0
     */
    @ApiModelProperty(value = "清单标志：非清单:0；清单:1，默认:0，电票固定为0")
    private String listflag;
    /**
     * 清单项目名称：对应发票票面项目名称（listFlag为1时，必填，默认为“详见销货清单”）
     */
    @ApiModelProperty(value = "清单项目名称：对应发票票面项目名称（listFlag为1时，必填，默认为“详见销货清单”）")
    private String listname;
    /**
     * 推送方式：-1,不推送;0,邮箱;1,手机（默认）;2,邮箱、手机
     */
    @ApiModelProperty(value = "推送方式：-1,不推送;0,邮箱;1,手机（默认）;2,邮箱、手机")
    private Integer pushmode;
    /**
     * 购方手机（pushMode为1或2时，此项为必填，同时受企业资质是否必填控制）
     */
    @ApiModelProperty(value = "购方手机（pushMode为1或2时，此项为必填，同时受企业资质是否必填控制）")
    private String buyerphone;
    /**
     * 推送邮箱（pushMode为0或2时，此项为必填，同时受企业资质是否必填控制）
     */
    @ApiModelProperty(value = "推送邮箱（pushMode为0或2时，此项为必填，同时受企业资质是否必填控制）")
    private String email;
    /**
     * 开票类型：1:蓝票;2:红票 （全电发票暂不支持红票）
     */
    @ApiModelProperty(value = "开票类型：1:蓝票;2:红票 （全电发票暂不支持红票）")
    private String invoicetype;
    /**
     * 发票种类：p,普通发票(电票)(默认);c,普通发票(纸票);s,专用发票;e,收购发票(电票);f,收购发票(纸质);r,普通发票(卷式);b,增值税电子专用发票;j,机动车销售统一发票;sj,
     * 数电机动车发票(纸质);u,二手车销售统一发票;su,数电二手车发票(纸质);bs:电子发票(增值税专用发票)-即数电专票(电子),pc:电子发票(普通发票)-即数电普票(电子),
     * es:数电纸质发票(增值税专用发票)-即数电专票(纸质);ec:数电纸质发票(普通发票)-即数电普票(纸质)数电纸票类型(数电纸票时
     */
    @ApiModelProperty(value = "发票种类：p,普通发票(电票)(默认);c,普通发票(纸票);s,专用发票;e,收购发票(电票);f,收购发票(纸质);r,普通发票(卷式);b,增值税电子专用发票")
    private String invoiceline;
    /**
     * 特定要素：0普通发票（默认） 、 1成品油、 31建安发票 、 32房地产销售发票
     */
    @ApiModelProperty(value = "特定要素：0普通发票（默认） 、 1成品油、 31建安发票 、 32房地产销售发票")
    private String specificfactor;
    /**
     * 代开标志：0非代开;1代开
     */
    @ApiModelProperty(value = "代开标志：0非代开;1代开")
    private String proxyinvoiceflag;
    /**
     * 回传发票信息地址（开票完成、开票失败）
     */
    @ApiModelProperty(value = "回传发票信息地址（开票完成、开票失败）")
    private String callbackurl;
    /**
     * 分机号（只能为空或者数字）
     */
    @ApiModelProperty(value = "分机号（只能为空或者数字）")
    private String extensionnumber;
    /**
     * 终端号（开票终端号，只能 为空或数字）
     */
    @ApiModelProperty(value = "终端号（开票终端号，只能 为空或数字）")
    private String terminalnumber;
    /**
     * 机器编号（12位盘号）
     */
    @ApiModelProperty(value = "机器编号（12位盘号）")
    private String machinecode;
    /**
     * 是否机动车类专票 0-否 1-是
     */
    @ApiModelProperty(value = "是否机动车类专票 0-否 1-是")
    private Integer vehicleflag;
    /**
     * 是否隐藏编码表版本号 0-否 1-是（默认0
     */
    @ApiModelProperty(value = "是否隐藏编码表版本号 0-否 1-是（默认0")
    private Integer hiddenbmbbbh;
    /**
     * 发票代码
     */
    @ApiModelProperty(value = "发票代码")
    private String nextinvoicecode;
    /**
     * 发票号码
     */
    @ApiModelProperty(value = "发票号码")
    private String nextinvoicenum;
    /**
     * 购买方经办人姓名
     */
    @ApiModelProperty(value = "购买方经办人姓名")
    private String buyermanagername;
    /**
     * 经办人证件类型
     */
    @ApiModelProperty(value = "经办人证件类型")
    private String managercardtype;
    /**
     * 经办人证件号码
     */
    @ApiModelProperty(value = "经办人证件号码")
    private String managercardno;
    /**
     * 发票流水号  开票返回参数
     */
    @ApiModelProperty(value = "发票流水号  开票返回参数")
    private String invoiceserialnum;
    /**
     * 开票时间
     */
    @ApiModelProperty(value = "开票时间")
    private String invoicetime;
    /**
     * 发票状态： 2 :开票完成（ 最终状 态），其他状态分别为: 20:开票中; 21:开票成功签章中;22:开票失败;24: 开票成功签章失败;3:发票已作废 31: 发票作废中 备注：22、24状态时，无需再查询，请确认开票失败原因以及签章失败原因； 注：请以该状态码区分发票状态
     */
    @ApiModelProperty(value = "发票状态： 2 :开票完成（ 最终状 态），其他状态分别为: 20:开票中; 21:开票成功签章中;22:开票失败;24: 开票成功签章失败;3:发票已作废 31: 发票作废中 备注：22、24状态时，无需再查询，请确认开票失败原因以及签章失败原因； 注：请以该状态码区分发票状态")
    private String status;
    /**
     * 发票状态描述
     */
    @ApiModelProperty(value = "发票状态描述")
    private String statusmsg;
    /**
     * 失败原因
     */
    @ApiModelProperty(value = "失败原因")
    private String failcause;
    /**
     * 发票pdf地址（若同时返回了ofdUrl与pdfUrl，则pdf文件不能做为原始凭证，请用ofd文件做为原始凭证）
     */
    @ApiModelProperty(value = "发票pdf地址（若同时返回了ofdUrl与pdfUrl，则pdf文件不能做为原始凭证，请用ofd文件做为原始凭证）")
    private String pdfurl;
    /**
     * $column.comments
     */
    @ApiModelProperty(value = "$column.comments")
    private String imgurls;
    /**
     * 发票图片地址
     */
    @ApiModelProperty(value = "发票图片地址")
    private String pictureurl;
    /**
     * 校验码
     */
    @ApiModelProperty(value = "校验码")
    private String checkcode;
    /**
     * 二维码
     */
    @ApiModelProperty(value = "二维码")
    private String qrcode;
    /**
     * 发票密文（全电发票时为空）
     */
    @ApiModelProperty(value = "发票密文（全电发票时为空）")
    private String ciphertext;
    /**
     * 含底图纸票pdf地址
     */
    @ApiModelProperty(value = "含底图纸票pdf地址")
    private String paperpdfur;
    /**
     * 发票ofd地址（公共服务平台签章时返回）
     */
    @ApiModelProperty(value = "发票ofd地址（公共服务平台签章时返回）")
    private String ofdurl;

    /**
     * $column.comments
     */
    @ApiModelProperty(value = "$column.comments")
    private String clLock;

    /**
     * $column.comments
     */
    @ApiModelProperty(value = "$column.comments")
    private String clCljg;

    /**
     * $column.comments
     */
    @ApiModelProperty(value = "$column.comments")
    private String clClry;

    /**
     * $column.comments
     */
    @ApiModelProperty(value = "$column.comments")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private Date clClsj;
    /**
     * $column.comments
     */
    @ApiModelProperty(value = "$column.comments")
    private String clRecode;
    /**
     * $column.comments
     */
    @ApiModelProperty(value = "$column.comments")
    private String clRemessage;
    /**
     * 作废标志，0正常，1冲红，2被冲红
     */
    @ApiModelProperty(value = "作废标志，0正常，1冲红，2被冲红")
    private String zfZfbz;
    /**
     * $column.comments
     */
    @ApiModelProperty(value = "$column.comments")
    private String jfPdf;
    /**
     * $column.comments
     */
    @ApiModelProperty(value = "$column.comments")
    private String jfPdffilename;
    /**
     * $column.comments
     */
    @ApiModelProperty(value = "$column.comments")
    private String jfJsurl;
    /**
     * 交付标志，0未交付，1已交付
     */
    @ApiModelProperty(value = "交付标志，0未交付，1已交付")
    private String jfYxbz;
    /**
     * 通用编码表
     */
    @ApiModelProperty(value = "用户类型，通用编码表：47")
    private Integer yhlx;
    /**
     * 收费流水编号，关于拆分收费明细
     */
    @ApiModelProperty(value = "收费流水编号，关于拆分收费明细")
    private String sflsbh;
    /**
     * 重新交付 1待重新交付，2已重新交付
     */
    @ApiModelProperty(value = "重新交付 1待重新交付，2已重新交付")
    private String cxJfbz;
    /**
     * 发票重开 1待重开，2已重开
     */
    @ApiModelProperty(value = "发票重开 1待重开，2已重开")
    private String fpCkbz;
    /**
     * 发票是否开票
     */
    @ApiModelProperty(value = "发票是否开票")
    private String fpSfkp;
    /**
     * 发票开票申请次数，申请次数大于5次作为异常
     */
    @ApiModelProperty(value = "发票开票申请次数，申请次数大于5次作为异常")
    private BigDecimal fpSqcs;
    /**
     * 报装工程编号
     */
    @ApiModelProperty(value = "报装工程编号")
    private String bzGcbh;
    /**
     * 红字确认单状态
     */
    @ApiModelProperty(value = "红字确认单状态")
    private String billstatus;
    /**
     * 开票业务类型:0为合并开票、1为水费票、2为污水费票、3为水资源税票
     */
    @ApiModelProperty(value = "开票业务类型:0为合并开票、1为水费票、2为污水费票、3为水资源税票")
    private String kpywlx;

    /**
     * 是否是预开发票（0否1是）
     */
    @ApiModelProperty(value = "是否是预开发票（0否1是）")
    private String isykfp;

    /**
     * 报装安装详细地址
     */
    @ApiModelProperty(value = "报装地址")
    private String bzAddr;

    /**
     * 大小户
     */
    @ApiModelProperty(value = "大小户（1为大户0为小户）")
    private String dxh;
}
