package cn.iocoder.yudao.module.order.vo.approval;

import com.fasterxml.jackson.annotation.JsonProperty;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;

import javax.validation.constraints.NotNull;
import java.math.BigDecimal;
import java.util.Date;

@Data
@ApiModel(value = "特价申请详情")
public class OrderSpecialApplyVO {

    @ApiModelProperty(value = "订单头信息")
    private OrderApprovalHeadBaseVO orderApprovalHeadBaseVO;

    @ApiModelProperty(value = "审批id", required = true)
    private Long orderApprovalId;

    @ApiModelProperty(value = "流程表单实例ID")
    private String formId;

    @ApiModelProperty(value = "申请类型：详见字典order_approval_type")
    @NotNull(message = "申请类型不能为空")
    private Integer applyType;

    @ApiModelProperty(value = "订单ID", required = true)
    private Long orderId;

    @ApiModelProperty(value = "订单号", required = true)
    private String orderNo;

    @ApiModelProperty(value = "订单商品ID", required = true)
    private Long orderItemId;

    @ApiModelProperty(value = "商品ID", required = true)
    private Long prodId;

    @ApiModelProperty(value = "产品类型")
    private Integer prodType;

    @ApiModelProperty(value = "产品中文标题")
    private String prodTitleZh;

    @ApiModelProperty(value = "产品英文标题")
    private String prodTitleEn;

    @ApiModelProperty(value = "小计运费")
    private BigDecimal subtotalFreight = BigDecimal.ZERO;

    @ApiModelProperty(value = "原运费(成交单价)")
    private BigDecimal orgFreight = BigDecimal.ZERO;

    @ApiModelProperty(value = "小计清关费")
    private BigDecimal subtotalClearanceFreight = BigDecimal.ZERO;

    @ApiModelProperty(value = "原清关费(成交单价)")
    private BigDecimal orgClearanceFreight = BigDecimal.ZERO;

    @ApiModelProperty(value = "新运费(成交单价)")
    private BigDecimal freight;

    @ApiModelProperty(value = "运费用金额单位ID")
    private Long freightCurrency = 1L;

    @ApiModelProperty(value = "运费体积单位ID")
    private Long freightVolume = 7L;

    @ApiModelProperty(value = "新清关费(成交单价)")
    private BigDecimal clearanceFreight;

    @ApiModelProperty(value = "清关费用金额单位ID")
    private Long clearanceFreightCurrency = 1L;

    @ApiModelProperty(value = "清关费体积单位ID")
    private Long clearanceFreightVolume = 7L;

    @ApiModelProperty(value = "重货/CBM")
    @JsonProperty("wvolume")
    private BigDecimal wVolume;

    @ApiModelProperty(value = "原重货/CBM")
    private BigDecimal orgWVolume;

    @ApiModelProperty(value = "泡货-泡重/kg")
    @JsonProperty("vweight")
    private BigDecimal vWeight;

    @ApiModelProperty(value = "原泡货-泡重/kg")
    private BigDecimal orgVWeight;

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

    @ApiModelProperty(value = "计费方式：0 运费/清关费 1 全包价")
    private Integer charging = 0;

    @ApiModelProperty(value = "佣金ID")
    private Long commission_id;

    @ApiModelProperty(value = "佣金类型：0 无 1 明佣 2 暗佣 3 明佣+暗佣")
    private Integer orgCommissionType = 0;

    @ApiModelProperty(value = "明佣金额(货币、单位必须一致,线路产品单价既是成本价，佣金加单价就时销售价格)")
    private BigDecimal orgLightCommissionAmount = BigDecimal.ZERO;

    @ApiModelProperty(value = "暗佣金额")
    private BigDecimal orgShadeCommissionAmount = BigDecimal.ZERO;

    @ApiModelProperty(value = "佣金类型：0 无 1 明佣 2 暗佣 3 明佣+暗佣")
    private Integer commissionType = 0;

    @ApiModelProperty(value = "明佣金额(货币、单位必须一致,线路产品单价既是成本价，佣金加单价就是销售价格)")
    private BigDecimal lightCommissionAmount = BigDecimal.ZERO;

    @ApiModelProperty(value = "暗佣金额(暗佣金额在成本价种)")
    private BigDecimal shadeCommissionAmount = BigDecimal.ZERO;

    @ApiModelProperty(value = "佣金货币ID")
    private Integer commissionCurrencyId = 0;

    @ApiModelProperty(value = "佣金单位ID")
    private Integer commissionVolumeId = 0;

    @ApiModelProperty(value = "审批状态: 0 初始化状态 1 处理中  2 通过 3 不通过 4 已取消")
    private Integer applyStatus = 0;

    @ApiModelProperty(value = "审批结果")
    private String applyResult;

    @ApiModelProperty(value = "抄送人(id逗号拼接)")
    private String ccIds;

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


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

    @ApiModelProperty(value = "申请时间")
    private Date createTime;
}
