package com.xmomen.module.order.model;

import lombok.Data;

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

import javax.validation.constraints.NotNull;

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


public @Data class UpdateOrder implements Serializable {

    // 订单编号
    private String orderNo;

    // 订单ID
    @NotNull
    private Integer id;

    // 订单类型
    @NotNull
    private Integer orderType;
    
    // 批次号
    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 BigDecimal discountPrice;

    private BigDecimal totalPrice;

    private Date appointmentTime;
    @NotNull
    @NotEmpty
    private List<OrderItem> orderItemList;

    // 订单项
    public static class OrderItem implements Serializable {
        // 商品编码
        @NotNull
        private String itemCode;
        // 订单项ID
        @NotNull
        private Integer orderItemId;
        // 商品数量
        @NotNull
        private BigDecimal itemQty;

        // 获取商品编码
        public String getItemCode() {
            return itemCode;
        }

        // 设置商品编码
        public void setItemCode(String itemCode) {
            this.itemCode = itemCode;
        }

        // 获取订单项ID
        public Integer getOrderItemId() {
            return orderItemId;
        }

        // 设置订单项ID
        public void setOrderItemId(Integer orderItemId) {
            this.orderItemId = orderItemId;
        }

        // 获取商品数量
        public BigDecimal getItemQty() {
            return itemQty;
        }

        // 设置商品数量
        public void setItemQty(BigDecimal itemQty) {
            this.itemQty = itemQty;
        }
    }

}
