import 'dart:convert';

class GetPaymentNotificationBodyList {
  List<BeneficieryList>? beneficieryList;
  dynamic pInformation;
  dynamic pQuestion;
  List<PaymentDetailsList>? paymentDetailsList;
  List<PurchaseOrdersList>? purchaseOrdersList;
  List<RefundInvoiceList>? refundInvoiceList;
  List<SupplierInformationList>? supplierInformationList;

  GetPaymentNotificationBodyList({
    this.beneficieryList,
    this.pInformation,
    this.pQuestion,
    this.paymentDetailsList,
    this.purchaseOrdersList,
    this.refundInvoiceList,
    this.supplierInformationList,
  });

  factory GetPaymentNotificationBodyList.fromRawJson(String str) => GetPaymentNotificationBodyList.fromJson(json.decode(str));

  String toRawJson() => json.encode(toJson());

  factory GetPaymentNotificationBodyList.fromJson(Map<String, dynamic> json) => GetPaymentNotificationBodyList(
    beneficieryList: json["Beneficiery_List"] == null ? [] : List<BeneficieryList>.from(json["Beneficiery_List"]!.map((x) => BeneficieryList.fromJson(x))),
    pInformation: json["P_INFORMATION"],
    pQuestion: json["P_QUESTION"],
    paymentDetailsList: json["PaymentDetails_List"] == null ? [] : List<PaymentDetailsList>.from(json["PaymentDetails_List"]!.map((x) => PaymentDetailsList.fromJson(x))),
    purchaseOrdersList: json["PurchaseOrders_List"] == null ? [] : List<PurchaseOrdersList>.from(json["PurchaseOrders_List"]!.map((x) => PurchaseOrdersList.fromJson(x))),
    refundInvoiceList: json["RefundInvoice_List"] == null ? [] : List<RefundInvoiceList>.from(json["RefundInvoice_List"]!.map((x) => RefundInvoiceList.fromJson(x))),
    supplierInformationList: json["SupplierInformation_List"] == null ? [] : List<SupplierInformationList>.from(json["SupplierInformation_List"]!.map((x) => SupplierInformationList.fromJson(x))),
  );

  Map<String, dynamic> toJson() => {
    "Beneficiery_List": beneficieryList == null ? [] : List<dynamic>.from(beneficieryList!.map((x) => x.toJson())),
    "P_INFORMATION": pInformation,
    "P_QUESTION": pQuestion,
    "PaymentDetails_List": paymentDetailsList == null ? [] : List<dynamic>.from(paymentDetailsList!.map((x) => x.toJson())),
    "PurchaseOrders_List": purchaseOrdersList == null ? [] : List<dynamic>.from(purchaseOrdersList!.map((x) => x.toJson())),
    "RefundInvoice_List": refundInvoiceList == null ? [] : List<dynamic>.from(refundInvoiceList!.map((x) => x.toJson())),
    "SupplierInformation_List": supplierInformationList == null ? [] : List<dynamic>.from(supplierInformationList!.map((x) => x.toJson())),
  };
}

class BeneficieryList {
  String? beneficiaryBankName;
  String? beneficiaryIban;
  String? beneficiaryName;
  String? iqamaNumber;
  String? saddadNumber;

  BeneficieryList({
    this.beneficiaryBankName,
    this.beneficiaryIban,
    this.beneficiaryName,
    this.iqamaNumber,
    this.saddadNumber,
  });

  factory BeneficieryList.fromRawJson(String str) => BeneficieryList.fromJson(json.decode(str));

  String toRawJson() => json.encode(toJson());

  factory BeneficieryList.fromJson(Map<String, dynamic> json) => BeneficieryList(
    beneficiaryBankName: json["BENEFICIARY_BANK_NAME"],
    beneficiaryIban: json["BENEFICIARY_IBAN"],
    beneficiaryName: json["BENEFICIARY_NAME"],
    iqamaNumber: json["IQAMA_NUMBER"],
    saddadNumber: json["SADDAD_NUMBER"],
  );

  Map<String, dynamic> toJson() => {
    "BENEFICIARY_BANK_NAME": beneficiaryBankName,
    "BENEFICIARY_IBAN": beneficiaryIban,
    "BENEFICIARY_NAME": beneficiaryName,
    "IQAMA_NUMBER": iqamaNumber,
    "SADDAD_NUMBER": saddadNumber,
  };
}

class PaymentDetailsList {
  String? currency;
  String? payingOrganizationName;
  String? paymentDetails;
  String? paymentMethodName;
  String? prepareEmployeeName;
  String? prepareEmployeeNumber;
  String? preparePositionName;
  String? requesterEmployeeName;
  String? requesterEmployeeNumber;
  String? requesterOperatingUnits;
  String? requesterPayrollName;
  String? requesterPositionName;
  String? requestAmount;
  String? requestDate;
  String? requestNumber;
  String? typeOfPayment;

  PaymentDetailsList({
    this.currency,
    this.payingOrganizationName,
    this.paymentDetails,
    this.paymentMethodName,
    this.prepareEmployeeName,
    this.prepareEmployeeNumber,
    this.preparePositionName,
    this.requesterEmployeeName,
    this.requesterEmployeeNumber,
    this.requesterOperatingUnits,
    this.requesterPayrollName,
    this.requesterPositionName,
    this.requestAmount,
    this.requestDate,
    this.requestNumber,
    this.typeOfPayment,
  });

  factory PaymentDetailsList.fromRawJson(String str) => PaymentDetailsList.fromJson(json.decode(str));

  String toRawJson() => json.encode(toJson());

  factory PaymentDetailsList.fromJson(Map<String, dynamic> json) => PaymentDetailsList(
    currency: json["CURRENCY"],
    payingOrganizationName: json["PAYING_ORGANIZATION_NAME"],
    paymentDetails: json["PAYMENT_DETAILS"],
    paymentMethodName: json["PAYMENT_METHOD_NAME"],
    prepareEmployeeName: json["PREPARE_EMPLOYEE_NAME"],
    prepareEmployeeNumber: json["PREPARE_EMPLOYEE_NUMBER"],
    preparePositionName: json["PREPARE_POSITION_NAME"],
    requesterEmployeeName: json["REQUESTER_EMPLOYEE_NAME"],
    requesterEmployeeNumber: json["REQUESTER_EMPLOYEE_NUMBER"],
    requesterOperatingUnits: json["REQUESTER_OPERATING_UNITS"],
    requesterPayrollName: json["REQUESTER_PAYROLL_NAME"],
    requesterPositionName: json["REQUESTER_POSITION_NAME"],
    requestAmount: json["REQUEST_AMOUNT"],
    requestDate: json["REQUEST_DATE"],
    requestNumber: json["REQUEST_NUMBER"],
    typeOfPayment: json["TYPE_OF_PAYMENT"],
  );

  Map<String, dynamic> toJson() => {
    "CURRENCY": currency,
    "PAYING_ORGANIZATION_NAME": payingOrganizationName,
    "PAYMENT_DETAILS": paymentDetails,
    "PAYMENT_METHOD_NAME": paymentMethodName,
    "PREPARE_EMPLOYEE_NAME": prepareEmployeeName,
    "PREPARE_EMPLOYEE_NUMBER": prepareEmployeeNumber,
    "PREPARE_POSITION_NAME": preparePositionName,
    "REQUESTER_EMPLOYEE_NAME": requesterEmployeeName,
    "REQUESTER_EMPLOYEE_NUMBER": requesterEmployeeNumber,
    "REQUESTER_OPERATING_UNITS": requesterOperatingUnits,
    "REQUESTER_PAYROLL_NAME": requesterPayrollName,
    "REQUESTER_POSITION_NAME": requesterPositionName,
    "REQUEST_AMOUNT": requestAmount,
    "REQUEST_DATE": requestDate,
    "REQUEST_NUMBER": requestNumber,
    "TYPE_OF_PAYMENT": typeOfPayment,
  };
}

class PurchaseOrdersList {
  dynamic poAmount;
  dynamic poApprovalDate;
  String? poNumber;
  String? prNumber;
  String? supplierName;
  String? supplierNumber;
  String? versionStatus;

  PurchaseOrdersList({
    this.poAmount,
    this.poApprovalDate,
    this.poNumber,
    this.prNumber,
    this.supplierName,
    this.supplierNumber,
    this.versionStatus,
  });

  factory PurchaseOrdersList.fromRawJson(String str) => PurchaseOrdersList.fromJson(json.decode(str));

  String toRawJson() => json.encode(toJson());

  factory PurchaseOrdersList.fromJson(Map<String, dynamic> json) => PurchaseOrdersList(
    poAmount: json["PO_AMOUNT"],
    poApprovalDate: json["PO_APPROVAL_DATE"],
    poNumber: json["PO_NUMBER"],
    prNumber: json["PR_NUMBER"],
    supplierName: json["SUPPLIER_NAME"],
    supplierNumber: json["SUPPLIER_NUMBER"],
    versionStatus: json["VERSION_STATUS"],
  );

  Map<String, dynamic> toJson() => {
    "PO_AMOUNT": poAmount,
    "PO_APPROVAL_DATE": poApprovalDate,
    "PO_NUMBER": poNumber,
    "PR_NUMBER": prNumber,
    "SUPPLIER_NAME": supplierName,
    "SUPPLIER_NUMBER": supplierNumber,
    "VERSION_STATUS": versionStatus,
  };
}

class RefundInvoiceList {
  dynamic amount;
  String? hospitalClinic;
  dynamic invoicedDate;
  String? invoiceNumber;
  String? patientName;
  String? patientNumber;

  RefundInvoiceList({
    this.amount,
    this.hospitalClinic,
    this.invoicedDate,
    this.invoiceNumber,
    this.patientName,
    this.patientNumber,
  });

  factory RefundInvoiceList.fromRawJson(String str) => RefundInvoiceList.fromJson(json.decode(str));

  String toRawJson() => json.encode(toJson());

  factory RefundInvoiceList.fromJson(Map<String, dynamic> json) => RefundInvoiceList(
    amount: json["AMOUNT"],
    hospitalClinic: json["HOSPITAL_CLINIC"],
    invoicedDate: json["INVOICED_DATE"],
    invoiceNumber: json["INVOICE_NUMBER"],
    patientName: json["PATIENT_NAME"],
    patientNumber: json["PATIENT_NUMBER"],
  );

  Map<String, dynamic> toJson() => {
    "AMOUNT": amount,
    "HOSPITAL_CLINIC": hospitalClinic,
    "INVOICED_DATE": invoicedDate,
    "INVOICE_NUMBER": invoiceNumber,
    "PATIENT_NAME": patientName,
    "PATIENT_NUMBER": patientNumber,
  };
}

class SupplierInformationList {
  String? crNumber;
  String? supplierBankAccountName;
  String? supplierBankAccountNumber;
  String? supplierBankIban;
  String? supplierName;
  String? supplierNumber;

  SupplierInformationList({
    this.crNumber,
    this.supplierBankAccountName,
    this.supplierBankAccountNumber,
    this.supplierBankIban,
    this.supplierName,
    this.supplierNumber,
  });

  factory SupplierInformationList.fromRawJson(String str) => SupplierInformationList.fromJson(json.decode(str));

  String toRawJson() => json.encode(toJson());

  factory SupplierInformationList.fromJson(Map<String, dynamic> json) => SupplierInformationList(
    crNumber: json["CR_NUMBER"],
    supplierBankAccountName: json["SUPPLIER_BANK_ACCOUNT_NAME"],
    supplierBankAccountNumber: json["SUPPLIER_BANK_ACCOUNT_NUMBER"],
    supplierBankIban: json["SUPPLIER_BANK_IBAN"],
    supplierName: json["SUPPLIER_NAME"],
    supplierNumber: json["SUPPLIER_NUMBER"],
  );

  Map<String, dynamic> toJson() => {
    "CR_NUMBER": crNumber,
    "SUPPLIER_BANK_ACCOUNT_NAME": supplierBankAccountName,
    "SUPPLIER_BANK_ACCOUNT_NUMBER": supplierBankAccountNumber,
    "SUPPLIER_BANK_IBAN": supplierBankIban,
    "SUPPLIER_NAME": supplierName,
    "SUPPLIER_NUMBER": supplierNumber,
  };
}
