/*
 * Adyen Payment API
 * A set of API endpoints that allow you to initiate, settle, and modify payments on the Adyen payments platform. You can use the API to accept card payments (including One-Click and 3D Secure), bank transfers, ewallets, and many other payment methods.  To learn more about the API, visit [Classic integration](https://docs.adyen.com/classic-integration).  ## Authentication You need an [API credential](https://docs.adyen.com/development-resources/api-credentials) to authenticate to the API.  If using an API key, add an `X-API-Key` header with the API key as the value, for example:   ``` curl -H \"Content-Type: application/json\" \\ -H \"X-API-Key: YOUR_API_KEY\" \\ ... ```  Alternatively, you can use the username and password to connect to the API using basic authentication, for example:  ``` curl -U \"ws@Company.YOUR_COMPANY_ACCOUNT\":\"YOUR_BASIC_AUTHENTICATION_PASSWORD\" \\ -H \"Content-Type: application/json\" \\ ... ```  ## Versioning Payments API supports [versioning](https://docs.adyen.com/development-resources/versioning) using a version suffix in the endpoint URL. This suffix has the following format: \"vXX\", where XX is the version number.  For example: ``` https://pal-test.adyen.com/pal/servlet/Payment/v68/authorise ```  ## Going live  To authenticate to the live endpoints, you need an [API credential](https://docs.adyen.com/development-resources/api-credentials) from your live Customer Area.  The live endpoint URLs contain a prefix which is unique to your company account: ```  https://{PREFIX}-pal-live.adyenpayments.com/pal/servlet/Payment/v68/authorise ```  Get your `{PREFIX}` from your live Customer Area under **Developers** > **API URLs** > **Prefix**.
 *
 * The version of the OpenAPI document: 68
 * 
 *
 * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
 * https://openapi-generator.tech
 * Do not edit the class manually.
 */


package com.adyen.model.payment;

import java.util.Objects;
import java.util.Arrays;
import java.util.Map;
import java.util.HashMap;
import com.fasterxml.jackson.annotation.JsonInclude;
import com.fasterxml.jackson.annotation.JsonProperty;
import com.fasterxml.jackson.annotation.JsonCreator;
import com.fasterxml.jackson.annotation.JsonTypeName;
import com.fasterxml.jackson.annotation.JsonValue;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import com.fasterxml.jackson.annotation.JsonPropertyOrder;
import com.fasterxml.jackson.core.JsonProcessingException;


/**
 * AdditionalDataOpenInvoice
 */
@JsonPropertyOrder({
  AdditionalDataOpenInvoice.JSON_PROPERTY_OPENINVOICEDATA_MERCHANT_DATA,
  AdditionalDataOpenInvoice.JSON_PROPERTY_OPENINVOICEDATA_NUMBER_OF_LINES,
  AdditionalDataOpenInvoice.JSON_PROPERTY_OPENINVOICEDATA_RECIPIENT_FIRST_NAME,
  AdditionalDataOpenInvoice.JSON_PROPERTY_OPENINVOICEDATA_RECIPIENT_LAST_NAME,
  AdditionalDataOpenInvoice.JSON_PROPERTY_OPENINVOICEDATA_LINE_ITEM_NR_CURRENCY_CODE,
  AdditionalDataOpenInvoice.JSON_PROPERTY_OPENINVOICEDATA_LINE_ITEM_NR_DESCRIPTION,
  AdditionalDataOpenInvoice.JSON_PROPERTY_OPENINVOICEDATA_LINE_ITEM_NR_ITEM_AMOUNT,
  AdditionalDataOpenInvoice.JSON_PROPERTY_OPENINVOICEDATA_LINE_ITEM_NR_ITEM_ID,
  AdditionalDataOpenInvoice.JSON_PROPERTY_OPENINVOICEDATA_LINE_ITEM_NR_ITEM_VAT_AMOUNT,
  AdditionalDataOpenInvoice.JSON_PROPERTY_OPENINVOICEDATA_LINE_ITEM_NR_ITEM_VAT_PERCENTAGE,
  AdditionalDataOpenInvoice.JSON_PROPERTY_OPENINVOICEDATA_LINE_ITEM_NR_NUMBER_OF_ITEMS,
  AdditionalDataOpenInvoice.JSON_PROPERTY_OPENINVOICEDATA_LINE_ITEM_NR_RETURN_SHIPPING_COMPANY,
  AdditionalDataOpenInvoice.JSON_PROPERTY_OPENINVOICEDATA_LINE_ITEM_NR_RETURN_TRACKING_NUMBER,
  AdditionalDataOpenInvoice.JSON_PROPERTY_OPENINVOICEDATA_LINE_ITEM_NR_RETURN_TRACKING_URI,
  AdditionalDataOpenInvoice.JSON_PROPERTY_OPENINVOICEDATA_LINE_ITEM_NR_SHIPPING_COMPANY,
  AdditionalDataOpenInvoice.JSON_PROPERTY_OPENINVOICEDATA_LINE_ITEM_NR_SHIPPING_METHOD,
  AdditionalDataOpenInvoice.JSON_PROPERTY_OPENINVOICEDATA_LINE_ITEM_NR_TRACKING_NUMBER,
  AdditionalDataOpenInvoice.JSON_PROPERTY_OPENINVOICEDATA_LINE_ITEM_NR_TRACKING_URI
})

public class AdditionalDataOpenInvoice {
  public static final String JSON_PROPERTY_OPENINVOICEDATA_MERCHANT_DATA = "openinvoicedata.merchantData";
  private String openinvoicedataMerchantData;

  public static final String JSON_PROPERTY_OPENINVOICEDATA_NUMBER_OF_LINES = "openinvoicedata.numberOfLines";
  private String openinvoicedataNumberOfLines;

  public static final String JSON_PROPERTY_OPENINVOICEDATA_RECIPIENT_FIRST_NAME = "openinvoicedata.recipientFirstName";
  private String openinvoicedataRecipientFirstName;

  public static final String JSON_PROPERTY_OPENINVOICEDATA_RECIPIENT_LAST_NAME = "openinvoicedata.recipientLastName";
  private String openinvoicedataRecipientLastName;

  public static final String JSON_PROPERTY_OPENINVOICEDATA_LINE_ITEM_NR_CURRENCY_CODE = "openinvoicedataLine[itemNr].currencyCode";
  private String openinvoicedataLineItemNrCurrencyCode;

  public static final String JSON_PROPERTY_OPENINVOICEDATA_LINE_ITEM_NR_DESCRIPTION = "openinvoicedataLine[itemNr].description";
  private String openinvoicedataLineItemNrDescription;

  public static final String JSON_PROPERTY_OPENINVOICEDATA_LINE_ITEM_NR_ITEM_AMOUNT = "openinvoicedataLine[itemNr].itemAmount";
  private String openinvoicedataLineItemNrItemAmount;

  public static final String JSON_PROPERTY_OPENINVOICEDATA_LINE_ITEM_NR_ITEM_ID = "openinvoicedataLine[itemNr].itemId";
  private String openinvoicedataLineItemNrItemId;

  public static final String JSON_PROPERTY_OPENINVOICEDATA_LINE_ITEM_NR_ITEM_VAT_AMOUNT = "openinvoicedataLine[itemNr].itemVatAmount";
  private String openinvoicedataLineItemNrItemVatAmount;

  public static final String JSON_PROPERTY_OPENINVOICEDATA_LINE_ITEM_NR_ITEM_VAT_PERCENTAGE = "openinvoicedataLine[itemNr].itemVatPercentage";
  private String openinvoicedataLineItemNrItemVatPercentage;

  public static final String JSON_PROPERTY_OPENINVOICEDATA_LINE_ITEM_NR_NUMBER_OF_ITEMS = "openinvoicedataLine[itemNr].numberOfItems";
  private String openinvoicedataLineItemNrNumberOfItems;

  public static final String JSON_PROPERTY_OPENINVOICEDATA_LINE_ITEM_NR_RETURN_SHIPPING_COMPANY = "openinvoicedataLine[itemNr].returnShippingCompany";
  private String openinvoicedataLineItemNrReturnShippingCompany;

  public static final String JSON_PROPERTY_OPENINVOICEDATA_LINE_ITEM_NR_RETURN_TRACKING_NUMBER = "openinvoicedataLine[itemNr].returnTrackingNumber";
  private String openinvoicedataLineItemNrReturnTrackingNumber;

  public static final String JSON_PROPERTY_OPENINVOICEDATA_LINE_ITEM_NR_RETURN_TRACKING_URI = "openinvoicedataLine[itemNr].returnTrackingUri";
  private String openinvoicedataLineItemNrReturnTrackingUri;

  public static final String JSON_PROPERTY_OPENINVOICEDATA_LINE_ITEM_NR_SHIPPING_COMPANY = "openinvoicedataLine[itemNr].shippingCompany";
  private String openinvoicedataLineItemNrShippingCompany;

  public static final String JSON_PROPERTY_OPENINVOICEDATA_LINE_ITEM_NR_SHIPPING_METHOD = "openinvoicedataLine[itemNr].shippingMethod";
  private String openinvoicedataLineItemNrShippingMethod;

  public static final String JSON_PROPERTY_OPENINVOICEDATA_LINE_ITEM_NR_TRACKING_NUMBER = "openinvoicedataLine[itemNr].trackingNumber";
  private String openinvoicedataLineItemNrTrackingNumber;

  public static final String JSON_PROPERTY_OPENINVOICEDATA_LINE_ITEM_NR_TRACKING_URI = "openinvoicedataLine[itemNr].trackingUri";
  private String openinvoicedataLineItemNrTrackingUri;

  public AdditionalDataOpenInvoice() { 
  }

  public AdditionalDataOpenInvoice openinvoicedataMerchantData(String openinvoicedataMerchantData) {
    this.openinvoicedataMerchantData = openinvoicedataMerchantData;
    return this;
  }

   /**
   * Holds different merchant data points like product, purchase, customer, and so on. It takes data in a Base64 encoded string.  The &#x60;merchantData&#x60; parameter needs to be added to the &#x60;openinvoicedata&#x60; signature at the end.  Since the field is optional, if it&#39;s not included it does not impact computing the merchant signature.  Applies only to Klarna.  You can contact Klarna for the format and structure of the string.
   * @return openinvoicedataMerchantData
  **/
  @ApiModelProperty(value = "Holds different merchant data points like product, purchase, customer, and so on. It takes data in a Base64 encoded string.  The `merchantData` parameter needs to be added to the `openinvoicedata` signature at the end.  Since the field is optional, if it's not included it does not impact computing the merchant signature.  Applies only to Klarna.  You can contact Klarna for the format and structure of the string.")
  @JsonProperty(JSON_PROPERTY_OPENINVOICEDATA_MERCHANT_DATA)
  @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS)

  public String getOpeninvoicedataMerchantData() {
    return openinvoicedataMerchantData;
  }


  @JsonProperty(JSON_PROPERTY_OPENINVOICEDATA_MERCHANT_DATA)
  @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS)
  public void setOpeninvoicedataMerchantData(String openinvoicedataMerchantData) {
    this.openinvoicedataMerchantData = openinvoicedataMerchantData;
  }


  public AdditionalDataOpenInvoice openinvoicedataNumberOfLines(String openinvoicedataNumberOfLines) {
    this.openinvoicedataNumberOfLines = openinvoicedataNumberOfLines;
    return this;
  }

   /**
   * The number of invoice lines included in &#x60;openinvoicedata&#x60;.  There needs to be at least one line, so &#x60;numberOfLines&#x60; needs to be at least 1.
   * @return openinvoicedataNumberOfLines
  **/
  @ApiModelProperty(value = "The number of invoice lines included in `openinvoicedata`.  There needs to be at least one line, so `numberOfLines` needs to be at least 1.")
  @JsonProperty(JSON_PROPERTY_OPENINVOICEDATA_NUMBER_OF_LINES)
  @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS)

  public String getOpeninvoicedataNumberOfLines() {
    return openinvoicedataNumberOfLines;
  }


  @JsonProperty(JSON_PROPERTY_OPENINVOICEDATA_NUMBER_OF_LINES)
  @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS)
  public void setOpeninvoicedataNumberOfLines(String openinvoicedataNumberOfLines) {
    this.openinvoicedataNumberOfLines = openinvoicedataNumberOfLines;
  }


  public AdditionalDataOpenInvoice openinvoicedataRecipientFirstName(String openinvoicedataRecipientFirstName) {
    this.openinvoicedataRecipientFirstName = openinvoicedataRecipientFirstName;
    return this;
  }

   /**
   * First name of the recipient. If the delivery address and the billing address are different, specify the &#x60;recipientFirstName&#x60; and &#x60;recipientLastName&#x60; to share the delivery address with Klarna. Otherwise, only the billing address is shared with Klarna.
   * @return openinvoicedataRecipientFirstName
  **/
  @ApiModelProperty(value = "First name of the recipient. If the delivery address and the billing address are different, specify the `recipientFirstName` and `recipientLastName` to share the delivery address with Klarna. Otherwise, only the billing address is shared with Klarna.")
  @JsonProperty(JSON_PROPERTY_OPENINVOICEDATA_RECIPIENT_FIRST_NAME)
  @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS)

  public String getOpeninvoicedataRecipientFirstName() {
    return openinvoicedataRecipientFirstName;
  }


  @JsonProperty(JSON_PROPERTY_OPENINVOICEDATA_RECIPIENT_FIRST_NAME)
  @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS)
  public void setOpeninvoicedataRecipientFirstName(String openinvoicedataRecipientFirstName) {
    this.openinvoicedataRecipientFirstName = openinvoicedataRecipientFirstName;
  }


  public AdditionalDataOpenInvoice openinvoicedataRecipientLastName(String openinvoicedataRecipientLastName) {
    this.openinvoicedataRecipientLastName = openinvoicedataRecipientLastName;
    return this;
  }

   /**
   * Last name of the recipient. If the delivery address and the billing address are different, specify the &#x60;recipientFirstName&#x60; and &#x60;recipientLastName&#x60; to share the delivery address with Klarna. Otherwise, only the billing address is shared with Klarna.
   * @return openinvoicedataRecipientLastName
  **/
  @ApiModelProperty(value = "Last name of the recipient. If the delivery address and the billing address are different, specify the `recipientFirstName` and `recipientLastName` to share the delivery address with Klarna. Otherwise, only the billing address is shared with Klarna.")
  @JsonProperty(JSON_PROPERTY_OPENINVOICEDATA_RECIPIENT_LAST_NAME)
  @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS)

  public String getOpeninvoicedataRecipientLastName() {
    return openinvoicedataRecipientLastName;
  }


  @JsonProperty(JSON_PROPERTY_OPENINVOICEDATA_RECIPIENT_LAST_NAME)
  @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS)
  public void setOpeninvoicedataRecipientLastName(String openinvoicedataRecipientLastName) {
    this.openinvoicedataRecipientLastName = openinvoicedataRecipientLastName;
  }


  public AdditionalDataOpenInvoice openinvoicedataLineItemNrCurrencyCode(String openinvoicedataLineItemNrCurrencyCode) {
    this.openinvoicedataLineItemNrCurrencyCode = openinvoicedataLineItemNrCurrencyCode;
    return this;
  }

   /**
   * The three-character ISO currency code.
   * @return openinvoicedataLineItemNrCurrencyCode
  **/
  @ApiModelProperty(value = "The three-character ISO currency code.")
  @JsonProperty(JSON_PROPERTY_OPENINVOICEDATA_LINE_ITEM_NR_CURRENCY_CODE)
  @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS)

  public String getOpeninvoicedataLineItemNrCurrencyCode() {
    return openinvoicedataLineItemNrCurrencyCode;
  }


  @JsonProperty(JSON_PROPERTY_OPENINVOICEDATA_LINE_ITEM_NR_CURRENCY_CODE)
  @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS)
  public void setOpeninvoicedataLineItemNrCurrencyCode(String openinvoicedataLineItemNrCurrencyCode) {
    this.openinvoicedataLineItemNrCurrencyCode = openinvoicedataLineItemNrCurrencyCode;
  }


  public AdditionalDataOpenInvoice openinvoicedataLineItemNrDescription(String openinvoicedataLineItemNrDescription) {
    this.openinvoicedataLineItemNrDescription = openinvoicedataLineItemNrDescription;
    return this;
  }

   /**
   * A text description of the product the invoice line refers to.
   * @return openinvoicedataLineItemNrDescription
  **/
  @ApiModelProperty(value = "A text description of the product the invoice line refers to.")
  @JsonProperty(JSON_PROPERTY_OPENINVOICEDATA_LINE_ITEM_NR_DESCRIPTION)
  @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS)

  public String getOpeninvoicedataLineItemNrDescription() {
    return openinvoicedataLineItemNrDescription;
  }


  @JsonProperty(JSON_PROPERTY_OPENINVOICEDATA_LINE_ITEM_NR_DESCRIPTION)
  @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS)
  public void setOpeninvoicedataLineItemNrDescription(String openinvoicedataLineItemNrDescription) {
    this.openinvoicedataLineItemNrDescription = openinvoicedataLineItemNrDescription;
  }


  public AdditionalDataOpenInvoice openinvoicedataLineItemNrItemAmount(String openinvoicedataLineItemNrItemAmount) {
    this.openinvoicedataLineItemNrItemAmount = openinvoicedataLineItemNrItemAmount;
    return this;
  }

   /**
   * The price for one item in the invoice line, represented in minor units.  The due amount for the item, VAT excluded.
   * @return openinvoicedataLineItemNrItemAmount
  **/
  @ApiModelProperty(value = "The price for one item in the invoice line, represented in minor units.  The due amount for the item, VAT excluded.")
  @JsonProperty(JSON_PROPERTY_OPENINVOICEDATA_LINE_ITEM_NR_ITEM_AMOUNT)
  @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS)

  public String getOpeninvoicedataLineItemNrItemAmount() {
    return openinvoicedataLineItemNrItemAmount;
  }


  @JsonProperty(JSON_PROPERTY_OPENINVOICEDATA_LINE_ITEM_NR_ITEM_AMOUNT)
  @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS)
  public void setOpeninvoicedataLineItemNrItemAmount(String openinvoicedataLineItemNrItemAmount) {
    this.openinvoicedataLineItemNrItemAmount = openinvoicedataLineItemNrItemAmount;
  }


  public AdditionalDataOpenInvoice openinvoicedataLineItemNrItemId(String openinvoicedataLineItemNrItemId) {
    this.openinvoicedataLineItemNrItemId = openinvoicedataLineItemNrItemId;
    return this;
  }

   /**
   * A unique id for this item. Required for RatePay if the description of each item is not unique.
   * @return openinvoicedataLineItemNrItemId
  **/
  @ApiModelProperty(value = "A unique id for this item. Required for RatePay if the description of each item is not unique.")
  @JsonProperty(JSON_PROPERTY_OPENINVOICEDATA_LINE_ITEM_NR_ITEM_ID)
  @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS)

  public String getOpeninvoicedataLineItemNrItemId() {
    return openinvoicedataLineItemNrItemId;
  }


  @JsonProperty(JSON_PROPERTY_OPENINVOICEDATA_LINE_ITEM_NR_ITEM_ID)
  @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS)
  public void setOpeninvoicedataLineItemNrItemId(String openinvoicedataLineItemNrItemId) {
    this.openinvoicedataLineItemNrItemId = openinvoicedataLineItemNrItemId;
  }


  public AdditionalDataOpenInvoice openinvoicedataLineItemNrItemVatAmount(String openinvoicedataLineItemNrItemVatAmount) {
    this.openinvoicedataLineItemNrItemVatAmount = openinvoicedataLineItemNrItemVatAmount;
    return this;
  }

   /**
   * The VAT due for one item in the invoice line, represented in minor units.
   * @return openinvoicedataLineItemNrItemVatAmount
  **/
  @ApiModelProperty(value = "The VAT due for one item in the invoice line, represented in minor units.")
  @JsonProperty(JSON_PROPERTY_OPENINVOICEDATA_LINE_ITEM_NR_ITEM_VAT_AMOUNT)
  @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS)

  public String getOpeninvoicedataLineItemNrItemVatAmount() {
    return openinvoicedataLineItemNrItemVatAmount;
  }


  @JsonProperty(JSON_PROPERTY_OPENINVOICEDATA_LINE_ITEM_NR_ITEM_VAT_AMOUNT)
  @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS)
  public void setOpeninvoicedataLineItemNrItemVatAmount(String openinvoicedataLineItemNrItemVatAmount) {
    this.openinvoicedataLineItemNrItemVatAmount = openinvoicedataLineItemNrItemVatAmount;
  }


  public AdditionalDataOpenInvoice openinvoicedataLineItemNrItemVatPercentage(String openinvoicedataLineItemNrItemVatPercentage) {
    this.openinvoicedataLineItemNrItemVatPercentage = openinvoicedataLineItemNrItemVatPercentage;
    return this;
  }

   /**
   * The VAT percentage for one item in the invoice line, represented in minor units.  For example, 19% VAT is specified as 1900.
   * @return openinvoicedataLineItemNrItemVatPercentage
  **/
  @ApiModelProperty(value = "The VAT percentage for one item in the invoice line, represented in minor units.  For example, 19% VAT is specified as 1900.")
  @JsonProperty(JSON_PROPERTY_OPENINVOICEDATA_LINE_ITEM_NR_ITEM_VAT_PERCENTAGE)
  @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS)

  public String getOpeninvoicedataLineItemNrItemVatPercentage() {
    return openinvoicedataLineItemNrItemVatPercentage;
  }


  @JsonProperty(JSON_PROPERTY_OPENINVOICEDATA_LINE_ITEM_NR_ITEM_VAT_PERCENTAGE)
  @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS)
  public void setOpeninvoicedataLineItemNrItemVatPercentage(String openinvoicedataLineItemNrItemVatPercentage) {
    this.openinvoicedataLineItemNrItemVatPercentage = openinvoicedataLineItemNrItemVatPercentage;
  }


  public AdditionalDataOpenInvoice openinvoicedataLineItemNrNumberOfItems(String openinvoicedataLineItemNrNumberOfItems) {
    this.openinvoicedataLineItemNrNumberOfItems = openinvoicedataLineItemNrNumberOfItems;
    return this;
  }

   /**
   * The number of units purchased of a specific product.
   * @return openinvoicedataLineItemNrNumberOfItems
  **/
  @ApiModelProperty(value = "The number of units purchased of a specific product.")
  @JsonProperty(JSON_PROPERTY_OPENINVOICEDATA_LINE_ITEM_NR_NUMBER_OF_ITEMS)
  @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS)

  public String getOpeninvoicedataLineItemNrNumberOfItems() {
    return openinvoicedataLineItemNrNumberOfItems;
  }


  @JsonProperty(JSON_PROPERTY_OPENINVOICEDATA_LINE_ITEM_NR_NUMBER_OF_ITEMS)
  @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS)
  public void setOpeninvoicedataLineItemNrNumberOfItems(String openinvoicedataLineItemNrNumberOfItems) {
    this.openinvoicedataLineItemNrNumberOfItems = openinvoicedataLineItemNrNumberOfItems;
  }


  public AdditionalDataOpenInvoice openinvoicedataLineItemNrReturnShippingCompany(String openinvoicedataLineItemNrReturnShippingCompany) {
    this.openinvoicedataLineItemNrReturnShippingCompany = openinvoicedataLineItemNrReturnShippingCompany;
    return this;
  }

   /**
   * Name of the shipping company handling the the return shipment.
   * @return openinvoicedataLineItemNrReturnShippingCompany
  **/
  @ApiModelProperty(value = "Name of the shipping company handling the the return shipment.")
  @JsonProperty(JSON_PROPERTY_OPENINVOICEDATA_LINE_ITEM_NR_RETURN_SHIPPING_COMPANY)
  @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS)

  public String getOpeninvoicedataLineItemNrReturnShippingCompany() {
    return openinvoicedataLineItemNrReturnShippingCompany;
  }


  @JsonProperty(JSON_PROPERTY_OPENINVOICEDATA_LINE_ITEM_NR_RETURN_SHIPPING_COMPANY)
  @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS)
  public void setOpeninvoicedataLineItemNrReturnShippingCompany(String openinvoicedataLineItemNrReturnShippingCompany) {
    this.openinvoicedataLineItemNrReturnShippingCompany = openinvoicedataLineItemNrReturnShippingCompany;
  }


  public AdditionalDataOpenInvoice openinvoicedataLineItemNrReturnTrackingNumber(String openinvoicedataLineItemNrReturnTrackingNumber) {
    this.openinvoicedataLineItemNrReturnTrackingNumber = openinvoicedataLineItemNrReturnTrackingNumber;
    return this;
  }

   /**
   * The tracking number for the return of the shipment.
   * @return openinvoicedataLineItemNrReturnTrackingNumber
  **/
  @ApiModelProperty(value = "The tracking number for the return of the shipment.")
  @JsonProperty(JSON_PROPERTY_OPENINVOICEDATA_LINE_ITEM_NR_RETURN_TRACKING_NUMBER)
  @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS)

  public String getOpeninvoicedataLineItemNrReturnTrackingNumber() {
    return openinvoicedataLineItemNrReturnTrackingNumber;
  }


  @JsonProperty(JSON_PROPERTY_OPENINVOICEDATA_LINE_ITEM_NR_RETURN_TRACKING_NUMBER)
  @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS)
  public void setOpeninvoicedataLineItemNrReturnTrackingNumber(String openinvoicedataLineItemNrReturnTrackingNumber) {
    this.openinvoicedataLineItemNrReturnTrackingNumber = openinvoicedataLineItemNrReturnTrackingNumber;
  }


  public AdditionalDataOpenInvoice openinvoicedataLineItemNrReturnTrackingUri(String openinvoicedataLineItemNrReturnTrackingUri) {
    this.openinvoicedataLineItemNrReturnTrackingUri = openinvoicedataLineItemNrReturnTrackingUri;
    return this;
  }

   /**
   * URI where the customer can track the return of their shipment.
   * @return openinvoicedataLineItemNrReturnTrackingUri
  **/
  @ApiModelProperty(value = "URI where the customer can track the return of their shipment.")
  @JsonProperty(JSON_PROPERTY_OPENINVOICEDATA_LINE_ITEM_NR_RETURN_TRACKING_URI)
  @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS)

  public String getOpeninvoicedataLineItemNrReturnTrackingUri() {
    return openinvoicedataLineItemNrReturnTrackingUri;
  }


  @JsonProperty(JSON_PROPERTY_OPENINVOICEDATA_LINE_ITEM_NR_RETURN_TRACKING_URI)
  @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS)
  public void setOpeninvoicedataLineItemNrReturnTrackingUri(String openinvoicedataLineItemNrReturnTrackingUri) {
    this.openinvoicedataLineItemNrReturnTrackingUri = openinvoicedataLineItemNrReturnTrackingUri;
  }


  public AdditionalDataOpenInvoice openinvoicedataLineItemNrShippingCompany(String openinvoicedataLineItemNrShippingCompany) {
    this.openinvoicedataLineItemNrShippingCompany = openinvoicedataLineItemNrShippingCompany;
    return this;
  }

   /**
   * Name of the shipping company handling the delivery.
   * @return openinvoicedataLineItemNrShippingCompany
  **/
  @ApiModelProperty(value = "Name of the shipping company handling the delivery.")
  @JsonProperty(JSON_PROPERTY_OPENINVOICEDATA_LINE_ITEM_NR_SHIPPING_COMPANY)
  @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS)

  public String getOpeninvoicedataLineItemNrShippingCompany() {
    return openinvoicedataLineItemNrShippingCompany;
  }


  @JsonProperty(JSON_PROPERTY_OPENINVOICEDATA_LINE_ITEM_NR_SHIPPING_COMPANY)
  @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS)
  public void setOpeninvoicedataLineItemNrShippingCompany(String openinvoicedataLineItemNrShippingCompany) {
    this.openinvoicedataLineItemNrShippingCompany = openinvoicedataLineItemNrShippingCompany;
  }


  public AdditionalDataOpenInvoice openinvoicedataLineItemNrShippingMethod(String openinvoicedataLineItemNrShippingMethod) {
    this.openinvoicedataLineItemNrShippingMethod = openinvoicedataLineItemNrShippingMethod;
    return this;
  }

   /**
   * Shipping method.
   * @return openinvoicedataLineItemNrShippingMethod
  **/
  @ApiModelProperty(value = "Shipping method.")
  @JsonProperty(JSON_PROPERTY_OPENINVOICEDATA_LINE_ITEM_NR_SHIPPING_METHOD)
  @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS)

  public String getOpeninvoicedataLineItemNrShippingMethod() {
    return openinvoicedataLineItemNrShippingMethod;
  }


  @JsonProperty(JSON_PROPERTY_OPENINVOICEDATA_LINE_ITEM_NR_SHIPPING_METHOD)
  @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS)
  public void setOpeninvoicedataLineItemNrShippingMethod(String openinvoicedataLineItemNrShippingMethod) {
    this.openinvoicedataLineItemNrShippingMethod = openinvoicedataLineItemNrShippingMethod;
  }


  public AdditionalDataOpenInvoice openinvoicedataLineItemNrTrackingNumber(String openinvoicedataLineItemNrTrackingNumber) {
    this.openinvoicedataLineItemNrTrackingNumber = openinvoicedataLineItemNrTrackingNumber;
    return this;
  }

   /**
   * The tracking number for the shipment.
   * @return openinvoicedataLineItemNrTrackingNumber
  **/
  @ApiModelProperty(value = "The tracking number for the shipment.")
  @JsonProperty(JSON_PROPERTY_OPENINVOICEDATA_LINE_ITEM_NR_TRACKING_NUMBER)
  @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS)

  public String getOpeninvoicedataLineItemNrTrackingNumber() {
    return openinvoicedataLineItemNrTrackingNumber;
  }


  @JsonProperty(JSON_PROPERTY_OPENINVOICEDATA_LINE_ITEM_NR_TRACKING_NUMBER)
  @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS)
  public void setOpeninvoicedataLineItemNrTrackingNumber(String openinvoicedataLineItemNrTrackingNumber) {
    this.openinvoicedataLineItemNrTrackingNumber = openinvoicedataLineItemNrTrackingNumber;
  }


  public AdditionalDataOpenInvoice openinvoicedataLineItemNrTrackingUri(String openinvoicedataLineItemNrTrackingUri) {
    this.openinvoicedataLineItemNrTrackingUri = openinvoicedataLineItemNrTrackingUri;
    return this;
  }

   /**
   * URI where the customer can track their shipment.
   * @return openinvoicedataLineItemNrTrackingUri
  **/
  @ApiModelProperty(value = "URI where the customer can track their shipment.")
  @JsonProperty(JSON_PROPERTY_OPENINVOICEDATA_LINE_ITEM_NR_TRACKING_URI)
  @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS)

  public String getOpeninvoicedataLineItemNrTrackingUri() {
    return openinvoicedataLineItemNrTrackingUri;
  }


  @JsonProperty(JSON_PROPERTY_OPENINVOICEDATA_LINE_ITEM_NR_TRACKING_URI)
  @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS)
  public void setOpeninvoicedataLineItemNrTrackingUri(String openinvoicedataLineItemNrTrackingUri) {
    this.openinvoicedataLineItemNrTrackingUri = openinvoicedataLineItemNrTrackingUri;
  }


  /**
   * Return true if this AdditionalDataOpenInvoice object is equal to o.
   */
  @Override
  public boolean equals(Object o) {
    if (this == o) {
      return true;
    }
    if (o == null || getClass() != o.getClass()) {
      return false;
    }
    AdditionalDataOpenInvoice additionalDataOpenInvoice = (AdditionalDataOpenInvoice) o;
    return Objects.equals(this.openinvoicedataMerchantData, additionalDataOpenInvoice.openinvoicedataMerchantData) &&
        Objects.equals(this.openinvoicedataNumberOfLines, additionalDataOpenInvoice.openinvoicedataNumberOfLines) &&
        Objects.equals(this.openinvoicedataRecipientFirstName, additionalDataOpenInvoice.openinvoicedataRecipientFirstName) &&
        Objects.equals(this.openinvoicedataRecipientLastName, additionalDataOpenInvoice.openinvoicedataRecipientLastName) &&
        Objects.equals(this.openinvoicedataLineItemNrCurrencyCode, additionalDataOpenInvoice.openinvoicedataLineItemNrCurrencyCode) &&
        Objects.equals(this.openinvoicedataLineItemNrDescription, additionalDataOpenInvoice.openinvoicedataLineItemNrDescription) &&
        Objects.equals(this.openinvoicedataLineItemNrItemAmount, additionalDataOpenInvoice.openinvoicedataLineItemNrItemAmount) &&
        Objects.equals(this.openinvoicedataLineItemNrItemId, additionalDataOpenInvoice.openinvoicedataLineItemNrItemId) &&
        Objects.equals(this.openinvoicedataLineItemNrItemVatAmount, additionalDataOpenInvoice.openinvoicedataLineItemNrItemVatAmount) &&
        Objects.equals(this.openinvoicedataLineItemNrItemVatPercentage, additionalDataOpenInvoice.openinvoicedataLineItemNrItemVatPercentage) &&
        Objects.equals(this.openinvoicedataLineItemNrNumberOfItems, additionalDataOpenInvoice.openinvoicedataLineItemNrNumberOfItems) &&
        Objects.equals(this.openinvoicedataLineItemNrReturnShippingCompany, additionalDataOpenInvoice.openinvoicedataLineItemNrReturnShippingCompany) &&
        Objects.equals(this.openinvoicedataLineItemNrReturnTrackingNumber, additionalDataOpenInvoice.openinvoicedataLineItemNrReturnTrackingNumber) &&
        Objects.equals(this.openinvoicedataLineItemNrReturnTrackingUri, additionalDataOpenInvoice.openinvoicedataLineItemNrReturnTrackingUri) &&
        Objects.equals(this.openinvoicedataLineItemNrShippingCompany, additionalDataOpenInvoice.openinvoicedataLineItemNrShippingCompany) &&
        Objects.equals(this.openinvoicedataLineItemNrShippingMethod, additionalDataOpenInvoice.openinvoicedataLineItemNrShippingMethod) &&
        Objects.equals(this.openinvoicedataLineItemNrTrackingNumber, additionalDataOpenInvoice.openinvoicedataLineItemNrTrackingNumber) &&
        Objects.equals(this.openinvoicedataLineItemNrTrackingUri, additionalDataOpenInvoice.openinvoicedataLineItemNrTrackingUri);
  }

  @Override
  public int hashCode() {
    return Objects.hash(openinvoicedataMerchantData, openinvoicedataNumberOfLines, openinvoicedataRecipientFirstName, openinvoicedataRecipientLastName, openinvoicedataLineItemNrCurrencyCode, openinvoicedataLineItemNrDescription, openinvoicedataLineItemNrItemAmount, openinvoicedataLineItemNrItemId, openinvoicedataLineItemNrItemVatAmount, openinvoicedataLineItemNrItemVatPercentage, openinvoicedataLineItemNrNumberOfItems, openinvoicedataLineItemNrReturnShippingCompany, openinvoicedataLineItemNrReturnTrackingNumber, openinvoicedataLineItemNrReturnTrackingUri, openinvoicedataLineItemNrShippingCompany, openinvoicedataLineItemNrShippingMethod, openinvoicedataLineItemNrTrackingNumber, openinvoicedataLineItemNrTrackingUri);
  }

  @Override
  public String toString() {
    StringBuilder sb = new StringBuilder();
    sb.append("class AdditionalDataOpenInvoice {\n");
    sb.append("    openinvoicedataMerchantData: ").append(toIndentedString(openinvoicedataMerchantData)).append("\n");
    sb.append("    openinvoicedataNumberOfLines: ").append(toIndentedString(openinvoicedataNumberOfLines)).append("\n");
    sb.append("    openinvoicedataRecipientFirstName: ").append(toIndentedString(openinvoicedataRecipientFirstName)).append("\n");
    sb.append("    openinvoicedataRecipientLastName: ").append(toIndentedString(openinvoicedataRecipientLastName)).append("\n");
    sb.append("    openinvoicedataLineItemNrCurrencyCode: ").append(toIndentedString(openinvoicedataLineItemNrCurrencyCode)).append("\n");
    sb.append("    openinvoicedataLineItemNrDescription: ").append(toIndentedString(openinvoicedataLineItemNrDescription)).append("\n");
    sb.append("    openinvoicedataLineItemNrItemAmount: ").append(toIndentedString(openinvoicedataLineItemNrItemAmount)).append("\n");
    sb.append("    openinvoicedataLineItemNrItemId: ").append(toIndentedString(openinvoicedataLineItemNrItemId)).append("\n");
    sb.append("    openinvoicedataLineItemNrItemVatAmount: ").append(toIndentedString(openinvoicedataLineItemNrItemVatAmount)).append("\n");
    sb.append("    openinvoicedataLineItemNrItemVatPercentage: ").append(toIndentedString(openinvoicedataLineItemNrItemVatPercentage)).append("\n");
    sb.append("    openinvoicedataLineItemNrNumberOfItems: ").append(toIndentedString(openinvoicedataLineItemNrNumberOfItems)).append("\n");
    sb.append("    openinvoicedataLineItemNrReturnShippingCompany: ").append(toIndentedString(openinvoicedataLineItemNrReturnShippingCompany)).append("\n");
    sb.append("    openinvoicedataLineItemNrReturnTrackingNumber: ").append(toIndentedString(openinvoicedataLineItemNrReturnTrackingNumber)).append("\n");
    sb.append("    openinvoicedataLineItemNrReturnTrackingUri: ").append(toIndentedString(openinvoicedataLineItemNrReturnTrackingUri)).append("\n");
    sb.append("    openinvoicedataLineItemNrShippingCompany: ").append(toIndentedString(openinvoicedataLineItemNrShippingCompany)).append("\n");
    sb.append("    openinvoicedataLineItemNrShippingMethod: ").append(toIndentedString(openinvoicedataLineItemNrShippingMethod)).append("\n");
    sb.append("    openinvoicedataLineItemNrTrackingNumber: ").append(toIndentedString(openinvoicedataLineItemNrTrackingNumber)).append("\n");
    sb.append("    openinvoicedataLineItemNrTrackingUri: ").append(toIndentedString(openinvoicedataLineItemNrTrackingUri)).append("\n");
    sb.append("}");
    return sb.toString();
  }

  /**
   * Convert the given object to string with each line indented by 4 spaces
   * (except the first line).
   */
  private String toIndentedString(Object o) {
    if (o == null) {
      return "null";
    }
    return o.toString().replace("\n", "\n    ");
  }

/**
   * Create an instance of AdditionalDataOpenInvoice given an JSON string
   *
   * @param jsonString JSON string
   * @return An instance of AdditionalDataOpenInvoice
   * @throws JsonProcessingException if the JSON string is invalid with respect to AdditionalDataOpenInvoice
   */
  public static AdditionalDataOpenInvoice fromJson(String jsonString) throws JsonProcessingException {
    return JSON.getMapper().readValue(jsonString, AdditionalDataOpenInvoice.class);
  }
/**
  * Convert an instance of AdditionalDataOpenInvoice to an JSON string
  *
  * @return JSON string
  */
  public String toJson() throws JsonProcessingException {
    return JSON.getMapper().writeValueAsString(this);
  }
}

