class DetailInvoiceModel {
  int? status;
  bool? error;
  List<DataDetailInvoiceModel>? data;

  DetailInvoiceModel({this.status, this.error, this.data});

  DetailInvoiceModel.fromJson(Map<String, dynamic> json) {
    status = json['status'];
    error = json['error'];
    if (json['data'] != null) {
      data = <DataDetailInvoiceModel>[];
      json['data'].forEach((v) {
        data!.add(new DataDetailInvoiceModel.fromJson(v));
      });
    }
  }

  Map<String, dynamic> toJson() {
    final Map<String, dynamic> data = new Map<String, dynamic>();
    data['status'] = this.status;
    data['error'] = this.error;
    if (this.data != null) {
      data['data'] = this.data!.map((v) => v.toJson()).toList();
    }
    return data;
  }
}

class DataDetailInvoiceModel {
  String? statusCode;
  String? transactionId;
  String? grossAmount;
  String? currency;
  String? orderId;
  String? paymentType;
  String? signatureKey;
  String? transactionStatus;
  String? fraudStatus;
  String? statusMessage;
  String? merchantId;
  String? permataVaNumber;
  String? transactionTime;
  String? expiryTime;
  String? billerCode;
  String? billKey;
  String? store;
  String? paymentCode;
  String? bank;
  String? maskedCard;
  List<VaNumbersModel>? vaNumbers;

  DataDetailInvoiceModel({
    this.statusCode,
    this.transactionId,
    this.grossAmount,
    this.currency,
    this.orderId,
    this.paymentType,
    this.signatureKey,
    this.transactionStatus,
    this.fraudStatus,
    this.statusMessage,
    this.merchantId,
    this.permataVaNumber,
    this.transactionTime,
    this.expiryTime,
    this.billerCode,
    this.billKey,
    this.vaNumbers,
    this.store,
    this.paymentCode,
    this.bank,
    this.maskedCard,
  });

  DataDetailInvoiceModel.fromJson(Map<String, dynamic> json) {
    statusCode = json['status_code'];
    transactionId = json['transaction_id'];
    grossAmount = json['gross_amount'];
    currency = json['currency'];
    orderId = json['order_id'];
    paymentType = json['payment_type'];
    bank = json['bank'];
    signatureKey = json['signature_key'];
    transactionStatus = json['transaction_status'];
    fraudStatus = json['fraud_status'];
    statusMessage = json['status_message'];
    merchantId = json['merchant_id'];
    permataVaNumber = json['permata_va_number'];
    transactionTime = json['transaction_time'];
    expiryTime = json['expiry_time'];
    billerCode = json['biller_code'];
    billKey = json['bill_key'];
    store = json['store'];
    paymentCode = json['payment_code'];
    maskedCard = json['masked_card'];
    if (json['va_numbers'] != null) {
      vaNumbers = <VaNumbersModel>[];
      json['va_numbers'].forEach((v) {
        vaNumbers!.add(new VaNumbersModel.fromJson(v));
      });
    }
  }

  Map<String, dynamic> toJson() {
    final Map<String, dynamic> data = new Map<String, dynamic>();
    data['status_code'] = this.statusCode;
    data['transaction_id'] = this.transactionId;
    data['gross_amount'] = this.grossAmount;
    data['currency'] = this.currency;
    data['order_id'] = this.orderId;
    data['payment_type'] = this.paymentType;
    data['signature_key'] = this.signatureKey;
    data['transaction_status'] = this.transactionStatus;
    data['fraud_status'] = this.fraudStatus;
    data['status_message'] = this.statusMessage;
    data['merchant_id'] = this.merchantId;
    data['permata_va_number'] = this.permataVaNumber;
    data['transaction_time'] = this.transactionTime;
    data['expiry_time'] = this.expiryTime;
    data['biller_code'] = this.billerCode;
    data['bill_key'] = this.billKey;
    data['store'] = this.store;
    data['payment_code'] = this.paymentCode;
    data['bank'] = this.bank;
    data['masked_card'] = this.maskedCard;
    if (this.vaNumbers != null) {
      data['va_numbers'] = this.vaNumbers!.map((v) => v.toJson()).toList();
    }
    return data;
  }
}

class VaNumbersModel {
  String? bank;
  String? vaNumber;

  VaNumbersModel({this.bank, this.vaNumber});

  VaNumbersModel.fromJson(Map<String, dynamic> json) {
    bank = json['bank'];
    vaNumber = json['va_number'];
  }

  Map<String, dynamic> toJson() {
    final Map<String, dynamic> data = new Map<String, dynamic>();
    data['bank'] = this.bank;
    data['va_number'] = this.vaNumber;
    return data;
  }
}

class StoreModel {
  String? store;

  StoreModel({this.store});

  StoreModel.fromJson(Map<String, dynamic> json) {
    store = json['store'];
  }

  Map<String, dynamic> toJson() {
    final Map<String, dynamic> data = new Map<String, dynamic>();
    data['store'] = this.store;
    return data;
  }
}
