package cn.superdesk.uniorder.dto.vo.thirdpart.szhtxx.electronicInvoice;

import io.swagger.annotations.ApiModelProperty;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;

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

/**
 * @Description: Java类作用描述
 * @Author: linjinyu
 * @CreateDate: 2022/3/9 下午5:27
 * @UpdateUser: linjinyu
 * @UpdateDate: 2022/3/9 下午5:27
 * @UpdateRemark: 修改内容
 * @Version: 1.0
 */
@NoArgsConstructor
@AllArgsConstructor
@Builder(toBuilder = true)
@Data
public class SzhtxxElectronicInvoiceFptxxListItemVo implements Serializable {


    @ApiModelProperty("Id")
    private Long   id;
    @ApiModelProperty("发票请求唯一流水号^_^每张发票的发票请求唯一流水号无重复,由企业定义.限制固定20位.流水号包含公司简称(如:华为终端:HWZD************)")
    private String fpqqlsh;
    @ApiModelProperty("主要开票项目^_^主要开票商品,或者第一条商品,取项目信息中第一条数据的项目名称(或传递大类例如:办公用品)")
    private String kpxm;
    @ApiModelProperty("开票方识别号^_^必填,开票方纳税人识别号")
    private String xhfNsrsbh;

    @ApiModelProperty("销货方名称^_^销货方名称")
    private String xhfmc;
    @ApiModelProperty("销货方地址电话^_^销货方地址电话")
    private String xhfDzdh;
    @ApiModelProperty("销货方银行账号^_^销货方银行账号")
    private String xhfYhzh;

    @ApiModelProperty("购货方名称^_^购货方名称,即发票抬头.购货方为'个人'时,可输入名称,输入名称是为'个人(名称)','('为半角;例:个人(王杰)")
    private String ghfmc;
    @ApiModelProperty("购货方纳税人识别号^_^购货方企业类型为'01,02'时,必填")
    private String ghfNsrsbh;
    @ApiModelProperty("购货方银行账号^_^购货方银行账号")
    private String ghfYhzh;
    @ApiModelProperty("购货方地址电话^_^购货方地址电话")
    private String ghfDzdh;
    @ApiModelProperty("购货方手机^_^购货方手机号(交付手机)")
    private String ghfSj;
    @ApiModelProperty("购货方邮箱^_^购货方邮箱(交付邮箱)")
    private String ghfEmail;

    @ApiModelProperty("交付标志^_^0-不交付;1-交付邮箱;2-交付手机;3-手机邮箱都交付;默认:0")
    private String billSentSign;
    @ApiModelProperty("状态回调地址^_^为空时不回调,不为空时回调,若提供的接收回调地址有误,则最多回调三次,回调成功需返回格式{returnCode:'0000',returnMsg:'原因'}其他都视为失败")
    private String callBackUrl;
    @ApiModelProperty("购货方企业类型^_^购货方企业类型'01,02'代表企业,两者没区别,'03'代表个人")
    private String ghfqylx;
    @ApiModelProperty("代开标志^_^0-自开;1-代开;默认:0")
    private String dkbz;
    @ApiModelProperty("分机号^_^为空时随机获取分机盘开票,不为空是指定分机盘开具(A9暂时不支持,C48支持)")
    private String fjh;

    @ApiModelProperty("开票员^_^开票员")
    private String kpy;
    @ApiModelProperty("收款员^_^收款员")
    private String sky;
    @ApiModelProperty("复核人^_^复核人")
    private String fhr;

    @ApiModelProperty("开票类型^_^开票类型(1-蓝票;2-红票;10-特殊冲红)")
    private String kplx;
    //	@ApiModelProperty("开票类型^_^开票类型(1-蓝票;2-红票;10-特殊冲红)")
//	private String kplxName;
    @ApiModelProperty("原发票代码^_^开红票时必填")
    private String yfpDm;
    @ApiModelProperty("原发票号码^_^开红票时必填")
    private String yfpHm;
    @ApiModelProperty("清单标志^_^0-普通电子发票;1-普通电子发票(清单);2-收购电子发票;3-收购电子发票(清单);4-成品油电子发票(成品油无清单);备注:默认为0;1,3-清单是指强制清单;0,2-如果超出8行自动打印清单;4-成品油,则商品明细行不能有其他商品,一个商品是成品油,另一个不是成品油,开不出来票.并且成品油的发票的商品行中,单价;数量;单位必填,其中单位为升或者吨")
    private String qdBz;
    @ApiModelProperty("清单项目名称^_^清单标志为1时必填")
    private String qdxmmc;

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

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

    /**************************************** 需求变动 接口变动 20220323 start ****************************************/

    @ApiModelProperty("与深圳航信冲突-需求变动-接口变动-发票类型^_^0-专票;2-普票;41-卷票;42-二手车;51-电子票;52-电子专票;12-机动车发票;不传默认电子发票; 引用 enum SzhtxxElectronicInvoiceFptxxInvoiceType")
    private Integer invoiceType;
    @ApiModelProperty("与深圳航信冲突-需求变动-接口变动-发票类型-名称")
    private String  invoiceTypeName;
    @ApiModelProperty("需求变动-接口变动-红冲原因(红冲类型(产品的叫法)),普通发票、电子普通发票、卷票冲红需给出冲红原因。^_^1-销货退回;2-开票有误;3-服务中止;4-销售折让;对于冲红原因为 1、2、3 的，会执行本地校验和联网校验两项检查，只要其中一项检查不通过，不允许开具红票，其它:为空; 引用 enum SzhtxxElectronicInvoiceFptxxRedReason")
    private Integer redReason;
    @ApiModelProperty("需求变动-接口变动-红冲原因红冲类型(产品的叫法),普通发票、电子普通发票、卷票冲红需给出冲红原因。^_^1-销货退回;2-开票有误;3-服务中止;4-销售折让;对于冲红原因为 1、2、3 的，会执行本地校验和联网校验两项检查，只要其中一项检查不通过，不允许开具红票，其它:为空; 引用 enum SzhtxxElectronicInvoiceFptxxRedReason")
    private String  redReasonName;
    @ApiModelProperty("需求变动-接口变动-原蓝字发票的开具日期^_^redReason不为空时，则要求填写原蓝字发票的开具日期，格式:yyyyMMdd, 如:20211230注:如果原开票软件中原蓝票的开票时间不一致时，则以开票软件的为准，不作不一致的提示。")
    private String  blueInvDate;
    @ApiModelProperty("需求变动-接口变动-原蓝字发票的发票类型^_^redReason不为空时，则要求填写原蓝字发票的发票类型，对应蓝字发票种类主要包括以下4类:2-普通发票;41-卷票;51-电子普通发票;999-其他普通发票(如:通行费发票)")
    private String  blueInvKind;
    @ApiModelProperty("需求变动-接口变动-开具理由^_^规模纳税人(含转登记)、代开、委托代开企业，自 2022-01-01 至 2022-12-31 起 3%、1%、0.5%税率降为免税，此期间依旧开具 3% 或 1% 税率的，需要传入开具理由。; 引用 enum SzhtxxElectronicInvoiceFptxxInvReasonEnum")
    private Integer invReason;
    @ApiModelProperty("需求变动-接口变动-开具理由^_^规模纳税人(含转登记)、代开、委托代开企业，自 2022-01-01 至 2022-12-31 起 3%、1%、0.5%税率降为免税，此期间依旧开具 3% 或 1% 税率的，需要传入开具理由。; 引用 enum SzhtxxElectronicInvoiceFptxxInvReasonEnum")
    private String  invReasonName;

    /**************************************** 需求变动 接口变动 20220323   end ****************************************/


    @ApiModelProperty("0000")
    private String returnCode;
    @ApiModelProperty("发票开具成功")
    private String returnMsg;

    @ApiModelProperty("创建时间")
    private Date   createTime;
    @ApiModelProperty("操作人 sysUserId")
    private Long   createUserId;
    @ApiModelProperty("操作人 sysUserName")
    private String createUserName;

    @ApiModelProperty("最近更新时间")
    private Date   updateTime;
    @ApiModelProperty("操作人 sysUserId")
    private Long   updateUserId;
    @ApiModelProperty("操作人 sysUserName")
    private String updateUserName;

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


    /****************************************** szhtxx_electronic_invoice_fptxx_result start ******************************************/


    @ApiModelProperty("合计不含税金额^_^默认为0,小数点后2位,以元为单位精确到分开票成功,必填项::hjbhsje")
    private BigDecimal returnedHjbhsje;
    @ApiModelProperty("合计税额^_^默认为0,小数点后2位,以元为单位精确到分,开票成功,必填项::hjse")
    private BigDecimal returnedHjse;

    //    yyyyMMddHHmmss
    @ApiModelProperty("开票日期^_^YYYYMMDDHHMISS")
    private String kprq;
    @ApiModelProperty("开票日期^_^YYYYMMDDHHMISS")
    private String kprqFormat;
    @ApiModelProperty("发票代码^_^开票成功,必填项")
    private String fpdm;
    @ApiModelProperty("发票号码^_^开票成功,必填项")
    private String fphm;
    @ApiModelProperty("PDF下载链接^_^开票成功,必填项")
    private String pdfUrl;
    @ApiModelProperty("校验码^_^开票成功,必填项")
    private String jym;
    @ApiModelProperty("所属月份^_^yyyyMM")
    private String ssyf;
    @ApiModelProperty("分机号^_^分机号::fjh")
    private String returnedFjh;
    @ApiModelProperty("二维码^_^开票成功必填")
    private String ewm;
    @ApiModelProperty("签名值^_^签名值")
    private String szqm;

    /****************************************** szhtxx_electronic_invoice_fptxx_result   end ******************************************/


    /******************************************** szhtxx_electronic_invoice_fptxx_extend_info start ********************************************/

    @ApiModelProperty("bill_sent_sign-交付标志^_^0-不交付;1-交付邮箱;2-交付手机;3-手机邮箱都交付;默认:0")
    private String  billSentSignName;
    @ApiModelProperty("状态回调地址^_^为空时不回调,不为空时回调,若提供的接收回调地址有误,则最多回调三次,回调成功需返回格式{returnCode:`0000`,returnMsg:`原因`}其他都视为失败")
    private String  pdfUrlOriginal;
    @ApiModelProperty("状态回调地址^_^为空时不回调,不为空时回调,若提供的接收回调地址有误,则最多回调三次,回调成功需返回格式{returnCode:`0000`,returnMsg:`原因`}其他都视为失败")
    private String  pdfUrlSaved;
    @ApiModelProperty("ghfqylx-购货方企业类型^_^购货方企业类型`01, 02`代表企业,两者没区别,`03` 代表个人")
    private String  ghfqylxName;
    @ApiModelProperty("kplx-开票类型^_^开票类型(1-蓝票;2-红票;10-特殊冲红)")
    private String  kplxName;
    @ApiModelProperty("qd_bz-清单标志^_^0-普通电子发票;1-普通电子发票(清单);2-收购电子发票;3-收购电子发票(清单);4-成品油电子发票(成品油无清单);备注:默认为0;1,3-清单是指强制清单;0,2-如果超出8行自动打印清单;4-成品油,则商品明细行不能有其他商品,一个商品是成品油,另一个不是成品油,开不出来票.并且成品油的发票的商品行中,单价;数量;单位必填,其中单位为升或者吨")
    private String  qdBzName;
    @ApiModelProperty("后台操作人员备注")
    private String  remark2;
    @ApiModelProperty("红冲原因")
    private String  reasonRedWrite;
    @ApiModelProperty("是否红冲:0-否;1-是;")
    private Integer isRedWriteOff;
    @ApiModelProperty("是否红冲:0-否;1-是;")
    private String  isRedWriteOffName;
    @ApiModelProperty(value = "3 信息表编号: 1. 该数据取航信返回的信息表编号内容; 2. 此字段数据可能存在为空;")
    private String  redTaxInfoSn;

    @ApiModelProperty("原/红冲发票号")
    private String  productManagerRequirementsBlueOrRedInvoiceNumber;
    @ApiModelProperty("原/红冲发票代码")
    private String  productManagerRequirementsBlueOrRedInvoiceCode;
    @ApiModelProperty("报送状态:0-未报送;1-已报送;-1报送失败")
    private Integer pushedOutStatus;
    @ApiModelProperty("报送状态:0-未报送;1-已报送;-1报送失败; 引用 enum SzhtxxElectronicInvoiceFptxxPushedOutStatusEnum")
    private String  pushedOutStatusName;
    @ApiModelProperty("send过去分词 sent 邮件状态:0-未发送;1-已发送;")
    private Integer sentEmailStatus;
    @ApiModelProperty("send过去分词 sent 邮件状态:0-未发送;1-已发送; 引用 enum SzhtxxElectronicInvoiceFptxxSentEmailStatusEnum")
    private String  sentEmailStatusName;

    //    <result column="extend_info_op_update_time" jdbcType="TIMESTAMP" property=""/>
//    <result column="extend_info_op_update_user_id" jdbcType="BIGINT" property=""/>
//    <result column="extend_info_op_update_user_name" jdbcType="VARCHAR" property=""/>
    @ApiModelProperty("最近更新时间")
    private Date   extendInfoOpUpdateTime;
    @ApiModelProperty("操作人 sysUserId")
    private Long   extendInfoOpUpdateUserId;
    @ApiModelProperty("操作人 sysUserName")
    private String extendInfoOpUpdateUserName;


    @ApiModelProperty(value = "作废部分-作废登记人-后台帐号-应产品要求-做双份")
    private Long   becomeInvalidUserId;
    @ApiModelProperty(value = "作废部分-作废登记人-后台帐号-应产品要求-做双份")
    private String becomeInvalidUserName;
    @ApiModelProperty(value = "作废部分-作废时间-应产品要求-做双份")
    private Date   becomeInvalidTime;
    @ApiModelProperty(value = "作废部分-作废时间-应产品要求-做双份")
    private String becomeInvalidTimeFormat;
    @ApiModelProperty(value = "作废部分-作废原因-应产品要求-做双份")
    private String becomeInvalidReason;


    @ApiModelProperty(value = "作废标志-20220427[新增] 未作废/已作废;")
    private Integer flagVoidSign;
    @ApiModelProperty(value = "作废标志-20220427[新增] 0-未作废;1-已作废;")
    private String  flagVoidSignName;
    @ApiModelProperty(value = "修复标志-20220427[新增]")
    private Integer flagRepair;
    @ApiModelProperty(value = "清单标志-20220427[新增][预留];")
    private Integer flagList;


    /******************************************** szhtxx_electronic_invoice_fptxx_extend_info   end ********************************************/


    /****************************************** invoice_apply 开票申请(发票单) start ******************************************/

//	回款状态
//	回款登记人
//	回款时间
    @ApiModelProperty("回款登记部分-回款状态:0-未回款;1-部分回款;2全部回款;")
    private Integer backAccountStatus;
    @ApiModelProperty("回款登记部分(超级前台(适用)|侨城汇(适用))-回款状态:0-未回款;1-部分回款;2全部回款;数据库没记录,通过程序定义的附加产生")
    private String  backAccountStatusName;
    @ApiModelProperty("回款登记部分-回款登记方式记录:0-初始;10-手动;11-流水;")
    private Integer backAccountModeRecord;
    @ApiModelProperty("回款登记部分-最后更新人-sysUserId")
    private Long    backAccountUserId;
    @ApiModelProperty("回款登记部分-最后更新人-sysUserId")
    private String  backAccountUserName;
    @ApiModelProperty("回款登记部分-最后更新时间")
    private Date    backAccountTime;

    //	对账单编号
    @ApiModelProperty("对账单Id 20220303 启用 积分结算2.1")
    private Long   accountingOrderId;
    @ApiModelProperty("对账单编号 20220303 启用 积分结算2.1")
    private String accountingOrderSn;


    //	开票申请编号(发票单编号)
    @ApiModelProperty("开票申请Id(发票单Id)")
    private Long   invoiceApplyId;
    @ApiModelProperty("开票申请编号;invoice_apply_sn 内部生成的Sn")
    private String invoiceApplySn;

    @ApiModelProperty("发票种类Id")
    private Long   invoiceTypeId;
    @ApiModelProperty("发票种类名称")
    private String invoiceTypeIdName;
    @ApiModelProperty("开票方式(目前-20220223-包含:线下开票(offLine)|深圳航信电子发票(szhtxxElectronicInvoice))")
    private String invoiceMode;
    @ApiModelProperty("开票方式(目前-20220223-包含:线下开票(offLine)|深圳航信电子发票(szhtxxElectronicInvoice))")
    private String invoiceModeName;

    @ApiModelProperty("发票申请部分-税率-unified_tax_rate.id ")
    private String taxRate;


    /**************************************** mark by linjinyu at 20220516 v2.3 start ****************************************/

    @ApiModelProperty("订单类型-订单来源-引用enum CommonServiceNoEnum")
    private String serviceNo;
    @ApiModelProperty("订单类型-订单来源-引用enum CommonServiceNoEnum")
    private String serviceNoName;

    @ApiModelProperty("操作来源-引用enum CommonSourceFromEnum")
    private String sourceFrom;
    @ApiModelProperty("操作来源-引用enum CommonSourceFromEnum")
    private String sourceFromName;

    /**************************************** mark by linjinyu at 20220516 v2.3   end ****************************************/

    @ApiModelProperty("统一订单 项目ID")
    private Long   sysOrgId;
    @ApiModelProperty("统一订单 企业ID")
    private Long   sysVirtId;
    @ApiModelProperty("外部系统 项目ID 一般是指 服务之窗 或 福利商城")
    private Long   outOrgId;
    @ApiModelProperty("外部系统 企业ID 一般是指 服务之窗 或 福利商城")
    private Long   outVirtId;
    @ApiModelProperty("外部系统 企业ID 一般是指 服务之窗 或 福利商城")
    private String outVirtName;

    /****************************************** invoice_apply 开票申请(发票单)   end ******************************************/
}
