package com.qdb.sdk.model.request;

import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;

import java.math.BigDecimal;
import java.util.List;

/**
 * 订单上传请求参数
 * <p>
 * 对应 Method: {@code foonsu.erp.orders.save}
 * </p>
 *
 * @author qdb-sdk
 * @version 1.0.0
 */
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
public class OrderSaveRequest {

    /** 店铺ID（ERP内店铺主键ID） */
    private Long shopId;

    /** 平台交易单号 */
    private String tradeNo;

    /** 平台订单交易状态：01-待付款，02-待发货，03-已发货待签收，10-已签收，11-交易关闭 */
    private String platformTradeStatus;

    /** 订单退款状态：0-未退款，1-已退款，2-部分退款，4-退款中 */
    private String platformRefundStatus;

    /** 订单的交易类型：1-代收货款，2-在线交易，3-线下交易 */
    private String orderTypeCode;

    /** 运费 */
    private BigDecimal postAmount;

    /** 付款金额 单位元 */
    private BigDecimal payAmount;

    /** 收件人省份 */
    private String receiverProvince;

    /** 收件人城市 */
    private String receiverCity;

    /** 收件人区/县级市 */
    private String receiverDistrict;

    /** 收件人地址 */
    private String receiverAddress;

    /** 收件人名称 */
    private String receiverName;

    /** 收件人手机（与电话二选一入参即可） */
    private String receiverMobile;

    /** 收件人电话（与手机二选一入参即可） */
    private String receiverPhone;

    /** 发件人省份 */
    private String sendProvince;

    /** 发件人城市 */
    private String sendCity;

    /** 发件人区/县级市 */
    private String sendDistrict;

    /** 发件人地址 */
    private String sendAddress;

    /** 发件人名称 */
    private String sendName;

    /** 发件人手机（与电话二选一入参即可） */
    private String sendMobile;

    /** 发件人电话（与手机二选一入参即可） */
    private String sendPhone;

    /** 发件人邮编 */
    private String sendZipCode;

    /** 订单商品集合 */
    private List<OrderGoods> ordersGoods;

    /** 买家留言 */
    private String buyerMessage;

    /** 买家昵称 */
    private String buyerNick;

    /** 卖家备注 */
    private String sellerMessage;

    /** 会员编码 */
    private String vipNo;

    /** 会员名称 */
    private String vipName;

    /** 广告ID */
    private String advertId;

    /** 订单发票集合 */
    private List<OrderInvoice> ordersInvoice;

    /** 订单支付信息集合 */
    private List<OrderPay> ordersPay;

    /** 预售类型：0-非预售；1-预售 */
    private String presellType;

    /** 指定（预售）发货时间 yyyy-MM-dd HH:mm:ss */
    private String presellDeliveryTime;

    /** 预售付款状态：1-已付款；2-未付尾款；3-未付款（预售单必填） */
    private String payStatus;

    /** 订单付款时间 */
    private String payDate;

    /** 仓库名称，精确匹配 */
    private String warehouseName;

    /** 订单旗帜：0-空；1-红旗；2-黄旗；3-绿旗；4-蓝旗；5-紫旗 */
    private String markLevel;

    /** 运费付款方式：1-寄付；2-收方付；3-第三方付；4-寄付现结 */
    private String paymentOfCharge;

    /** 月结卡号 */
    private String monthlyAccount;

    /** 业务类型 */
    private String carrierProduct;

    /** 物流公司编码 */
    private String logisticsCode;

    /** 物流单号（isYddPush为1时必传） */
    private String logisticsNo;

    /** 是否自流转：1-是；0或null-否 */
    private String isYddPush;

    /** 顺丰同城订单ID */
    private String sftcOrderId;

    /** 分销外部单号 */
    private String extOrderNo;

    /** 订单标识：0-非拆非合；1-合；2-拆 */
    private String orderMark;

    /** 平台物流公司编码（匹配物流使用） */
    private String platformLogisticsCompanyCode;
}
