package cn.iocoder.yudao.module.order.dto;

import com.alibaba.excel.annotation.ExcelProperty;
import com.baomidou.mybatisplus.annotation.TableField;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import org.springframework.format.annotation.DateTimeFormat;

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

import static cn.iocoder.yudao.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND;

@Data
@ApiModel("订单应收费用")
public class OrderReceivableFeeDto {

    @ExcelProperty("主键")
    @ApiModelProperty(value = "主键", required = true)
    private Long id;

    @ExcelProperty("收款单id")
    @ApiModelProperty(value = "收款单id")
    private Long receiptId;

    @ExcelProperty("收款单号")
    @ApiModelProperty(value = "收款单号")
    private String receiptNo;

    @ExcelProperty("订单id")
    @ApiModelProperty(value = "订单id")
    private Long orderId;

    @ExcelProperty("订单号")
    @ApiModelProperty(value = "订单号")
    private String orderNo;

    @ExcelProperty("自编号")
    @ApiModelProperty(value = "自编号")
    private String containerNumber;

    @ExcelProperty("订单项商品ID")
    @ApiModelProperty(value = "订单项商品ID")
    private String orderItemId;

    @ExcelProperty("中文标题")
    @ApiModelProperty(value = "中文标题")
    private String titleZh;

    @ExcelProperty("英文标题")
    @ApiModelProperty(value = "英文标题")
    private String titleEn;

    @ExcelProperty("数量")
    @ApiModelProperty(value = "数量")
    private Integer quantity;

    @ExcelProperty("箱数")
    @ApiModelProperty(value = "箱数")
    private Integer num;

    @ExcelProperty("体积/重量")
    @ApiModelProperty(value = "体积/重量")
    private BigDecimal weight;

    @ExcelProperty("体积")
    @ApiModelProperty(value = "体积")
    private BigDecimal volume;

    @ExcelProperty("收款类型(字典 payment_type)")
    @ApiModelProperty(value = "收款类型(字典 payment_type)")
    private Integer collectionType;

    @ExcelProperty("费用类型(字典 receivable_fee_type)")
    @ApiModelProperty(value = "费用类型(字典 receivable_fee_type)")
    private Integer feeType;

    @ExcelProperty("备注")
    @ApiModelProperty(value = "备注")
    private String remark;


    @ApiModelProperty(value = "费用类型描述")
    private String feeTypeLabel;

    @ApiModelProperty(value = "费用类型英文描述")
    private String feeTypeLabelEn;

    @ExcelProperty("汇率")
    @ApiModelProperty(value = "汇率")
    private BigDecimal exchangeRate;

    @ExcelProperty("货币id")
    @ApiModelProperty(value = "货币id")
    private Long currencyId;

    @ExcelProperty("单价")
    @ApiModelProperty(value = "单价")
    private BigDecimal unitPrice;

    @ExcelProperty("应收总金额")
    @ApiModelProperty(value = "应收总金额")
    private BigDecimal receivableTotalAmount;

    @ExcelProperty("实收总金额")
    @ApiModelProperty(value = "实收总金额")
    private BigDecimal realityTotalAmount;

    @ExcelProperty("优惠金额")
    @ApiModelProperty(value = "优惠金额")
    private BigDecimal discountTotal;

    @ExcelProperty("优惠备注")
    @ApiModelProperty(value = "优惠备注")
    private String discountRemark;

    @ApiModelProperty(value = "是否预付：0 到付 1 预付")
    private Integer isPayAdvance;

    @ExcelProperty("收款状态（0未收款，1收款中，2已收款）")
    @ApiModelProperty(value = "收款状态（0未收款，1收款中，2已收款）")
    private Integer state;

    @ExcelProperty("费用来源：1 订单计算 2 费用申请 3 特需费用")
    @ApiModelProperty(value = "费用来源：1 订单计算 2 费用申请 3 特需费用")
    private Integer feeSource;

    @ExcelProperty("申请人")
    @ApiModelProperty(value = "申请人")
    private String author;

    @TableField(exist = false)
    @ApiModelProperty(value = "申请人姓名")
    private String authorName;

    @ExcelProperty("创建时间")
    @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
    @ApiModelProperty(value = "创建时间", required = true)
    private Date createTime;

}
