package com.jwipc.finance.model.po;

import com.baomidou.mybatisplus.annotation.FieldStrategy;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.Data;
import lombok.Getter;
import lombok.Setter;

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

/**
 * <p>
 * 对账模块-费用匹配单主表
 * </p>
 *
 * @author shenyang.ou
 * @since 2025-10-28
 */
@Data
public class CostMatchingPO implements Serializable {

    private static final long serialVersionUID = 1L;

    /**
     * 数据主键
     */
    private Long id;

    /**
     * 流水号
     */
    private String code;

    /**
     * 付款通知单明细单号(委托单号)
     */
    private String paymentNoticeDetailCode;

    /**
     * 单据类型（fyppd_type）
     */
    private String type;

    /**
     * 采购公司代码
     */
    private String companyCode;

    /**
     * 供应商代码
     */
    private String supplierCode;

    /**
     * 供应商名称
     */
    private String supplierName;

    /**
     * 采购组编码
     */
    private String purchaseGroupCode;

    /**
     * 货币代码
     */
    private String currencyCode;

    /**
     * 发票金额
     */
    private BigDecimal invoiceAmount;

    /**
     * 海关缴款书税额
     */
    private BigDecimal customsPaymentCertificateTaxAmount;

    /**
     * 分摊费用金额
     */
    private BigDecimal sharedExpenseAmount;

    /**
     * 国内税额合计
     */
    private BigDecimal domesticTaxTotalAmount;

    /**
     * 合计请款金额
     */
    private BigDecimal totalReimbursementAmount;

    /**
     * 备注
     */
    private String remark;

    /**
     * 数据状态 1:暂存 2:待采购确认 3:采购拒绝 4:待推送OA审批 5:OA审批中 6:OA审批不通过 7:待财务确认 8:财务拒绝 9:确认通过
     */
    private Integer status;

    /**
     * 过账状态 1:未过账 2:待预制 3:预制失败 4:预制成功 5-过账成功
     */
    private Integer postStatus;

    /**
     * 过账返回的信息
     */
    private String postMsg;

    /**
     * 采购确认时间
     */
    private LocalDateTime purchaseConfirmTime;

    /**
     * 采购确认人
     */
    private Long purchaseConfirmUser;

    /**
     * 财务确认时间
     */
    private LocalDateTime financeConfirmTime;

    /**
     * 财务确认人
     */
    private Long financeConfirmUser;

    /**
     * 创建用户ID
     */
    private Long createUser;
    private String createUserName;

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

    /**
     * 最后更新用户ID
     */
    private Long updateUser;

    /**
     * 最后更新时间
     */
    private LocalDateTime updateTime;

    /**
     * 凭证年度
     */
    private String voucherYear;

    /**
     * 发票凭证号
     */
    private String invoiceVoucher;

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

    /**
     * 过账日期
     */
    private LocalDate postDate;

    /**
     * 附件
     */
    private String files;

    /**
     * 影像编码
     */
    private String imgCode;
    private LocalDateTime imgTime;
    private Long imgUserId;
    /**
     * 删除标识 0:未删除 1:已删除
     */
    private Integer deleteFlag;


    /**
     * 过账操作人
     */
    private Long postUser;

    /**
     * 过账操作时间
     */
    private LocalDateTime postOptTime;

    /**
     * 付款到期日
     */
    @TableField(updateStrategy = FieldStrategy.IGNORED)
    private LocalDateTime paymentExpireDate;

    /**
     * 发票过账日期
     */
    @TableField(updateStrategy = FieldStrategy.IGNORED)
    private LocalDateTime invoicePostDate;

    /**
     * 报关方式；1-自理；2-代理
     */
    private Integer customsType;
}
