package com.xmomen.module.order.model;

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

import javax.validation.constraints.NotNull;

import lombok.Data;
import org.hibernate.validator.constraints.NotBlank;
import org.hibernate.validator.constraints.NotEmpty;


public
@Data
class CreateOrder implements Serializable {


    // 订单类型
    @NotNull
    private Integer orderType;


    // 批量编号
    private Integer batchNumber;


    // 订单编号
    private String orderNo;

    // 批量编号
    private String batchNo;


    // 订单来源
    private Integer orderSource;


    // 客户名称
    private String name;


    // 客户代码
    private String memberCode;


    // 客户联系方式
    private String phone;


    // 付款方式
    @NotNull
    private Integer paymentMode;


    // 附加付款方式
    private Integer otherPaymentMode;


    // 支付关系编号
    private String paymentRelationNo;


    // 收货人手机
    @NotNull
    @NotBlank
    private String consigneePhone;


    // 收货人姓名
    @NotNull
    @NotBlank
    private String consigneeName;


    // 收货人地址
    @NotNull
    @NotBlank
    private String consigneeAddress;


    // 订单备注
    private String remark;


    // 折扣
    private Double discount;


    // 是否显示金额
    private Integer isShowAmount;


    // 操作人
    private Integer createUserId;


    // 单位
    private Integer companyId;


    // 客户经理
    private Integer managerId;

    // 预约时间
    private Date appointmentTime;

    // 折扣金额
    private BigDecimal discountPrice;

    // 订单总金额
    private BigDecimal totalPrice;
    @NotNull
    @NotEmpty
    // 订单明细列表
    private List<OrderItem> orderItemList;

    public static class OrderItem implements Serializable {
        // 订单明细ID
        @NotNull
        private Integer orderItemId;
        // 订单明细数量
        @NotNull
        private BigDecimal itemQty;

        public Integer getOrderItemId() {
            return orderItemId;
        }

        public void setOrderItemId(Integer orderItemId) {
            this.orderItemId = orderItemId;
        }

        public BigDecimal getItemQty() {
            return itemQty;
        }

        public void setItemQty(BigDecimal itemQty) {
            this.itemQty = itemQty;
        }
    }

    // 获取客户代码
    public String getMemberCode() {
        return memberCode;
    }

    // 设置客户代码
    public void setMemberCode(String memberCode) {
        this.memberCode = memberCode;
    }

    // 获取订单类型
    public Integer getOrderType() {
        return orderType;
    }

    // 设置订单类型
    public void setOrderType(Integer orderType) {
        this.orderType = orderType;
    }

    // 获取订单来源
    public Integer getOrderSource() {
        return orderSource;
    }

    // 设置订单来源
    public void setOrderSource(Integer orderSource) {
        this.orderSource = orderSource;
    }

    // 获取收货人手机
    public String getConsigneePhone() {
        return consigneePhone;
    }

    // 设置收货人手机
    public void setConsigneePhone(String consigneePhone) {
        this.consigneePhone = consigneePhone;
    }

    // 获取收货人姓名
    public String getConsigneeName() {
        return consigneeName;
    }

    // 设置收货人姓名
    public void setConsigneeName(String consigneeName) {
        this.consigneeName = consigneeName;
    }

    // 获取收货人地址
    public String getConsigneeAddress() {
        return consigneeAddress;
    }

    // 设置收货人地址
    public void setConsigneeAddress(String consigneeAddress) {
        this.consigneeAddress = consigneeAddress;
    }

    // 获取订单备注
    public String getRemark() {
        return remark;
    }

    // 设置订单备注
    public void setRemark(String remark) {
        this.remark = remark;
    }

    // 获取付款方式
    public Integer getPaymentMode() {
        return paymentMode;
    }

    // 设置付款方式
    public void setPaymentMode(Integer paymentMode) {
        this.paymentMode = paymentMode;
    }

    // 获取折扣
    public Double getDiscount() {
        return discount;
    }

    // 设置折扣
    public void setDiscount(Double discount) {
        this.discount = discount;
    }

    // 获取是否显示金额
    public Integer getIsShowAmount() {
        return isShowAmount;
    }

    // 设置是否显示金额
    public void setIsShowAmount(Integer isShowAmount) {
        this.isShowAmount = isShowAmount;
    }

    // 获取订单明细列表
    public List<OrderItem> getOrderItemList() {
        return orderItemList;
    }

    // 设置订单明细列表
    public void setOrderItemList(List<OrderItem> orderItemList) {
        this.orderItemList = orderItemList;
    }

    // 获取客户名称
    public String getName() {
        return name;
    }

    // 设置客户名称
    public void setName(String name) {
        this.name = name;
    }

    // 获取客户联系方式
    public String getPhone() {
        return phone;
    }

    // 设置客户联系方式
    public void setPhone(String phone) {
        this.phone = phone;
    }

    // 获取操作人
    public Integer getCreateUserId() {
        return createUserId;
    }

    // 设置操作人
    public void setCreateUserId(Integer createUserId) {
        this.createUserId = createUserId;
    }

    // 获取支付关系编号
    public String getPaymentRelationNo() {
        return paymentRelationNo;
    }

    // 设置支付关系编号
    public void setPaymentRelationNo(String paymentRelationNo) {
        this.paymentRelationNo = paymentRelationNo;
    }

    // 获取预约时间
    public Date getAppointmentTime() {
        return appointmentTime;
    }

    // 设置预约时间
    public void setAppointmentTime(Date appointmentTime) {
        this.appointmentTime = appointmentTime;
    }

    // 获取单位
    public Integer getCompanyId() {
        return companyId;
    }

    // 设置单位
    public void setCompanyId(Integer companyId) {
        this.companyId = companyId;
    }

    // 获取折扣金额
    public BigDecimal getDiscountPrice() {
        return discountPrice;
    }

    // 设置折扣金额
    public void setDiscountPrice(BigDecimal discountPrice) {
        this.discountPrice = discountPrice;
    }

    // 获取订单总金额
    public BigDecimal getTotalPrice() {
        return totalPrice;
    }

    // 设置订单总金额
    public void setTotalPrice(BigDecimal totalPrice) {
        this.totalPrice = totalPrice;
    }

    // 获取客户经理
    public Integer getManagerId() {
        return managerId;
    }

    // 设置客户经理
    public void setManagerId(Integer managerId) {
        this.managerId = managerId;
    }

    // 获取附加付款方式
    public Integer getOtherPaymentMode() {
        return otherPaymentMode;
    }

    // 设置附加付款方式
    public void setOtherPaymentMode(Integer otherPaymentMode) {
        this.otherPaymentMode = otherPaymentMode;
    }
}
