import 'package:huixiang/retrofit/data/order_product_vo.dart';

class SettleOrderInfo {
  int orderNum;
  int productNum;
  int mins;
  dynamic memberVO;
  String postAge;
  String price;
  String benefitDiscountAmount;
  String orderSum;
  String discountAmount;
  List<PromotionInfoListBean> promotionInfoList;
  List<CouponListBean> couponList;
  String threshold;
  String freePostAge;
  List<OrderProductVOList> orderProductList;

  static SettleOrderInfo fromJson(Map<String, dynamic> map) {
    if (map == null) return null;
    SettleOrderInfo settleOrderInfoBean = SettleOrderInfo();
    settleOrderInfoBean.orderNum = map['orderNum'];
    settleOrderInfoBean.productNum = map['productNum'];
    settleOrderInfoBean.mins = map['mins'];
    settleOrderInfoBean.memberVO = map['memberVO'];
    settleOrderInfoBean.postAge = map['postAge'];
    settleOrderInfoBean.price = map['price'];
    settleOrderInfoBean.benefitDiscountAmount = map['benefitDiscountAmount'];
    settleOrderInfoBean.orderSum = map['orderSum'];
    settleOrderInfoBean.discountAmount = map['discountAmount'];
    settleOrderInfoBean.promotionInfoList = List()..addAll(
      (map['promotionInfoList'] as List ?? []).map((o) => PromotionInfoListBean.fromJson(o))
    );
    settleOrderInfoBean.couponList = List()..addAll(
      (map['couponList'] as List ?? []).map((o) => CouponListBean.fromJson(o))
    );
    settleOrderInfoBean.threshold = map['threshold'];
    settleOrderInfoBean.freePostAge = map['freePostAge'];
    settleOrderInfoBean.orderProductList = List()..addAll(
      (map['orderProductList'] as List ?? []).map((o) => OrderProductVOList.fromJson(o))
    );
    return settleOrderInfoBean;
  }

  Map toJson() => {
    "orderNum": orderNum,
    "productNum": productNum,
    "mins": mins,
    "memberVO": memberVO,
    "postAge": postAge,
    "price": price,
    "benefitDiscountAmount": benefitDiscountAmount,
    "orderSum": orderSum,
    "discountAmount": discountAmount,
    "promotionInfoList": promotionInfoList,
    "couponList": couponList,
    "threshold": threshold,
    "freePostAge": freePostAge,
    "orderProductList": orderProductList,
  };
}

/// id : null
/// createTime : null
/// createUser : null
/// updateTime : null
/// updateUser : null
/// tenantCode : null
/// storeId : null
/// orderId : null
/// actInfo : null
/// productId : "1426095718614958080"
/// productName : "ɣ�������̸�"
/// skuId : "1426095718740787200"
/// skuNameStr : "ɳ�� ������ 700ml"
/// skuImg : null
/// buyNum : 1
/// refundNum : null
/// type : null
/// reason : null
/// weight : 0.0
/// applyPrice : "28.00"
/// sellPrice : "28.00"
/// postPay : null
/// isDelete : null
/// discountAmount : null
/// discountPercent : null
/// status : null
/// batch : null

// class OrderProductListBean {
//   dynamic id;
//   dynamic createTime;
//   dynamic createUser;
//   dynamic updateTime;
//   dynamic updateUser;
//   dynamic tenantCode;
//   dynamic storeId;
//   dynamic orderId;
//   dynamic actInfo;
//   String productId;
//   String productName;
//   String skuId;
//   String skuNameStr;
//   dynamic skuImg;
//   int buyNum;
//   dynamic refundNum;
//   dynamic type;
//   dynamic reason;
//   double weight;
//   String applyPrice;
//   String sellPrice;
//   dynamic postPay;
//   dynamic isDelete;
//   dynamic discountAmount;
//   dynamic discountPercent;
//   dynamic status;
//   dynamic batch;
//
//   static OrderProductListBean fromJson(Map<String, dynamic> map) {
//     if (map == null) return null;
//     OrderProductListBean orderProductListBean = OrderProductListBean();
//     orderProductListBean.id = map['id'];
//     orderProductListBean.createTime = map['createTime'];
//     orderProductListBean.createUser = map['createUser'];
//     orderProductListBean.updateTime = map['updateTime'];
//     orderProductListBean.updateUser = map['updateUser'];
//     orderProductListBean.tenantCode = map['tenantCode'];
//     orderProductListBean.storeId = map['storeId'];
//     orderProductListBean.orderId = map['orderId'];
//     orderProductListBean.actInfo = map['actInfo'];
//     orderProductListBean.productId = map['productId'];
//     orderProductListBean.productName = map['productName'];
//     orderProductListBean.skuId = map['skuId'];
//     orderProductListBean.skuNameStr = map['skuNameStr'];
//     orderProductListBean.skuImg = map['skuImg'];
//     orderProductListBean.buyNum = map['buyNum'];
//     orderProductListBean.refundNum = map['refundNum'];
//     orderProductListBean.type = map['type'];
//     orderProductListBean.reason = map['reason'];
//     orderProductListBean.weight = map['weight'];
//     orderProductListBean.applyPrice = map['applyPrice'];
//     orderProductListBean.sellPrice = map['sellPrice'];
//     orderProductListBean.postPay = map['postPay'];
//     orderProductListBean.isDelete = map['isDelete'];
//     orderProductListBean.discountAmount = map['discountAmount'];
//     orderProductListBean.discountPercent = map['discountPercent'];
//     orderProductListBean.status = map['status'];
//     orderProductListBean.batch = map['batch'];
//     return orderProductListBean;
//   }
//
//   Map toJson() => {
//     "id": id,
//     "createTime": createTime,
//     "createUser": createUser,
//     "updateTime": updateTime,
//     "updateUser": updateUser,
//     "tenantCode": tenantCode,
//     "storeId": storeId,
//     "orderId": orderId,
//     "actInfo": actInfo,
//     "productId": productId,
//     "productName": productName,
//     "skuId": skuId,
//     "skuNameStr": skuNameStr,
//     "skuImg": skuImg,
//     "buyNum": buyNum,
//     "refundNum": refundNum,
//     "type": type,
//     "reason": reason,
//     "weight": weight,
//     "applyPrice": applyPrice,
//     "sellPrice": sellPrice,
//     "postPay": postPay,
//     "isDelete": isDelete,
//     "discountAmount": discountAmount,
//     "discountPercent": discountPercent,
//     "status": status,
//     "batch": batch,
//   };
// }

/// id : "1448907890034212864"
/// storeId : "1333246101343436800"
/// bizType : 1
/// fullAmount : "10.00"
/// discountAmount : "8.00"
/// fullNumber : 1
/// discountPercent : 100
/// bizId : ""
/// publishStartTime : "2021-10-01"
/// publishEndTime : "2021-10-29"
/// useStartTime : "2021-10-02"
/// useEndTime : "2021-10-31"
/// promotionId : "0"
/// mid : "1438443365845696512"
/// couponId : "1448902034085380096"
/// receiveTime : "2021-10-15"
/// useTime : null
/// status : 1
/// tenantCode : "1175"
/// type : 1
/// promotionName : "��10-8"
/// usable : true
/// allProduct : true
/// isMaxCoupon:true
/// productList : null

class CouponListBean {
  String id;
  String storeId;
  int bizType;
  String fullAmount;
  String discountAmount;
  int fullNumber;
  int discountPercent;
  String bizId;
  String publishStartTime;
  String publishEndTime;
  String useStartTime;
  String useEndTime;
  String promotionId;
  String mid;
  String couponId;
  String receiveTime;
  dynamic useTime;
  int status;
  String tenantCode;
  int type;
  String promotionName;
  bool usable;
  bool allProduct;
  bool isMaxCoupon;
  dynamic productList;
  bool isEx;


  static CouponListBean fromJson(Map<String, dynamic> map) {
    if (map == null) return null;
    CouponListBean couponListBean = CouponListBean();
    couponListBean.id = map['id'];
    couponListBean.storeId = map['storeId'];
    couponListBean.bizType = map['bizType'];
    couponListBean.fullAmount = map['fullAmount'];
    couponListBean.discountAmount = map['discountAmount'];
    couponListBean.fullNumber = map['fullNumber'];
    couponListBean.discountPercent = map['discountPercent'];
    couponListBean.bizId = map['bizId'];
    couponListBean.publishStartTime = map['publishStartTime'];
    couponListBean.publishEndTime = map['publishEndTime'];
    couponListBean.useStartTime = map['useStartTime'];
    couponListBean.useEndTime = map['useEndTime'];
    couponListBean.promotionId = map['promotionId'];
    couponListBean.mid = map['mid'];
    couponListBean.couponId = map['couponId'];
    couponListBean.receiveTime = map['receiveTime'];
    couponListBean.useTime = map['useTime'];
    couponListBean.status = map['status'];
    couponListBean.tenantCode = map['tenantCode'];
    couponListBean.type = map['type'];
    couponListBean.promotionName = map['promotionName'];
    couponListBean.usable = map['usable'];
    couponListBean.allProduct = map['allProduct'];
    couponListBean.isMaxCoupon = map['isMaxCoupon'];
    couponListBean.productList = map['productList'];
    return couponListBean;
  }

  Map toJson() => {
    "id": id,
    "storeId": storeId,
    "bizType": bizType,
    "fullAmount": fullAmount,
    "discountAmount": discountAmount,
    "fullNumber": fullNumber,
    "discountPercent": discountPercent,
    "bizId": bizId,
    "publishStartTime": publishStartTime,
    "publishEndTime": publishEndTime,
    "useStartTime": useStartTime,
    "useEndTime": useEndTime,
    "promotionId": promotionId,
    "mid": mid,
    "couponId": couponId,
    "receiveTime": receiveTime,
    "useTime": useTime,
    "status": status,
    "tenantCode": tenantCode,
    "type": type,
    "promotionName": promotionName,
    "usable": usable,
    "allProduct": allProduct,
    "isMaxCoupon": isMaxCoupon,
    "productList": productList,

  };
}

/// id : "1437254523520286720"
/// createTime : "2021-09-13 11:19:16"
/// createUser : "1333246101196636160"
/// updateTime : "2021-09-13 17:30:00"
/// updateUser : "0"
/// storeId : "1433719074906439680"
/// name : "�����ŵ�"
/// image : "https://pos.upload.gznl.top/1175/2021/09/44d60dab-0ae3-4d07-b624-50b8ab99d0fc.jpg"
/// description : "1"
/// status : 4
/// applyStartTime : "2021-09-13 11:19:16"
/// applyEndTime : "2021-09-13 11:19:16"
/// activityStartTime : "2021-09-01 00:00:00"
/// activityEndTime : "2021-10-30 00:00:00"
/// doStartTime : null
/// doEndTime : null
/// isNeedSecurityDeposit : 0
/// securityDeposit : "0"
/// tag : "11"
/// promotionType : 1
/// promotionPlan : 0
/// promotionDetail : [{"limitTime":"0","discountRate":"0","discountAmount":"0","fullAmount":"0","collageNumber":"0","fullNumber":"1"}]
/// channels : ["MINI","POS"]
/// isVip : false
/// isDelete : 0
/// tenantCode : "1175"
/// canPartake : true
/// isMaxPromotion : true
/// promotionProuctList : null

class PromotionInfoListBean {
  String id;
  String createTime;
  String createUser;
  String updateTime;
  String updateUser;
  String storeId;
  String name;
  String image;
  String description;
  int status;
  String applyStartTime;
  String applyEndTime;
  String activityStartTime;
  String activityEndTime;
  dynamic doStartTime;
  dynamic doEndTime;
  int isNeedSecurityDeposit;
  String securityDeposit;
  String tag;
  int promotionType;
  int promotionPlan;
  List<PromotionDetailBean> promotionDetail;
  List<String> channels;
  bool isVip;
  int isDelete;
  String tenantCode;
  bool canPartake;
  bool isMaxPromotion;
  dynamic promotionProuctList;

  static PromotionInfoListBean fromJson(Map<String, dynamic> map) {
    if (map == null) return null;
    PromotionInfoListBean promotionInfoListBean = PromotionInfoListBean();
    promotionInfoListBean.id = map['id'];
    promotionInfoListBean.createTime = map['createTime'];
    promotionInfoListBean.createUser = map['createUser'];
    promotionInfoListBean.updateTime = map['updateTime'];
    promotionInfoListBean.updateUser = map['updateUser'];
    promotionInfoListBean.storeId = map['storeId'];
    promotionInfoListBean.name = map['name'];
    promotionInfoListBean.image = map['image'];
    promotionInfoListBean.description = map['description'];
    promotionInfoListBean.status = map['status'];
    promotionInfoListBean.applyStartTime = map['applyStartTime'];
    promotionInfoListBean.applyEndTime = map['applyEndTime'];
    promotionInfoListBean.activityStartTime = map['activityStartTime'];
    promotionInfoListBean.activityEndTime = map['activityEndTime'];
    promotionInfoListBean.doStartTime = map['doStartTime'];
    promotionInfoListBean.doEndTime = map['doEndTime'];
    promotionInfoListBean.isNeedSecurityDeposit = map['isNeedSecurityDeposit'];
    promotionInfoListBean.securityDeposit = map['securityDeposit'];
    promotionInfoListBean.tag = map['tag'];
    promotionInfoListBean.promotionType = map['promotionType'];
    promotionInfoListBean.promotionPlan = map['promotionPlan'];
    promotionInfoListBean.promotionDetail = List()..addAll(
      (map['promotionDetail'] as List ?? []).map((o) => PromotionDetailBean.fromJson(o))
    );
    promotionInfoListBean.channels = List()..addAll(
      (map['channels'] as List ?? []).map((o) => o.toString())
    );
    promotionInfoListBean.isVip = map['isVip'];
    promotionInfoListBean.isDelete = map['isDelete'];
    promotionInfoListBean.tenantCode = map['tenantCode'];
    promotionInfoListBean.canPartake = map['canPartake'];
    promotionInfoListBean.isMaxPromotion = map['isMaxPromotion'];
    promotionInfoListBean.promotionProuctList = map['promotionProuctList'];
    return promotionInfoListBean;
  }

  Map toJson() => {
    "id": id,
    "createTime": createTime,
    "createUser": createUser,
    "updateTime": updateTime,
    "updateUser": updateUser,
    "storeId": storeId,
    "name": name,
    "image": image,
    "description": description,
    "status": status,
    "applyStartTime": applyStartTime,
    "applyEndTime": applyEndTime,
    "activityStartTime": activityStartTime,
    "activityEndTime": activityEndTime,
    "doStartTime": doStartTime,
    "doEndTime": doEndTime,
    "isNeedSecurityDeposit": isNeedSecurityDeposit,
    "securityDeposit": securityDeposit,
    "tag": tag,
    "promotionType": promotionType,
    "promotionPlan": promotionPlan,
    "promotionDetail": promotionDetail,
    "channels": channels,
    "isVip": isVip,
    "isDelete": isDelete,
    "tenantCode": tenantCode,
    "canPartake": canPartake,
    "isMaxPromotion": isMaxPromotion,
    "promotionProuctList": promotionProuctList,
  };
}

/// limitTime : "0"
/// discountRate : "0"
/// discountAmount : "0"
/// fullAmount : "0"
/// collageNumber : "0"
/// fullNumber : "1"

class PromotionDetailBean {
  String limitTime;
  String discountRate;
  String discountAmount;
  String fullAmount;
  String collageNumber;
  String fullNumber;

  static PromotionDetailBean fromJson(Map<String, dynamic> map) {
    if (map == null) return null;
    PromotionDetailBean promotionDetailBean = PromotionDetailBean();
    promotionDetailBean.limitTime = map['limitTime'];
    promotionDetailBean.discountRate = map['discountRate'];
    promotionDetailBean.discountAmount = map['discountAmount'];
    promotionDetailBean.fullAmount = map['fullAmount'];
    promotionDetailBean.collageNumber = map['collageNumber'];
    promotionDetailBean.fullNumber = map['fullNumber'];
    return promotionDetailBean;
  }

  Map toJson() => {
    "limitTime": limitTime,
    "discountRate": discountRate,
    "discountAmount": discountAmount,
    "fullAmount": fullAmount,
    "collageNumber": collageNumber,
    "fullNumber": fullNumber,
  };
}