package com.fs.hisStore.domain;

import com.baomidou.mybatisplus.annotation.TableField;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.fs.common.annotation.Excel;
import com.fs.common.core.domain.BaseEntityTow;
import lombok.Data;
import lombok.EqualsAndHashCode;
import org.springframework.format.annotation.DateTimeFormat;

import java.math.BigDecimal;
import java.time.LocalDate;
import java.time.LocalDateTime;

/**
 * 订单开票记录对象 fs_store_order_bill_log
 *
 * @author fs
 * @date 2025-01-07
 */
@EqualsAndHashCode(callSuper = true)
@Data
public class FsStoreOrderBillLogScrm extends BaseEntityTow {
    private static final long serialVersionUID = 1L;

    /** 订单ID */
    @Excel(name = "订单ID")
    private Long orderId;
    @Excel(name = "药品订单号")
    private String orderCode;

    /** 开票类型0企业1个人 */
    @Excel(name = "开票类型", readConverterExp = "0=企业,1=个人")
    private Integer billType;

    /** 开票订单号 */
    @Excel(name = "开票订单号")
    private String orderNo;

    /** 开票流水号 */
    private String serialNo;

    /** 开票流水号 */
    private String redNo;

    /** 发票代码 */
    private String invoiceCode;

    /** 是否上传API，0是1否 */
    private Integer uploadApi;

    /** 发票号码 */
    @Excel(name = "发票号码")
    private String invoiceNo;

    /** 红字确认单编号 */
    @Excel(name = "红字确认单编号")
    private String billNo;

    /** 红字确认单uuid */
    @Excel(name = "红字确认单uuid")
    private String billUuid;

    /** 冲红订单号 */
    private String redOrderNo;

    /** 数电票号码 */
    private String allElectronicInvoiceNumbe;

    /** 发票种类 */
    @Excel(name = "发票种类")
    private String invoiceKind;

    /** 开票金额 */
    @Excel(name = "开票金额")
    private BigDecimal orderAmount;

    /** 购方名称 */
    @Excel(name = "购方名称")
    private String payerName;

    /** 购方税号 */
    @Excel(name = "购方税号")
    private String payerTaxNo;

    /** 购方地址 */
    private String address;

    /** 购方电话 */
    private String telephone;

    /** 冲红原因 1:销货退回;2:开票有误;3:服务中止;4:发生销售折让 */
    @Excel(name = "冲红原因", readConverterExp = "1=销货退回,2=开票有误,3=服务中止,4=发生销售折让")
    private Integer redReason;

    /** 含底图纸票pdf地址 */
    private String paperPdfUrl;

    /** 冲红时间 */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @Excel(name = "冲红时间", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss")
    private LocalDateTime redTime;

    /** 开票时间 */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @Excel(name = "开票时间", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss")
    private LocalDateTime invoiceTime;

    @Excel(name = "发票图片")
    private String imgUrls;
    /** 发票图片地址 */
    private String pictureUrl;

    /** 发票pdf地址 */
    @Excel(name = "发票pdf")
    private String pdfUrl;

    /** 失败原因 */
    @Excel(name = "失败原因")
    private String failCause;

    /** 发票状态描述 */
    @Excel(name = "发票状态描述")
    private String statusMsg;

    /** 开票状态0未开始1冲红中2 :开票完成（ 最终状 态），其他状态分别为: 20:开票中; 21:开票成功签章中;22:开票失败;24: 开票成功签章失败;3:发票已作废 31: 发票作废中 备注：22、24状态时，无需再查询，请确认开票失败原因以及签章失败原因； 注：请以该状态码区分发票状态 */
    @Excel(name = "开票状态", readConverterExp = "2=开票完成,20=开票中,21=开票成功签章中,22=开票失败,24=开票成功签章失败,3=发票已作废,31=发票作废中")
    private Integer status;
    /** ： 01 无需确认 02 销方录入待购方确认 03 购方录入待销方确认 04 购销双方已确认 05 作废（销方录入购方否认） 06 作废（购方录入销方否认） 07 作废（超72小时未确认） 08 作废（发起方已撤销） 09 作废（确认后撤销） 15 申请中 16 申请失败 */
    @Excel(name = "红字确认单状态", readConverterExp = "01=冲红")
    private String redStatus;


    private String json;




    @DateTimeFormat(pattern = "yyyy-MM-dd")
    @TableField(exist = false)
    private LocalDate sBillTime;
    @DateTimeFormat(pattern = "yyyy-MM-dd")
    @TableField(exist = false)
    private LocalDate eBillTime;
    @DateTimeFormat(pattern = "yyyy-MM-dd")
    @TableField(exist = false)
    private LocalDate sRedTime;
    @DateTimeFormat(pattern = "yyyy-MM-dd")
    @TableField(exist = false)
    private LocalDate eRedTime;
    @TableField(exist = false)
    private Long companyId;
    @TableField(exist = false)
    private Long companyUserId;

}
