package com.malk.qiwang.entity;

import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import java.io.Serializable;
import java.math.BigDecimal;
import java.time.LocalDate;
import java.time.LocalDateTime;
import lombok.Getter;
import lombok.Setter;

/**
 * <p>
 * 发票库表
 * </p>
 *
 * @author LQY
 * @since 2026-04-27
 */
@Getter
@Setter
@TableName("invoice_library")
public class InvoiceLibrary implements Serializable {

    private static final long serialVersionUID = 1L;

    /**
     * 自增主键
     */
    @TableId(value = "id", type = IdType.AUTO)
    private Long id;

    /**
     * OA流水号
     */
    private String oaId;

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

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

    /**
     * 发票类型
     */
    private String invoiceType;

    /**
     * 开票日期
     */
    private LocalDate invoiceDate;

    /**
     * 不含税金额
     */
    private BigDecimal amount;

    /**
     * 税额
     */
    private BigDecimal taxAmount;

    /**
     * 含税金额
     */
    private BigDecimal totalAmount;

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

    /**
     * 购买方税号
     */
    private String buyerTaxId;

    /**
     * 销售方名称
     */
    private String sellerName;

    /**
     * 销售方税号
     */
    private String sellerTaxId;

    /**
     * 状态: 0: 流程中 1: 已通过
     */
    private String oaStatus;

    /**
     * 是否已经生成凭证 0: 否 1: 是
     */
    private String invoiceStatus;

    /**
     * 创建时间
     */
    private LocalDateTime createdAt;

    /**
     * 更新时间
     */
    private LocalDateTime updatedAt;

    /**
     * 科目
     */
    private String accountTitle;

    /**
     * 部门
     */
    private String dep;

    /**
     * 报销金额
     */
    private BigDecimal payAmount;
    /**
     * 表单名称
     */
    private String formName;
//    付款主体
    private String paySubject;
//    付款账号
    private String payAccount;

    //银行全称
    private String bankName;

    //是否长摊
    private String isLongTerm;

    //是否有发票
    private String hasInvoice;

    //备注
    private String note;

    //子表报销金额
    private BigDecimal detailAmount;

    //共享税额
    private BigDecimal sharedTaxAmount;

    //共享未税金额
    private BigDecimal sharedAmount;

    //共享税率
    private String sharedRate;
}
