package cn.superdesk.uniorder.dto.receive.consumer.superdeskmall.opcenter;


import cn.superdesk.uniorder.dto.receive.consumer.BaseReceiveParam;
import lombok.Data;
import org.springframework.format.annotation.DateTimeFormat;

import javax.validation.Valid;
import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotEmpty;
import javax.validation.constraints.NotNull;
import java.math.BigDecimal;
import java.util.Date;
import java.util.List;
@Data
public class UnifiedFlscAccountingOrderParam extends BaseReceiveParam {
    @NotNull
    private int orderBizTypeId;//订单业务类型id
    @NotBlank
    private String bizOrderId;//业务订单id
    @NotBlank
    private String orderSn;//订单编号
    private String parentOrderSn;//父订单编号
    private String parentOrderId;//父订单id
    private String thirdPartyOrderSn;//第三方订单编号
    @NotBlank
    private String orderTypeCode;//订单类型编码
    @NotNull
    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private Date orderCreateTime;//订单创建时间
    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private Date tradingTime;//订单支付/退款时间
    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private Date sendTime;//订单发货时间
    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private Date finishTime;//订单完成时间
    @NotBlank
    private String operatorId;//运营商id
    @NotBlank
    private String operatorName;//运营商名称
    @NotBlank
    private String orgId;//项目id
    private String orgName;//项目名称
    @NotBlank
    private String enterpriseId;//企业id
    @NotBlank
    private String enterpriseName;//企业名称
    private String buyerId;//下单人id
    private String buyerName;//下单人姓名
    private String buyerDeptId;//下单人部门id
    private String buyerDeptName;//下单人部门名称
    private String buyerMobile;//下单人手机号码
    @NotBlank
    private String supplierId;//供应商id
    @NotBlank
    private String supplierName;//供应商名称
    @NotNull
    private BigDecimal orderGoodsAmount;//订单商品金额（不含运费）
    @NotNull
    private BigDecimal orderNegotiatedAmount;//订单协议金额
    @NotNull
    private BigDecimal orderPrice;//订单金额（实付金额）
    @NotNull
    private BigDecimal orderCostPrice;//订单成本金额（含商户承担运费）
    private BigDecimal transportAmount;//运费
    private BigDecimal merchantTransportAmount;//商户承担运费
    @NotNull
    private BigDecimal discountAmount;//优惠金额
    private Integer platformAftersaleTypeId;//平台售后类型id
    @NotBlank
    private String bizOrderPayTypeId;//业务订单支付方式id
    @NotBlank
    private String bizOrderPayType;//业务订单支付方式名称
    @NotBlank
    private String bizOrderStatusId;//业务订单状态id
    @NotBlank
    private String bizOrderStatusName;//业务订单状态名称
    @NotNull
    private Integer transactionStatusId;//交易状态id
    private String orderRemark;//订单备注
    private String merchantRemark;//商家备注
    private String consignee;//收货人姓名
    private String consigneeMobile;//收货人电话
    private String consigneeAddress;//收货地址
    private String distributionTypeId;//配送方式id
    private String distributionType;//配送方式名称
    private String expressCode;//物流快递编码
    private String expressName;//物流快递名称
    private String expressTrackingNo;//物流快递单号
    private String refundOriginOrderSn;//退单原单号
    @Valid
    @NotEmpty
    private List<UnifiedFlscAccountingOrderGoodsParam> orderGoodsList;//订单商品列表
    @Valid
    @NotEmpty
    private List<UnifiedFlscOrderCreditParam> orderCreditList;//订单流水列表
}