package cn.superdesk.uniorder.dto.vo.unified;

import io.swagger.annotations.ApiModelProperty;
import lombok.Data;

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

/**
 * @Description: 订单.商品信息
 * @Author: linjinyu
 * @CreateDate: 2021/1/20 上午11:22
 * @UpdateUser: linjinyu
 * @UpdateDate: 2021/1/20 上午11:22
 * @UpdateRemark: 修改内容
 * @Version: 1.0
 */
@Data
public class UnifiedOrderJoinGoodsDetailVo implements Serializable {

    private static final long serialVersionUID = 7022662380639604726L;

    private Long unifiedOrderId;

    private String orderSn;
    private String orderSnOutTrade;

    @ApiModelProperty("!!!弃用!!! 改用定义 mark by linjinyu at 20220624")
    private String serviceName;
    private String serviceNo;
    private String serviceNoName;

    private Long   projectId;
    private String projectName;

    private Long   purchaseVirtId;
    private String purchaseVirtName;

    @ApiModelProperty("下单人Id")
    private Long   purchaseUserId;
    @ApiModelProperty("下单人姓名")
    private String purchaseUserName;
    @ApiModelProperty("下单人联系电话")
    private String purchasePhone;

    private Long   saleId;
    private String saleName;

    private BigDecimal amount;
    private BigDecimal costAmount;
    private BigDecimal transportAmount;

    private Integer completState;

    private Integer accountingStateSupplier;
    private Integer accountingStateCustomer;

    private Integer payType;
    private String  payTypeName;
    private Integer payState;
    /**
     * 支付状态名称
     */
    private String  payStateName;
    private Integer orderState;
    private String  orderStateName;

    private Integer settlementType;
    private Integer appraiseState;
    private Integer sourceChannel;
    private String  otherParams;
    private String  userType;
    private String  userName;

    private Long createUserId;
    private Long updateUserId;

    @ApiModelProperty("订单 下单时间")
    private Date createTime;
    @ApiModelProperty("订单 更新时间")
    private Date updateTime;
    @ApiModelProperty("订单 支付时间")
    private Date payTime;
    @ApiModelProperty("订单 发货时间")
    private Date sendTime;
    @ApiModelProperty("订单 完成时间")
    private Date finishTime;


    @ApiModelProperty("收货人Id 必须")
    private Long   recUserId;
    @ApiModelProperty("收货人姓名 必须")
    private String recUserName;
    @ApiModelProperty("收货人手机号 必须")
    private String recUserPhone;
    @ApiModelProperty("收货人地址 必须")
    private String recAddress;

    /**
     * 物流单号
     */
    private String expressSn;
    /**
     * 快递拼音简写
     */
    private String express;
    /**
     * 快递名称 eg:京东快递;韵达快运
     */
    private String expressCompany;

    private String remarks;

    private Integer invoiceStatus;
    private String  invoiceStatusName;
    private String  invoiceNumber;
    private String  invoiceApplySn;


    private Long   unifiedOrderGoodsId;
    private Long   goodsId;
    private Long   outSnapshotOrderGoodsId;
    private String goodsName;
    private String goodsAlias;

    private Integer    quantity;
    // 必填 | 商品 单个 销售价
    private BigDecimal price;
    // 必填 | 商品 单个 成本价
    private BigDecimal costPrice;
    private BigDecimal goodsAmount;
    private BigDecimal goodsCostAmount;

    private Integer direction;

    private Long   cateIdLv1;
    private String cateNameLv1;
    private Long   cateIdLv2;
    private String cateNameLv2;
    private Long   cateIdLv3;
    private String cateNameLv3;
    private String selfOption;
    private String unit;

    /**
     * 财务编码
     */
    private String     fiscalCode;
    /**
     * 税务编码
     */
    private String     taxCode;
    /**
     * 税率 %
     */
    private BigDecimal taxRate;

    @ApiModelProperty("商户税率 税率")
    private BigDecimal merchTaxRate;
    @ApiModelProperty("商户税率 编码")
    private String     merchTaxCode;
    @ApiModelProperty("商户税率 ID")
    private Long       merchTaxId;

    @ApiModelProperty("平台税率 税率")
    private BigDecimal operationTaxRate;
    @ApiModelProperty("平台税率 编码")
    private String     operationTaxCode;
    @ApiModelProperty("平台税率 ID")
    private Long       operationTaxId;

    private String goodsParams;

}
