package com.jwipc.contract.entity;

import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.Getter;
import lombok.Setter;
import org.springframework.format.annotation.DateTimeFormat;

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

/**
 * <p>
 * MRo合同付款申请明细表
 * </p>
 *
 * @author 邓京术
 * @since 2025-12-10
 */
@Getter
@Setter
@TableName("fin_contract_payment_apply_detail")
public class ContractPaymentApplyDetail implements Serializable {

    private static final long serialVersionUID = 1L;

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

    /**
     * 行号
     */
    private String itemNo;

    /**
     * 款项类型
     */
    private String amountType;

    /**
     * 发票正负向标识 1:正向 2:负向
     */
    private Integer posNegFlag;

    /**
     * 到货付款申请ID
     */
    private Long cppId;

    /**
     * 到货付款申请单号
     */
    private String cppNo;

    /**
     * 采购订单号
     */
    private String poCode;

    /**
     * 订单行号
     */
    private String poItemNo;

    /**
     * 订单数量
     */
    private BigDecimal poNum;

    /**
     * 物料编码
     */
    private String materialCode;

    /**
     * 物料描述
     */
    private String materialDesc;

    /**
     * 单位
     */
    private String materialUnit;

    /**
     * 税率代码
     */
    private String taxCode;

    /**
     * 税率描述
     */
    private String taxDesc;

    /**
     * 税率值(0.13)
     */
    private BigDecimal taxValue;

    /**
     * 未税单价
     */
    private BigDecimal ntPrice;

    /**
     * 含税单价
     */
    private BigDecimal itPrice;

    /**
     * 未税金额
     */
    private BigDecimal ntAmount;

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

    /**
     * 税额
     */
    private BigDecimal dtAmount;

    /**
     * 预算内金额
     */
    private BigDecimal budInnerMoney;

    /**
     * 预算外金额
     */
    private BigDecimal budOutMoney;

    /**
     * 行备注
     */
    private String itemRemark;

//    /**
//     * 询源采购组编码
//     */
//    private String seekPgCode;
//
//    /**
//     * 询源采购组名称
//     */
//    private String seekPgName;

    /**
     * 订单付款方式编码
     */
    private String ppwCode;

    /**
     * 订单付款方式描述
     */
    private String ppwDesc;

    /**
     * 订单付款条件编码
     */
    private String ppcCode;

    /**
     * 订单付款条件描述
     */
    private String ppcDesc;

    /**
     * 物料凭证
     */
    private String mvCode;

    /**
     * 物料凭证行号
     */
    private String mvItemNo;

    /**
     * 物料凭证过账日期
     */
    private LocalDateTime mvPostDate;

    /**
     * 物料凭证入库数量
     */
    private BigDecimal mvNum;

    /**
     * SAP发票号
     */
    private String invoiceNo;

    /**
     * SAP发票行项目号
     */
    private String invoiceItemNo;

    /**
     * SAP发票年度
     */
    private String invoiceYear;

    /**
     * SAP发票过账日期
     */
    private LocalDateTime invoicePostDate;

    /**
     * SAP发票文本
     */
    private String invoiceText;

    /**
     * 发票付款方式编码
     */
    private String ipwCode;

    /**
     * 发票付款方式描述
     */
    private String ipwDesc;

    /**
     * 发票付款条件编码
     */
    private String ipcCode;

    /**
     * 发票付款条件描述
     */
    private String ipcDesc;

    /**
     * (集采)采购凭证编号
     */
    private String jcPoCode;

    /**
     * (集采)采购凭证行号
     */
    private String jcPoItemNo;

    /**
     * 集采工厂
     */
    private String jcFactoryCode;

    /**
     * 删除标识 0:未删除 1:已删除
     */
    private Integer deleteFlag;

    /**
     * 数据主键 款项类型_正负向标识_采购订单号_订单行号_发票年度_发票号_发票行号
     */
//    private String dataKey;

    /**
     * 寻源单据id
     */
    private Long sourceId;

    /**
     * 合同号
     */
    private String contractNo;

    /**
     * 合同名称
     */
    private String contractName;
    private String contractType;

    /**
     * 付款阶段
     */
    private String paymentAround;
    /**
     * 付款笔数
     */
    private String paymentStage;
    /**
     * 付款方式
     */
    private String paymentWay;
    /**
     * 阶段付款金额
     */
    private BigDecimal aroundAmount;




    /**
     * 科目类别 【po_item_subject】 A-资产,C-销售订单,E-有KD-CO的客户,K-成本中心
     */
    private String subjectTypeCode;
//    private String accountStatementNo;
    private BigDecimal strikePriceAmount;

    /**
     * 实际未付金额
     */
    private BigDecimal actualUnpaidAmount;

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

    /**
     * 折扣金额
     */
    private BigDecimal discountMoney;
    @DateTimeFormat(pattern = "yyyy-MM-dd")
    private LocalDateTime expectationPaymentDate;
}
