package com.ruoyi.system.domain.vo;

import lombok.Data;

import java.util.Date;

/**
 * 订单发票列表/详情 VO（pos_order_invoice LEFT JOIN pos_store）。
 *
 * @author ruoyi
 * @date 2026-06-16
 */
@Data
public class PosOrderInvoiceVo {

    /** 订单发票 id */
    private Long id;

    /** 订单 id */
    private Long orderId;

    /** 订单号 */
    private String orderNo;

    /** 门店 id */
    private Long storeId;

    /** 门店名称 */
    private String posName;

    /** 发票选择(下单意图) PAPER个人纸本/PHONE_BARCODE手机条码/CITIZEN自然人凭证/LOVE_CODE捐赠/COMPANY公司 */
    private String invoiceChoice;

    /** 发票类型 B2C/B2B */
    private String invoiceCategory;

    /** 买方名称 */
    private String buyerName;

    /** 买方统编 */
    private String buyerUbn;

    /** 接收邮箱 */
    private String buyerEmail;

    /** 载具类型 */
    private String carrierType;

    /** 载具号码 */
    private String carrierNum;

    /** 捐赠码（捐赠发票时填） */
    private String loveCode;

    /** 捐赠机构名 */
    private String loveOrgName;

    /** 发票号 */
    private String invoiceNumber;

    /** 防伪随机码 */
    private String randomNum;

    /** 0未开/1已开/2失败/3作废 */
    private Integer invoiceStatus;

    /** 是否已触发开票 0否1是(出餐开票流程执行过即为1;与 invoiceStatus 独立,管理端发票管理用它筛选已进入开票流程的订单) */
    private Integer issueTriggered;

    /** 含税总额 */
    private Integer totalAmt;

    /** 销售额 */
    private Integer salesAmt;

    /** 税额 */
    private Integer taxAmt;

    /** 失败原因 */
    private String failReason;

    /** ezPay 交易流水号（InvoiceTransNo） */
    private String invoiceTransNo;

    /** 发票条码码值（PrintFlag=Y 才有） */
    private String invoiceBarCode;

    /** 发票左二维码码值（PrintFlag=Y 才有） */
    private String invoiceQrcodeL;

    /** 发票右二维码码值（PrintFlag=Y 才有） */
    private String invoiceQrcodeR;

    /** 申请时间 */
    private Date applyTime;

    /** 开立时间 */
    private Date issueTime;

    /** 作废时间 */
    private Date invalidTime;

    /** 创建时间 */
    private Date createTime;

    // ===== 查询筛选（不映射列） =====

    /** 门店名模糊 */
    private String posNameLike;

    /** 创建时间范围 */
    private String[] dateRange;
    private transient String cretimStart;
    private transient String cretimEnd;
}
