package cn.superdesk.uniorder.dao.entity.thirdpart.szhtxx.electronicInvoice;

import io.swagger.annotations.ApiModelProperty;
import lombok.*;

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

/**
 * @Description:
 * @Author: linjinyu
 * @CreateDate: 2022-03-23 12:02:59
 * @UpdateUser: linjinyu
 * @UpdateDate: 2022-03-23 12:03:00
 * @UpdateRemark: 修改内容
 * @Version: 1.0
 */
@NoArgsConstructor
@AllArgsConstructor
@Builder(toBuilder = true)
@Data
@ToString
public class SzhtxxElectronicInvoiceFptxx implements Serializable {
    /**
     * Id
     */
    @ApiModelProperty(value = "Id")
    private Long id;

    /**
     * 发票请求唯一流水号^_^每张发票的发票请求唯一流水号无重复,由企业定义.限制固定20位.流水号包含公司简称(如:华为终端:HWZD************)
     */
    @ApiModelProperty(value = "发票请求唯一流水号^_^每张发票的发票请求唯一流水号无重复,由企业定义.限制固定20位.流水号包含公司简称(如:华为终端:HWZD************)")
    private String fpqqlsh;

    /**
     * 主要开票项目^_^主要开票商品,或者第一条商品,取项目信息中第一条数据的项目名称(或传递大类例如:办公用品)
     */
    @ApiModelProperty(value = "主要开票项目^_^主要开票商品,或者第一条商品,取项目信息中第一条数据的项目名称(或传递大类例如:办公用品)")
    private String kpxm;

    /**
     * 开票方识别号^_^必填,开票方纳税人识别号
     */
    @ApiModelProperty(value = "开票方识别号^_^必填,开票方纳税人识别号")
    private String xhfNsrsbh;

    /**
     * 销货方名称^_^销货方名称
     */
    @ApiModelProperty(value = "销货方名称^_^销货方名称")
    private String xhfmc;

    /**
     * 销货方地址电话^_^销货方地址电话
     */
    @ApiModelProperty(value = "销货方地址电话^_^销货方地址电话")
    private String xhfDzdh;

    /**
     * 销货方银行账号^_^销货方银行账号
     */
    @ApiModelProperty(value = "销货方银行账号^_^销货方银行账号")
    private String xhfYhzh;

    /**
     * 购货方名称^_^购货方名称,即发票抬头.购货方为"个人"时,可输入名称,输入名称是为"个人(名称)","("为半角;例:个人(王杰)
     */
    @ApiModelProperty(value = "购货方名称^_^购货方名称,即发票抬头.购货方为'个人'时,可输入名称,输入名称是为'个人(名称)','('为半角;例:个人(王杰)")
    private String ghfmc;

    /**
     * 购货方纳税人识别号^_^购货方企业类型为"01,02"时,必填
     */
    @ApiModelProperty(value = "购货方纳税人识别号^_^购货方企业类型为'01,02'时,必填")
    private String ghfNsrsbh;

    /**
     * 购货方银行账号^_^购货方银行账号
     */
    @ApiModelProperty(value = "购货方银行账号^_^购货方银行账号")
    private String ghfYhzh;

    /**
     * 购货方地址电话^_^购货方地址电话
     */
    @ApiModelProperty(value = "购货方地址电话^_^购货方地址电话")
    private String ghfDzdh;

    /**
     * 购货方手机^_^购货方手机号(交付手机)
     */
    @ApiModelProperty(value = "购货方手机^_^购货方手机号(交付手机)")
    private String ghfSj;

    /**
     * 购货方邮箱^_^购货方邮箱(交付邮箱)
     */
    @ApiModelProperty(value = "购货方邮箱^_^购货方邮箱(交付邮箱)")
    private String ghfEmail;

    /**
     * 交付标志^_^0-不交付;1-交付邮箱;2-交付手机;3-手机邮箱都交付;默认:0
     */
    @ApiModelProperty(value = "交付标志^_^0-不交付;1-交付邮箱;2-交付手机;3-手机邮箱都交付;默认:0")
    private String billSentSign;

    /**
     * pdf状态回调地址^_^为空时不回调,不为空时回调,若提供的接收回调地址有误,则最多回调三次,回调成功需返回格式{returnCode:'0000',returnMsg:'原因'}其他都视为失败
     */
    @ApiModelProperty(value = "pdf状态回调地址^_^为空时不回调,不为空时回调,若提供的接收回调地址有误,则最多回调三次,回调成功需返回格式{returnCode:'0000',returnMsg:'原因'}其他都视为失败")
    private String callBackUrl;

    /**
     * 购货方企业类型^_^购货方企业类型"01,02"代表企业,两者没区别,"03"代表个人
     */
    @ApiModelProperty(value = "购货方企业类型^_^购货方企业类型'01,02'代表企业,两者没区别,'03'代表个人")
    private String ghfqylx;

    /**
     * 代开标志^_^0-自开;1-代开;默认:0
     */
    @ApiModelProperty(value = "代开标志^_^0-自开;1-代开;默认:0")
    private String dkbz;

    /**
     * 分机号^_^为空时随机获取分机盘开票,不为空是指定分机盘开具(A9暂时不支持,C48支持)
     */
    @ApiModelProperty(value = "分机号^_^为空时随机获取分机盘开票,不为空是指定分机盘开具(A9暂时不支持,C48支持)")
    private String fjh;

    /**
     * 开票员^_^开票员
     */
    @ApiModelProperty(value = "开票员^_^开票员")
    private String kpy;

    /**
     * 收款员^_^收款员
     */
    @ApiModelProperty(value = "收款员^_^收款员")
    private String sky;

    /**
     * 复核人^_^复核人
     */
    @ApiModelProperty(value = "复核人^_^复核人")
    private String fhr;

    /**
     * 开票类型^_^开票类型(1-蓝票;2-红票;10-特殊冲红)
     */
    @ApiModelProperty(value = "开票类型^_^开票类型(1-蓝票;2-红票;10-特殊冲红)")
    private String kplx;

    /**
     * 原发票代码^_^开红票时必填
     */
    @ApiModelProperty(value = "原发票代码^_^开红票时必填")
    private String yfpDm;

    /**
     * 原发票号码^_^开红票时必填
     */
    @ApiModelProperty(value = "原发票号码^_^开红票时必填")
    private String yfpHm;

    /**
     * 清单标志^_^0-普通电子发票;1-普通电子发票(清单);2-收购电子发票;3-收购电子发票(清单);4-成品油电子发票(成品油无清单);备注:默认为0;1,3-清单是指强制清单;0,2-如果超出8行自动打印清单;4-成品油,则商品明细行不能有其他商品,一个商品是成品油,另一个不是成品油,开不出来票.并且成品油的发票的商品行中,单价;数量;单位必填,其中单位为升或者吨
     */
    @ApiModelProperty(value = "清单标志^_^0-普通电子发票;1-普通电子发票(清单);2-收购电子发票;3-收购电子发票(清单);4-成品油电子发票(成品油无清单);备注:默认为0;1,3-清单是指强制清单;0,2-如果超出8行自动打印清单;4-成品油,则商品明细行不能有其他商品,一个商品是成品油,另一个不是成品油,开不出来票.并且成品油的发票的商品行中,单价;数量;单位必填,其中单位为升或者吨")
    private String qdBz;

    /**
     * 清单项目名称^_^清单标志为1时必填
     */
    @ApiModelProperty(value = "清单项目名称^_^清单标志为1时必填")
    private String qdxmmc;

    /**
     * 价税合计金额^_^小数点后2位,以元为单位,精确到分
     */
    @ApiModelProperty(value = "价税合计金额^_^小数点后2位,以元为单位,精确到分")
    private BigDecimal kphjje;

    /**
     * 合计不含税金额.所有商品行不含税金额之和.^_^小数点后2位,以元为单位精确到分(单行商品金额之和).
     */
    @ApiModelProperty(value = "合计不含税金额.所有商品行不含税金额之和.^_^小数点后2位,以元为单位精确到分(单行商品金额之和).")
    private BigDecimal hjbhsje;

    /**
     * 合计税额.所有商品行税额之和.^_^小数点后2位,以元为单位精确到分(单行商品税额之和)
     */
    @ApiModelProperty(value = "合计税额.所有商品行税额之和.^_^小数点后2位,以元为单位精确到分(单行商品税额之和)")
    private BigDecimal hjse;

    /**
     * 备注^_^增值税发票红字发票开具时,备注要求:开具负数发票,必须在备注中注明"对应正数发票代码:XXXXXXXXX号码:YYYYYYYY"字样,其中"X"为发票代码,"Y"为发票号码.
     */
    @ApiModelProperty(value = "备注^_^增值税发票红字发票开具时,备注要求:开具负数发票,必须在备注中注明'对应正数发票代码:XXXXXXXXX号码:YYYYYYYY'字样,其中'X'为发票代码,'Y'为发票号码.")
    private String bz;

    /**
     * 0000
     */
    @ApiModelProperty(value = "0000")
    private String returnCode;

    /**
     * 发票开具成功
     */
    @ApiModelProperty(value = "发票开具成功")
    private String returnMsg;

    /**
     * 创建时间
     */
    @ApiModelProperty(value = "创建时间")
    private Date createTime;

    /**
     * 操作人 sysUserId
     */
    @ApiModelProperty(value = "操作人 sysUserId")
    private Long createUserId;

    /**
     * 操作人 sysUserName
     */
    @ApiModelProperty(value = "操作人 sysUserName")
    private String createUserName;

    /**
     * 最近更新时间
     */
    @ApiModelProperty(value = "最近更新时间")
    private Date updateTime;

    /**
     * 操作人 sysUserId
     */
    @ApiModelProperty(value = "操作人 sysUserId")
    private Long updateUserId;

    /**
     * 操作人 sysUserName
     */
    @ApiModelProperty(value = "操作人 sysUserName")
    private String updateUserName;

    /**
     * 软删除:0-未删除;1-已删除
     */
    @ApiModelProperty(value = "软删除:0-未删除;1-已删除")
    private Integer deleted;

    /**
     * 批次Id
     */
    @ApiModelProperty(value = "批次Id")
    private String batchId;

    /**
     * 发票类型^_^0-专票;2-普票;41-卷票;42-二手车;51-电子票;52-电子专票;12-机动车发票;不传默认电子发票
     */
    @ApiModelProperty(value = "发票类型^_^0-专票;2-普票;41-卷票;42-二手车;51-电子票;52-电子专票;12-机动车发票;不传默认电子发票")
    private Integer invoiceType;

    /**
     * 普通发票、电子普通发票、卷票冲红需给出冲红原因。^_^1-销货退回;2-开票有误;3-服务中止;4-销售折让;对于冲红原因为 1、2、3 的，会执行本地校验和联网校验两项检查，只要其中一项检查不通过，不允许开具红票，其它:为空
     */
    @ApiModelProperty(value = "普通发票、电子普通发票、卷票冲红需给出冲红原因。^_^1-销货退回;2-开票有误;3-服务中止;4-销售折让;对于冲红原因为 1、2、3 的，会执行本地校验和联网校验两项检查，只要其中一项检查不通过，不允许开具红票，其它:为空")
    private Integer redReason;

    /**
     * 原蓝字发票的开具日期^_^redReason不为空时，则要求填写原蓝字发票的开具日期，格式:yyyyMMdd, 如:20211230注:如果原开票软件中原蓝票的开票时间不一致时，则以开票软件的为准，不作不一致的提示。
     */
    @ApiModelProperty(value = "原蓝字发票的开具日期^_^redReason不为空时，则要求填写原蓝字发票的开具日期，格式:yyyyMMdd, 如:20211230注:如果原开票软件中原蓝票的开票时间不一致时，则以开票软件的为准，不作不一致的提示。")
    private String blueInvDate;

    /**
     * 原蓝字发票的发票类型^_^redReason不为空时，则要求填写原蓝字发票的发票类型，对应蓝字发票种类主要包括以下4类:2-普通发票;41-卷票;51-电子普通发票;999-其他普通发票(如:通行费发票)
     */
    @ApiModelProperty(value = "原蓝字发票的发票类型^_^redReason不为空时，则要求填写原蓝字发票的发票类型，对应蓝字发票种类主要包括以下4类:2-普通发票;41-卷票;51-电子普通发票;999-其他普通发票(如:通行费发票)")
    private String blueInvKind;

    /**
     * 开具理由^_^规模纳税人(含转登记)、代开、委托代开企业，自 2022-01-01 至 2022-12-31 起 3%、1%、0.5%税率降为免税，此期间依旧开具 3% 或 1% 税率的，需要传入开具理由。
     */
    @ApiModelProperty(value = "开具理由^_^规模纳税人(含转登记)、代开、委托代开企业，自 2022-01-01 至 2022-12-31 起 3%、1%、0.5%税率降为免税，此期间依旧开具 3% 或 1% 税率的，需要传入开具理由。")
    private Integer invReason;

    private static final long serialVersionUID = 1L;
}