package cn.ey.biz.module.external.api.datacenter.service.responsedto;

import java.math.BigDecimal;
import java.util.Date;

import org.springframework.format.annotation.DateTimeFormat;

import com.alibaba.fastjson.annotation.JSONField;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.fasterxml.jackson.annotation.JsonProperty;
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;

import lombok.Data;

@Data
public class ApPaymentDetailsResDTO {
    /**
     * 主键
     */
    @JsonSerialize(using = ToStringSerializer.class)
    private Long id;

    /**
     * 项目Code
     */
    @JsonSerialize(using = ToStringSerializer.class)
    private String engCode;

    /**
     * 费用类型
     */
    @JsonProperty("costtype")
    @JSONField(name = "costtype")
    private String costType;

    /**
     * 付款方式
     */
    @JsonProperty("paymentmethod")
    @JSONField(name = "paymentmethod")
    private String paymentMethod;

    /**
     * 付款方
     */
    private String payer;

    /**
     * 收款方
     */
    private String payee;

    /**
     * 付款日期
     */
    @DateTimeFormat(pattern = "yyyy/MM/dd")
    @JsonFormat(pattern = "yyyy/MM/dd", locale = "zh", timezone = "GMT+8")
    @JsonProperty("payertime")
    @JSONField(name = "payertime" , format = "yyyy/MM/dd")
    private Date payerTime;

    /**
     * 有无发票
     */
    @JsonProperty("havenotinvoices")
    @JSONField(name = "havenotinvoices")
    private String haveNotInvoices;

    /**
     * 发票类型
     */
    @JsonProperty("invoicetype")
    @JSONField(name = "invoicetype")
    private String invoiceType;

    /**
     * 发票号
     */
    @JsonProperty("invoicenumber")
    @JSONField(name = "invoicenumber")
    private String invoiceNumber;

    /**
     * 付款金额
     */
    @JsonProperty("paymentmoney")
    @JSONField(name = "paymentmoney")
    private BigDecimal paymentMoney;

    /**
     * 付款状态
     */
    @JsonProperty("paymentstatus")
    @JSONField(name = "paymentstatus")
    private String paymentStatus;

    /**
     * 是否分包商
     */
    @JsonProperty("havenotsubcontractor")
    @JSONField(name = "havenotsubcontractor")
    private String haveNotSubcontractor;

    /**
     * 项目编号
     */
    @JsonProperty("projectnumber")
    @JSONField(name = "projectnumber")
    private String projectNumber;

}
