package com.lframework.xingyun.sc.dto.sale;

import com.alibaba.excel.annotation.format.DateTimeFormat;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.lframework.starter.common.constants.StringPool;
import com.lframework.starter.web.components.validation.IsEnum;
import com.lframework.starter.web.dto.BaseDto;
import com.lframework.xingyun.sc.enums.SaleOrderIsLease;
import com.lframework.xingyun.sc.enums.SaleOrderPurchaseStatus;
import com.lframework.xingyun.sc.enums.SaleOrderStatus;
import java.io.Serializable;
import java.math.BigDecimal;
import java.time.LocalDateTime;
import java.util.Date;
import java.util.List;
import lombok.Data;

@Data
public class SaleOrderFullDto implements BaseDto, Serializable {

  private static final long serialVersionUID = 1L;

  /**
   * ID
   */
  private String id;

  /**
   * 单号
   */
  private String code;

  /**
   * 仓库ID
   */
  private String scId;

  /**
   * 客户ID
   */
  private String customerId;

  /**
   * 销售员ID
   */
  private String salerId;

  /**
   * 商品数量
   */
  private Integer totalNum;

  /**
   * 赠品数量
   */
  private Integer totalGiftNum;

  /**
   * 销售总金额
   */
  private BigDecimal totalAmount;

  /**
   * 备注
   */
  private String description;

  /**
   * 创建人
   */
  private String createBy;

  /**
   * 创建时间
   */
  private LocalDateTime createTime;

  /**
   * 修改人
   */
  private String updateBy;

  /**
   * 修改时间
   */
  private LocalDateTime updateTime;

  /**
   * 审核人
   */
  private String approveBy;

  /**
   * 审核时间
   */
  private LocalDateTime approveTime;

  /**
   * 状态
   */
  private SaleOrderStatus status;

  /**
   * 拒绝原因
   */
  private String refuseReason;

  /**
   * 本单利润
   */
  private BigDecimal thisOrderProfit;

  /**
   * 客户费用
   */
  private BigDecimal customMoney;


  /**
   * 运费
   */
  private BigDecimal shippingFee;

  /**
   * 是否租赁订单
   */
  private Integer isLease;


  /**
   * 采购状态，0未采购、2完成采购、3部分采购
   */
 // @IsEnum(message = "格式不正确！", enumClass = SaleOrderPurchaseStatus.class)
  private Integer purchaseStatus;

  /**
   * 租赁起始日期
   */
  @DateTimeFormat(StringPool.DATE_PATTERN)
  @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
  private LocalDateTime leaseStartTime;

  /**
   * 租赁结束日期
   */
  @DateTimeFormat(StringPool.DATE_PATTERN)
  @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
  private LocalDateTime leaseEndTime;

  /**
   * 订单明细
   */
  private List<OrderDetailDto> details;


  /**
   * 采购价
   */
  private BigDecimal purchaseDecimal;

  /**
   * 采购总价
   */
  private BigDecimal totalPurchasePrice;




  @Data
  public static class OrderDetailDto implements BaseDto, Serializable {

    private static final long serialVersionUID = 1L;

    /**
     * 明细ID
     */
    private String id;

    /**
     * 组合商品ID
     */
    private String mainProductId;

    /**
     * 商品ID
     */
    private String productId;

    /**
     * 采购数量
     */
    private Integer orderNum;

    /**
     * 原价
     */
    private BigDecimal oriPrice;

    /**
     * 现价
     */
    private BigDecimal taxPrice;

    /**
     * 折扣（%）
     */
    private BigDecimal discountRate;

    /**
     * 是否赠品
     */
    private Boolean isGift;

    /**
     * 税率（%）
     */
    private BigDecimal taxRate;

    /**
     * 备注
     */
    private String description;

    /**
     * 排序编号
     */
    private Integer orderNo;

    /**
     * 采购价
     */
    private BigDecimal purchaseDecimal;

    /**
     * 采购总价
     */
    private BigDecimal totalPurchasePrice;
  }
}
