package com.prolog.rdc.tms.model.dto.pay;

import com.fasterxml.jackson.annotation.JsonFormat;
import com.prolog.rdc.tms.model.dto.common.BmsBaseDTO;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import org.springframework.format.annotation.DateTimeFormat;

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


@Data
public class BmsBillPayFeeDetailDTO extends BmsBaseDTO {

    @ApiModelProperty(value = "ID")
    private Long id;

    @ApiModelProperty(value = "单据编号 运单编号/派车单编号")
    private String billNo;

    @ApiModelProperty(value = "派车单/运单 主键ID")
    private Long billId;

    @ApiModelProperty(value = "支出费用类型   1 支出托运费用, 2 支出司机费用")
    private Integer payFeeType;

    @ApiModelProperty(value = "费用编码")
    private String expenseCode;

    @ApiModelProperty(value = "费用名称")
    private String expenseName;

    @ApiModelProperty(value = "费用类别")
    private Integer expenseType;

    @ApiModelProperty(value = "费用类别")
    private String expenseTypeName;

    @ApiModelProperty(value = "费用科目编码")
    private String expenseAccountCode;

    @ApiModelProperty(value = "费用科目名称")
    private String expenseAccountName;

    @ApiModelProperty(value = "金额")
    private BigDecimal amount;

    @ApiModelProperty(value = "税点")
    private String taxPoint;

    @ApiModelProperty(value = "含税金额")
    private BigDecimal taxAmt;

    @ApiModelProperty(value = "1:税前，0：税后")
    private Integer isPreTax;

    @ApiModelProperty(value = "无税金额")
    private BigDecimal noTaxAmt;

    @ApiModelProperty(value = "税额")
    private BigDecimal tax;

    @ApiModelProperty(value = "分摊到每一单 1：是，0：否")
    private String isShare;

    @ApiModelProperty(value = "费用说明")
    private String memo;

    @ApiModelProperty(value = "费用单号")
    private String expenseNo;

    @ApiModelProperty(value = "费用状态 EXPENSE_STATUS 0：新增 1：审核中 2:正常")
    private Integer expenseStatus;
    private String expenseStatusName;

    @ApiModelProperty(value = "结算状态 CHECK_STATUS 0：未结算，1：对账提交，2：对账确认，3：结算单生成 4 结算单审核")
    private Integer checkStatus;
    private String checkStatusName;

    @ApiModelProperty(value = "费用来源 1:价格表生成，2：手工录入")
    private Integer billingSource;
    private String billingSourceName;

    @ApiModelProperty(value = "费用状态 0：新增，1：计费成功")
    private Integer billingStatus;
    private String billingStatusName;

    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
    @ApiModelProperty(value = "计费时间")
    private Date billingDate;

    @ApiModelProperty(value = "计费合同")
    private String billingContract;

    @ApiModelProperty(value = "计费价格表")
    private String billingPrice;

    @ApiModelProperty(value = "计费类型 EXPENSE_CLASSIFY")
    private String billingType;
    private String billingTypeName;

    @ApiModelProperty(value = "计费失败原因")
    private String billingFailReason;

    @ApiModelProperty(value = "扩展字段1")
    private String attrStr1;

    @ApiModelProperty(value = "扩展字段2")
    private String attrStr2;

    @ApiModelProperty(value = "扩展字段3")
    private String attrStr3;

    @ApiModelProperty(value = "扩展字段4")
    private String attrStr4;

    @ApiModelProperty(value = "扩展字段5")
    private String attrStr5;

    @ApiModelProperty(value = "包裹id")
    private Long packageId;

    @ApiModelProperty(value = "包裹号")
    private String packageCode;

}