package com.jwipc.contract.model.po;

import lombok.Data;

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

/**
 * <p>
 *
 * </p>
 *
 * @author wt
 * @version 1.0
 * @since 2024/3/8
 */
@Data
public class CreateContractPayDetailPO implements Serializable {

    /**
     * 明细ID
     */
    private Long id;
    /**
     * 相关关联表明细id
     */
    private Long detailId;

    /**
     * 申请行号
     */
    private String itemNo;
    /**
     * 付款阶段行号
     */
    private String lineNo;
    private String contractTitle;
    /**
     * 申请单号
     */
    private String appNo;

    /**
     * 合同类型
     */
    private String contractType;

    /**
     * 款项类型 Z001:预付款 Z003:票到付款
     */
    private String amountType;
    /**
     * 发票正负向标识 1:正向 2:负向
     */
    private Integer posNegFlag;
    /**
     * 款项类型描述
     */
    private String amountTypeDesc;
    /**
     * 采购订单号
     */
    private String poCode;
    /**
     * 订单行号
     */
    private String poItemNo;
    /**
     * 订单数量
     */
    private BigDecimal poNum;
    /**
     * 物料编码
     */
    private String materialCode;
    /**
     * 物料描述
     */
    private String materialDesc;
    /**
     * 单位
     */
    private String materialUnit;
    /**
     * 询源采购组编码
     */
    private String seekPgCode;
    /**
     * 询源采购组名称
     */
    private String seekPgName;
    /**
     * 税率值(0.13)
     */
    private BigDecimal taxValue;
    /**
     * 税率编码
     */
    private String taxCode;
    /**
     * 税率描述
     */
    private String taxDesc;
    /**
     * 税率编码及描述 如:(J5)13% 进项税专用发票
     */
    private String taxCodeDesc;
    /**
     * 未税单价
     */
    private BigDecimal ntPrice;
    /**
     * 未税金额
     */
    private BigDecimal ntAmount;
    /**
     * 税额
     */
    private BigDecimal dtAmount;
    /**
     * 含税单价
     */
    private BigDecimal itPrice;
    /**
     * 含税金额
     */
    private BigDecimal itAmount;
    /**
     * 可申请付款金额
     */
    private BigDecimal applyAmount;
    /**
     * 本次申请预算内金额
     */
    private BigDecimal budInnerMoney = BigDecimal.ZERO;
    /**
     * 本次申请预算外金额
     */
    private BigDecimal budOutMoney = BigDecimal.ZERO;
    /**
     * 已预付金额/已付款金额
     */
    private BigDecimal alreadyPaymentAmount;
    /**
     * 已申请金额
     */
    private BigDecimal alreadyApplyAmount;
    /**
     * 物料凭证号
     */
    private String mvCode;
    /**
     * 物料凭证行号
     */
    private String mvItemNo;
    /**
     * 物料凭证过账日期
     */
    private String mvPostDate;
    /**
     * 入库数量
     */
    private BigDecimal mvNum;
    /**
     * 发票年度
     */
    private String invoiceYear;
    /**
     * 发票申请单号
     */
    private String invoiceNo;
    /**
     * 发票申请行号
     */
    private String invoiceItemNo;
    /**
     * 发票凭证过账日期
     */
    private String invoicePostDate;
    /**
     * 发票文本
     */
    private String invoiceText;
    /**
     * PO付款方式代码
     */
    private String ppwCode;
    /**
     * PO付款方式描述
     */
    private String ppwDesc;
    /**
     * PO付款方式代码及描述
     */
    private String ppwCodeDesc;
    /**
     * PO付款条件代码
     */
    private String ppcCode;
    /**
     * PO付款条件描述
     */
    private String ppcDesc;
    /**
     * PO付款条件代码及描述
     */
    private String ppcCodeDesc;
    /**
     * 发票付款方式代码
     */
    private String ipwCode;
    /**
     * 发票付款方式描述
     */
    private String ipwDesc;
    /**
     * 发票付款方式代码及描述
     */
    private String ipwCodeDesc;
    /**
     * 发票付款条件代码
     */
    private String ipcCode;
    /**
     * 发票付款条件描述
     */
    private String ipcDesc;
    /**
     * 发票付款条件代码及描述
     */
    private String ipcCodeDesc;
    /**
     * (集采)采购凭证编号
     */
    private String jcPoCode;
    /**
     * (集采)采购凭证行号
     */
    private String jcPoItemNo;
    /**
     * 集采工厂
     */
    private String jcFactoryCode;


    /**
     * 数据主键(确定唯一性记录) 款项类型_采购订单号_订单行号_发票年度_发票号_发票行号
     */
    private String dataKey;
    /**
     * 行项目备注
     */
    private String itemRemark;

    private Integer status;
    /**
     * 发票年度和发票号
     */
    private String voucherAndYear;
    /**
     * 科目类别
     */
    private String subjectTypeName;
    /**
     * 付款条件
     */
    private String paymentWayDesc;

    private String contractNo;

    private String contractName;
    /**
     * 合同主表ID
     */
    private Long contractId;
    /**
     * 合同主表中合同系统UUID
     */
    private String htUuid;
    /**
     * 科目分配
     */
    private String subjectTypeCode;
    private LocalDateTime expectationPaymentDate;
    /**
     * 采购员
     */
    private String buyer;
    private String accountStatementNo;
    private String purchaseGroup;
    private String cppNo;
    private BigDecimal strikePriceAmount;
    private BigDecimal actualUnpaidAmount;
    private BigDecimal discountMoney;
    private String supplierCode2;
    private String supplierName2;
    //对账月份 2024-08-13 邓京术
    private String accountStatementMonth;
    private String accountImageCode;
    private String invoicedImageCode;


    /**
     * 付款笔数
     */
    private String paymentStage;
    /**
     * 付款比例
     */
    private BigDecimal paymentRatio;
    private String paymentAround;
    private BigDecimal aroundAmount;
    private String paymentWay;

    private List<CreateContractPayDetailPO> CreateContractPayDetailDtos;

//    public String getAmountTypeDesc(){
//        if ("Z001".equals(this.amountType)){
//            return "预付款";
//        }
//        if ("Z003".equals(this.amountType)){
//            return "票到付款";
//        }
//        return "";
//    }
}
