package cn.superdesk.uniorder.dao.entity.invoice.customer;

import io.swagger.annotations.ApiModelProperty;
import java.io.Serializable;
import java.math.BigDecimal;
import java.util.Date;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import lombok.ToString;

/**
 * @Description:  
 * @Author: linjinyu 
 * @CreateDate: 2022-05-13 14:03:15 
 * @UpdateUser: linjinyu 
 * @UpdateDate: 2022-05-13 14:03:15 
 * @UpdateRemark: 修改内容 
 * @Version: 1.0 
 */ 
@NoArgsConstructor
@AllArgsConstructor
@Builder(toBuilder = true)
@Data
@ToString
public class InvoiceApply implements Serializable {
    @ApiModelProperty(value = "")
    private Long id;

    /**
     * 对账单类型 1-一般;2-积分;
     */
    @ApiModelProperty(value = "对账单类型 1-一般;2-积分;")
    private Integer accountingOrderType;

    /**
     * 对账单Id 20220303 启用 积分结算2.1
     */
    @ApiModelProperty(value = "对账单Id 20220303 启用 积分结算2.1")
    private Long accountingOrderId;

    /**
     * 对账单编号 20220303 启用 积分结算2.1
     */
    @ApiModelProperty(value = "对账单编号 20220303 启用 积分结算2.1")
    private String accountingOrderSn;

    /**
     * 对账单 创建维度:0-订单;1-商品;2-流水;
     */
    @ApiModelProperty(value = "对账单 创建维度:0-订单;1-商品;2-流水;")
    private Integer dimCreateBy;

    /**
     * 发票申请部分 - 发票申请号 invoice_apply_sn 内部生成的Sn
     */
    @ApiModelProperty(value = "发票申请部分 - 发票申请号 invoice_apply_sn 内部生成的Sn")
    private String invoiceApplySn;

    /**
     * 发票申请部分 - 开票申请金额:商品或流水累加
     */
    @ApiModelProperty(value = "发票申请部分 - 开票申请金额:商品或流水累加")
    private BigDecimal invoiceApplyAmount;

    /**
     * 发票申请部分 - 减免金额
     */
    @ApiModelProperty(value = "发票申请部分 - 减免金额")
    private BigDecimal freeAmount;

    /**
     * 发票单-微信金额 - 积分结算2.1 新加 取该对账单中所有积分类型为“微信支付”的结算金额总和 也称之为不对账金额 不结算金额
     */
    @ApiModelProperty(value = "发票单-微信金额 - 积分结算2.1 新加 取该对账单中所有积分类型为“微信支付”的结算金额总和 也称之为不对账金额 不结算金额")
    private BigDecimal unAccountingAmount;

    /**
     * 发票申请部分 - 实际金额
     */
    @ApiModelProperty(value = "发票申请部分 - 实际金额")
    private BigDecimal realAmount;

    /**
     * 发票申请部分 - 初始为真实金额(开票申请金额-减免金额),如果有回款，这个数值是会相映的减的
     */
    @ApiModelProperty(value = "发票申请部分 - 初始为真实金额(开票申请金额-减免金额),如果有回款，这个数值是会相映的减的")
    private BigDecimal noCheckCount;

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

    /**
     * 发票申请部分 - 开票抬头
     */
    @ApiModelProperty(value = "发票申请部分 - 开票抬头")
    private String invoiceTitle;

    /**
     * 企业信息扩展发票信息.id sysEnterpriseExtInvoiceId
     */
    @ApiModelProperty(value = "企业信息扩展发票信息.id sysEnterpriseExtInvoiceId")
    private Long sysEnterpriseExtInvoiceId;

    /**
     * 发票申请部分 - 发票类型
     */
    @ApiModelProperty(value = "发票申请部分 - 发票类型")
    private Long invoiceType;

    /**
     * 发票申请-发票信息-开票方式(目前-20220223-包含:线下开票(offLine)|深圳航天信息电子发票(szhtxxElectronicInvoice))
     */
    @ApiModelProperty(value = "发票申请-发票信息-开票方式(目前-20220223-包含:线下开票(offLine)|深圳航天信息电子发票(szhtxxElectronicInvoice))")
    private String invoiceMode;

    /**
     * 发票申请部分 - 发票申请人Id - 后台帐号
     */
    @ApiModelProperty(value = "发票申请部分 - 发票申请人Id - 后台帐号")
    private Long applyUserId;

    /**
     * 发票申请部分 - 发票申请时间
     */
    @ApiModelProperty(value = "发票申请部分 - 发票申请时间")
    private Date applyTime;

    /**
     * 发票申请审核部分 - 审核人Id - 后台帐号
     */
    @ApiModelProperty(value = "发票申请审核部分 - 审核人Id - 后台帐号")
    private Long auditUserId;

    /**
     * 发票申请审核部分 - 审核状态 1-未审核;2-已同意;3-已拒绝
     */
    @ApiModelProperty(value = "发票申请审核部分 - 审核状态 1-未审核;2-已同意;3-已拒绝")
    private Integer auditStatus;

    /**
     * 发票申请审核部分 - 审核时间
     */
    @ApiModelProperty(value = "发票申请审核部分 - 审核时间")
    private Date auditTime;

    /**
     * 开票进展部分 - 开票进展状态:0-待开票(原:未邮寄);1-已邮寄(弃用);2-已作废;10-开票中;11-已开票;
     */
    @ApiModelProperty(value = "开票进展部分 - 开票进展状态:0-待开票(原:未邮寄);1-已邮寄(弃用);2-已作废;10-开票中;11-已开票;")
    private Integer invoiceStatus;

    /**
     * 开票进展部分 - 最后更新人 - sysUserId
     */
    @ApiModelProperty(value = "开票进展部分 - 最后更新人 - sysUserId")
    private Long invoiceProgressingUserId;

    /**
     * 开票进展部分 - 最后更新时间
     */
    @ApiModelProperty(value = "开票进展部分 - 最后更新时间")
    private Date invoiceProgressingTime;

    /**
     * 发票登记部分 - 开票登记人 - 后台帐号
     */
    @ApiModelProperty(value = "发票登记部分 - 开票登记人 - 后台帐号")
    private Long makeInvoiceUserId;

    /**
     * 发票登记部分 - 开票状态 0-未开票;1-已开票;2-重新开票;
     */
    @ApiModelProperty(value = "发票登记部分 - 开票状态 0-未开票;1-已开票;2-重新开票;")
    private Integer makeInvoiceStatus;

    /**
     * 发票登记部分 - 开票时间
     */
    @ApiModelProperty(value = "发票登记部分 - 开票时间")
    private Date makeInvoiceTime;

    /**
     * 领票部分 - 领票状态:0-未领票;1-已领票;
     */
    @ApiModelProperty(value = "领票部分 - 领票状态:0-未领票;1-已领票;")
    private Integer receiveInvoiceStatus;

    /**
     * 领票部分 - 最后更新人 - sysUserId
     */
    @ApiModelProperty(value = "领票部分 - 最后更新人 - sysUserId")
    private Long receiveInvoiceUserId;

    /**
     * 领票部分 - 最后更新时间
     */
    @ApiModelProperty(value = "领票部分 - 最后更新时间")
    private Date receiveInvoiceTime;

    /**
     * 发票登记部分 - 填写税局发票号-产品要求-【服务端】需一个开票申请支持50个发票号的存储，单个发票号8位数；
     */
    @ApiModelProperty(value = "发票登记部分 - 填写税局发票号-产品要求-【服务端】需一个开票申请支持50个发票号的存储，单个发票号8位数；")
    private String invoiceNumber;

    /**
     * 寄票登记部分 - 寄票登记人 - 后台帐号
     */
    @ApiModelProperty(value = "寄票登记部分 - 寄票登记人 - 后台帐号")
    private Long mailTickUserId;

    /**
     * 寄票登记部分 - 寄票状态:0-未寄票;1-已寄票;
     */
    @ApiModelProperty(value = "寄票登记部分 - 寄票状态:0-未寄票;1-已寄票;")
    private Integer mailTickStatus;

    /**
     * 寄票登记部分 - 寄票时间
     */
    @ApiModelProperty(value = "寄票登记部分 - 寄票时间")
    private Date mailTickTime;

    /**
     * 寄票登记部分 - 快递公司ID
     */
    @ApiModelProperty(value = "寄票登记部分 - 快递公司ID")
    private Long expressCompanyId;

    /**
     * 寄票登记部分-快递单号-产品要求-限输入100个字符
     */
    @ApiModelProperty(value = "寄票登记部分-快递单号-产品要求-限输入100个字符")
    private String expressNo;

    /**
     * 回款登记部分 - 回款状态:0-未回款;1-部分回款;2全部回款;
     */
    @ApiModelProperty(value = "回款登记部分 - 回款状态:0-未回款;1-部分回款;2全部回款;")
    private Integer backAccountStatus;

    /**
     * 回款登记部分 - 回款登记方式记录:0-初始;10-手动;11-流水;
     */
    @ApiModelProperty(value = "回款登记部分 - 回款登记方式记录:0-初始;10-手动;11-流水;")
    private Integer backAccountModeRecord;

    /**
     * 回款登记部分 - 最后更新人 - sysUserId
     */
    @ApiModelProperty(value = "回款登记部分 - 最后更新人 - sysUserId")
    private Long backAccountUserId;

    /**
     * 回款登记部分 - 最后更新时间
     */
    @ApiModelProperty(value = "回款登记部分 - 最后更新时间")
    private Date backAccountTime;

    /**
     * 备注
     */
    @ApiModelProperty(value = "备注")
    private String remark;

    /**
     * 后台操作人员备注
     */
    @ApiModelProperty(value = "后台操作人员备注")
    private String remark2;

    /**
     * 绑定附件 upload_files.uid
     */
    @ApiModelProperty(value = "绑定附件 upload_files.uid")
    private String attachmentUploadFilesUids;

    @ApiModelProperty(value = "")
    private Integer serviceId;

    /**
     * 服务编码-定义:始于订单流上标志的服务编码及从订单流衍生出来的及相关数据的来源标识-引用enum CommonServiceEnum
     */
    @ApiModelProperty(value = "服务编码-定义:始于订单流上标志的服务编码及从订单流衍生出来的及相关数据的来源标识-引用enum CommonServiceEnum")
    private String serviceNo;

    /**
     * 来源-定义:始于操作(不限于界面 内部接口 第三方接口等等);1-superdesk-uniorder;2-superdesk-app;3-superdesk-mall;4-qchqyscjc-mall;
     */
    @ApiModelProperty(value = "来源-定义:始于操作(不限于界面 内部接口 第三方接口等等);1-superdesk-uniorder;2-superdesk-app;3-superdesk-mall;4-qchqyscjc-mall;")
    private String sourceFrom;

    /**
     * 订单类型-订单来源渠道
     */
    @ApiModelProperty(value = "订单类型-订单来源渠道")
    private String serviceName;

    /**
     * 统一订单 项目ID
     */
    @ApiModelProperty(value = "统一订单 项目ID")
    private Long sysOrgId;

    /**
     * 统一订单 企业ID
     */
    @ApiModelProperty(value = "统一订单 企业ID")
    private Long sysVirtId;

    /**
     * 外部系统 项目ID 一般是指 服务之窗 或 福利商城
     */
    @ApiModelProperty(value = "外部系统 项目ID 一般是指 服务之窗 或 福利商城")
    private Long outOrgId;

    /**
     * 外部系统 企业ID 一般是指 服务之窗 或 福利商城
     */
    @ApiModelProperty(value = "外部系统 企业ID 一般是指 服务之窗 或 福利商城")
    private Long outVirtId;

    @ApiModelProperty(value = "")
    private Integer relationMode;

    @ApiModelProperty(value = "")
    private Long errorCheckRelation01;

    @ApiModelProperty(value = "")
    private Long errorCheckRelation02;

    /**
     * 创建开票申请时产生-统计类-对账单数量
     */
    @ApiModelProperty(value = "创建开票申请时产生-统计类-对账单数量")
    private Integer accountingOrderQuantity;

    /**
     * 创建开票申请时产生-统计类-
     */
    @ApiModelProperty(value = "创建开票申请时产生-统计类-")
    private Integer orderQuantity;

    /**
     * 创建开票申请时产生-统计类-
     */
    @ApiModelProperty(value = "创建开票申请时产生-统计类-")
    private BigDecimal orderAmount;

    /**
     * 创建开票申请时产生-统计类-订单商品item数量累加
     */
    @ApiModelProperty(value = "创建开票申请时产生-统计类-订单商品item数量累加")
    private Integer goodsQuantity;

    /**
     * 创建开票申请时产生-统计类-订单商品item的数量累加
     */
    @ApiModelProperty(value = "创建开票申请时产生-统计类-订单商品item的数量累加")
    private Integer goodsItemQuantity;

    /**
     * 统计-涉及到的订单流水数
     */
    @ApiModelProperty(value = "统计-涉及到的订单流水数")
    private Integer creditQuantity;

    /**
     * 创建开票申请时产生-统计类-商品销售金额(统一订单)
     */
    @ApiModelProperty(value = "创建开票申请时产生-统计类-商品销售金额(统一订单)")
    private BigDecimal goodsAmount;

    /**
     * 创建开票申请时产生-统计类-商品成本金额(统一订单)
     */
    @ApiModelProperty(value = "创建开票申请时产生-统计类-商品成本金额(统一订单)")
    private BigDecimal goodsCostAmount;

    /**
     * 创建开票申请时产生-统计类-
     */
    @ApiModelProperty(value = "创建开票申请时产生-统计类-")
    private BigDecimal orderCostAmount;

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

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

    /**
     * 需修正标记:0-正常;1-修正;
     */
    @ApiModelProperty(value = "需修正标记:0-正常;1-修正;")
    private Integer needReviseMark;

    /**
     * 作废部分-作废登记人-后台帐号-应产品要求-做双份
     */
    @ApiModelProperty(value = "作废部分-作废登记人-后台帐号-应产品要求-做双份")
    private Long becomeInvalidUserId;

    /**
     * 作废部分-作废登记人-后台帐号-应产品要求-做双份
     */
    @ApiModelProperty(value = "作废部分-作废登记人-后台帐号-应产品要求-做双份")
    private String becomeInvalidUserName;

    /**
     * 作废部分-作废时间-应产品要求-做双份
     */
    @ApiModelProperty(value = "作废部分-作废时间-应产品要求-做双份")
    private Date becomeInvalidTime;

    /**
     * 作废部分-作废原因-应产品要求-做双份
     */
    @ApiModelProperty(value = "作废部分-作废原因-应产品要求-做双份")
    private String becomeInvalidReason;

    /**
     * 企业信息扩展发票信息快照
     */
    @ApiModelProperty(value = "企业信息扩展发票信息快照")
    private String sysEnterpriseExtInvoiceSnapshot;

    private static final long serialVersionUID = 1L;
}