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 BillingAndCollectionResDTO {
    /**
     * 主键
     */
    @JsonSerialize(using = ToStringSerializer.class)
    private Long id;


    /**
     * 项目Code
     */
    @JsonProperty("engcode")
    @JSONField(name = "engcode")
    private String engCode;

    /**
     * 税前金额
     */
    @JsonProperty("pertaxmoney")
    @JSONField(name = "pertaxmoney")
    private BigDecimal pretaxMoney;

    /**
     * 税额
     */
    @JsonProperty("taxmoney")
    @JSONField(name = "taxmoney")
    private BigDecimal taxMoney;

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

    /**
     * 发票金额
     */
    @JsonProperty("invoicesmoney")
    @JSONField(name = "invoicesmoney")
    private BigDecimal invoicesMoney;

    /**
     * 发票日期
     */
    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", locale = "zh", timezone = "GMT+8")
    @JsonProperty("invoicestime")
    @JSONField(name = "invoicestime" , format = "yyyy-MM-dd HH:mm:ss")
    private Date invoicesTime;

    /**
     * 发票天数
     */
    @JsonProperty("invoicesdays")
    @JSONField(name = "invoicesdays")
    private Integer invoicesDays;

    /**
     * 收款金额
     */
    @JsonProperty("gatheringmoney")
    @JSONField(name = "gatheringmoney")
    private BigDecimal gatheringMoney;

    /**
     * 收款日期
     */
    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", locale = "zh", timezone = "GMT+8")
    @JsonProperty("gatheringtime")
    @JSONField(name = "gatheringtime" , format = "yyyy-MM-dd HH:mm:ss")
    private Date gatheringTime;

    /**
     * 收款状态
     */
    @JsonProperty("gatheringstatus")
    @JSONField(name = "gatheringstatus")
    private String gatheringStatus;

    /**
     * 账单编号
     */
    @JsonProperty("billnumber")
    @JSONField(name = "billnumber")
    private String billNumber;

    /**
     * 发票编号
     */
    @JsonProperty("invoicesnumber")
    @JSONField(name = "invoicesnumber")
    private String invoicesNumber;

    /**
     * 账单日期
     */
    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", locale = "zh", timezone = "GMT+8")
    @JsonProperty("billtime")
    @JSONField(name = "billtime" , format = "yyyy-MM-dd HH:mm:ss")
    private Date billTime;

}
