package cn.nianxx.thhotel.workflows.reservation.domain;

import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import java.time.LocalDateTime;

/**
 * Reservation Proforma Invoice 生成记录实体。
 */
@TableName("workflow_reservation_invoice_generation")
public class ReservationInvoiceGenerationEntity {

    /** Invoice 生成记录 ID。 */
    @TableId(type = IdType.ASSIGN_ID)
    private Long id;
    /** 酒店 ID。 */
    private String hotelId;
    /** 生成来源类型：MANUAL、TASK、ORDER。 */
    private String sourceType;
    /** 可选关联订单 ID。 */
    private Long orderId;
    /** 可选关联任务 ID。 */
    private Long taskId;
    /** 可选来源消息 ID。 */
    private Long sourceMessageId;
    /** 模板编码。 */
    private String templateCode;
    /** 模板版本。 */
    private String templateVersion;
    /** 归一化后的 Invoice 业务字段 JSON。 */
    private String invoicePayloadJson;
    /** 后端计算金额摘要 JSON。 */
    private String calculatedTotalsJson;
    /** 生成 Excel OSS 对象 Key。 */
    private String generatedExcelObjectKey;
    /** 生成 PDF OSS 对象 Key。 */
    private String pdfObjectKey;
    /** 生成 PDF 访问 URL。 */
    private String pdfUrl;
    /** 生成状态。 */
    private String generationStatus;
    /** 安全错误码。 */
    private String safeErrorCode;
    /** 安全错误摘要。 */
    private String safeErrorSummary;
    /** 创建人用户标识。 */
    private String createdBy;
    /** 记录创建 UTC 时间。 */
    private LocalDateTime createdAt;
    /** 记录更新 UTC 时间。 */
    private LocalDateTime updatedAt;

    public Long getId() { return id; }
    public void setId(Long id) { this.id = id; }
    public String getHotelId() { return hotelId; }
    public void setHotelId(String hotelId) { this.hotelId = hotelId; }
    public String getSourceType() { return sourceType; }
    public void setSourceType(String sourceType) { this.sourceType = sourceType; }
    public Long getOrderId() { return orderId; }
    public void setOrderId(Long orderId) { this.orderId = orderId; }
    public Long getTaskId() { return taskId; }
    public void setTaskId(Long taskId) { this.taskId = taskId; }
    public Long getSourceMessageId() { return sourceMessageId; }
    public void setSourceMessageId(Long sourceMessageId) { this.sourceMessageId = sourceMessageId; }
    public String getTemplateCode() { return templateCode; }
    public void setTemplateCode(String templateCode) { this.templateCode = templateCode; }
    public String getTemplateVersion() { return templateVersion; }
    public void setTemplateVersion(String templateVersion) { this.templateVersion = templateVersion; }
    public String getInvoicePayloadJson() { return invoicePayloadJson; }
    public void setInvoicePayloadJson(String invoicePayloadJson) { this.invoicePayloadJson = invoicePayloadJson; }
    public String getCalculatedTotalsJson() { return calculatedTotalsJson; }
    public void setCalculatedTotalsJson(String calculatedTotalsJson) { this.calculatedTotalsJson = calculatedTotalsJson; }
    public String getGeneratedExcelObjectKey() { return generatedExcelObjectKey; }
    public void setGeneratedExcelObjectKey(String generatedExcelObjectKey) { this.generatedExcelObjectKey = generatedExcelObjectKey; }
    public String getPdfObjectKey() { return pdfObjectKey; }
    public void setPdfObjectKey(String pdfObjectKey) { this.pdfObjectKey = pdfObjectKey; }
    public String getPdfUrl() { return pdfUrl; }
    public void setPdfUrl(String pdfUrl) { this.pdfUrl = pdfUrl; }
    public String getGenerationStatus() { return generationStatus; }
    public void setGenerationStatus(String generationStatus) { this.generationStatus = generationStatus; }
    public String getSafeErrorCode() { return safeErrorCode; }
    public void setSafeErrorCode(String safeErrorCode) { this.safeErrorCode = safeErrorCode; }
    public String getSafeErrorSummary() { return safeErrorSummary; }
    public void setSafeErrorSummary(String safeErrorSummary) { this.safeErrorSummary = safeErrorSummary; }
    public String getCreatedBy() { return createdBy; }
    public void setCreatedBy(String createdBy) { this.createdBy = createdBy; }
    public LocalDateTime getCreatedAt() { return createdAt; }
    public void setCreatedAt(LocalDateTime createdAt) { this.createdAt = createdAt; }
    public LocalDateTime getUpdatedAt() { return updatedAt; }
    public void setUpdatedAt(LocalDateTime updatedAt) { this.updatedAt = updatedAt; }
}
