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

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

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

/**
 * @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 InvoiceApplySupplier implements Serializable {

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

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

    /**
     * 对账单Id
     */
    @ApiModelProperty(value = "对账单Id")
    private Long accountingOrderId;

    /**
     * 对账单编号
     */
    @ApiModelProperty(value = "对账单编号")
    private String accountingOrderSn;

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

    /**
     * 发票申请号
     */
    @ApiModelProperty(value = "发票申请号")
    private String invoiceApplySn;

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

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

    /**
     * 开票抬头
     */
    @ApiModelProperty(value = "开票抬头")
    private String invoiceTitle;

    /**
     * 平台方扩展发票信息.id invoiceBankInfo.id
     */
    @ApiModelProperty(value = "平台方扩展发票信息.id invoiceBankInfo.id")
    private Long sysPlatformExtInvoiceId;

    /**
     * 作废-供应商|商户信息扩展发票信息.id sysSupplierExtInvoiceId
     */
    @ApiModelProperty(value = "作废-供应商|商户信息扩展发票信息.id sysSupplierExtInvoiceId")
    private Long sysSupplierExtInvoiceId;

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

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

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

    @ApiModelProperty(value = "")
    private String saleName;

    /**
     * 商户是否导出 0-未导出;大于等于1-已导出;-供应商结算2.0
     */
    @ApiModelProperty(value = "商户是否导出 0-未导出;大于等于1-已导出;-供应商结算2.0")
    private Integer saleIsExport;

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

    /**
     * 发票申请部分 - 发票申请人名字 - 后台帐号
     */
    @ApiModelProperty(value = "发票申请部分 - 发票申请人名字 - 后台帐号")
    private String applyUserName;

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

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

    /**
     * 发票申请审核部分 - 审核人名字 - 后台帐号
     */
    @ApiModelProperty(value = "发票申请审核部分 - 审核人名字 - 后台帐号")
    private String auditUserName;

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

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

    /**
     * 开票进展部分 - 开票进展状态: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;

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

    /**
     * 发票登记部分 - 发票登记状态: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;

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

    /**
     * 寄票登记部分 - 快递单号
     */
    @ApiModelProperty(value = "寄票登记部分 - 快递单号")
    private String expressNo;

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

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

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

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

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

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

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

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

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

    /**
     * 创建开票申请时产生-统计类-对账单数量
     */
    @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 BigDecimal goodsAmount;

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

    /**
     * 服务编码-定义:始于订单流上标志的服务编码及从订单流衍生出来的及相关数据的来源标识-引用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 sysPlatformExtInvoiceSnapshot;

    /**
     * 作废-供应商|商户信息扩展发票信息快照
     */
    @ApiModelProperty(value = "作废-供应商|商户信息扩展发票信息快照")
    private String sysSupplierExtInvoiceSnapshot;

    private static final long serialVersionUID = 1L;
}