/*
 * Swagger of Opencellsoft Api
 * @#Introduction
 *
 * The version of the OpenAPI document: 7.3.1-SNAPSHOT
 * Contact: contact@opencellsoft.fr
 *
 * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
 * https://openapi-generator.tech
 * Do not edit the class manually.
 */


package org.openapitools.client.model;

import java.util.Objects;
import java.util.Arrays;
import com.google.gson.TypeAdapter;
import com.google.gson.annotations.JsonAdapter;
import com.google.gson.annotations.SerializedName;
import com.google.gson.stream.JsonReader;
import com.google.gson.stream.JsonWriter;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import java.io.IOException;
import org.threeten.bp.OffsetDateTime;

/**
 * InvoiceSubCategoryCountryDto
 */
@javax.annotation.Generated(value = "org.openapitools.codegen.languages.JavaClientCodegen", date = "2019-09-13T10:03:17.753Z[GMT]")
public class InvoiceSubCategoryCountryDto {
  public static final String SERIALIZED_NAME_INVOICE_SUB_CATEGORY = "invoiceSubCategory";
  @SerializedName(SERIALIZED_NAME_INVOICE_SUB_CATEGORY)
  private String invoiceSubCategory;

  public static final String SERIALIZED_NAME_SELLING_COUNTRY = "sellingCountry";
  @SerializedName(SERIALIZED_NAME_SELLING_COUNTRY)
  private String sellingCountry;

  public static final String SERIALIZED_NAME_COUNTRY = "country";
  @SerializedName(SERIALIZED_NAME_COUNTRY)
  private String country;

  public static final String SERIALIZED_NAME_TAX = "tax";
  @SerializedName(SERIALIZED_NAME_TAX)
  private String tax;

  public static final String SERIALIZED_NAME_TAX_CODE_E_L = "taxCodeEL";
  @SerializedName(SERIALIZED_NAME_TAX_CODE_E_L)
  private String taxCodeEL;

  public static final String SERIALIZED_NAME_TAX_CODE_E_L_SPARK = "taxCodeELSpark";
  @SerializedName(SERIALIZED_NAME_TAX_CODE_E_L_SPARK)
  private String taxCodeELSpark;

  public static final String SERIALIZED_NAME_DISCOUNT_CODE = "discountCode";
  @SerializedName(SERIALIZED_NAME_DISCOUNT_CODE)
  private String discountCode;

  public static final String SERIALIZED_NAME_FILTER_E_L = "filterEL";
  @SerializedName(SERIALIZED_NAME_FILTER_E_L)
  private String filterEL;

  public static final String SERIALIZED_NAME_START_VALIDITY_DATE = "startValidityDate";
  @SerializedName(SERIALIZED_NAME_START_VALIDITY_DATE)
  private OffsetDateTime startValidityDate;

  public static final String SERIALIZED_NAME_END_VALIDITY_DATE = "endValidityDate";
  @SerializedName(SERIALIZED_NAME_END_VALIDITY_DATE)
  private OffsetDateTime endValidityDate;

  public static final String SERIALIZED_NAME_PRIORITY = "priority";
  @SerializedName(SERIALIZED_NAME_PRIORITY)
  private Integer priority;


  public InvoiceSubCategoryCountryDto invoiceSubCategory(String invoiceSubCategory) {
    
    this.invoiceSubCategory = invoiceSubCategory;
    return this;
  }

   /**
   * Get invoiceSubCategory
   * @return invoiceSubCategory
  **/
  @ApiModelProperty(required = true, value = "")

  public String getInvoiceSubCategory() {
    return invoiceSubCategory;
  }



  public void setInvoiceSubCategory(String invoiceSubCategory) {
    this.invoiceSubCategory = invoiceSubCategory;
  }


  public InvoiceSubCategoryCountryDto sellingCountry(String sellingCountry) {
    
    this.sellingCountry = sellingCountry;
    return this;
  }

   /**
   * Get sellingCountry
   * @return sellingCountry
  **/
  @javax.annotation.Nullable
  @ApiModelProperty(value = "")

  public String getSellingCountry() {
    return sellingCountry;
  }



  public void setSellingCountry(String sellingCountry) {
    this.sellingCountry = sellingCountry;
  }


  public InvoiceSubCategoryCountryDto country(String country) {
    
    this.country = country;
    return this;
  }

   /**
   * Get country
   * @return country
  **/
  @javax.annotation.Nullable
  @ApiModelProperty(value = "")

  public String getCountry() {
    return country;
  }



  public void setCountry(String country) {
    this.country = country;
  }


  public InvoiceSubCategoryCountryDto tax(String tax) {
    
    this.tax = tax;
    return this;
  }

   /**
   * Get tax
   * @return tax
  **/
  @javax.annotation.Nullable
  @ApiModelProperty(value = "")

  public String getTax() {
    return tax;
  }



  public void setTax(String tax) {
    this.tax = tax;
  }


  public InvoiceSubCategoryCountryDto taxCodeEL(String taxCodeEL) {
    
    this.taxCodeEL = taxCodeEL;
    return this;
  }

   /**
   * Get taxCodeEL
   * @return taxCodeEL
  **/
  @javax.annotation.Nullable
  @ApiModelProperty(value = "")

  public String getTaxCodeEL() {
    return taxCodeEL;
  }



  public void setTaxCodeEL(String taxCodeEL) {
    this.taxCodeEL = taxCodeEL;
  }


  public InvoiceSubCategoryCountryDto taxCodeELSpark(String taxCodeELSpark) {
    
    this.taxCodeELSpark = taxCodeELSpark;
    return this;
  }

   /**
   * Get taxCodeELSpark
   * @return taxCodeELSpark
  **/
  @javax.annotation.Nullable
  @ApiModelProperty(value = "")

  public String getTaxCodeELSpark() {
    return taxCodeELSpark;
  }



  public void setTaxCodeELSpark(String taxCodeELSpark) {
    this.taxCodeELSpark = taxCodeELSpark;
  }


  public InvoiceSubCategoryCountryDto discountCode(String discountCode) {
    
    this.discountCode = discountCode;
    return this;
  }

   /**
   * Get discountCode
   * @return discountCode
  **/
  @javax.annotation.Nullable
  @ApiModelProperty(value = "")

  public String getDiscountCode() {
    return discountCode;
  }



  public void setDiscountCode(String discountCode) {
    this.discountCode = discountCode;
  }


  public InvoiceSubCategoryCountryDto filterEL(String filterEL) {
    
    this.filterEL = filterEL;
    return this;
  }

   /**
   * Get filterEL
   * @return filterEL
  **/
  @javax.annotation.Nullable
  @ApiModelProperty(value = "")

  public String getFilterEL() {
    return filterEL;
  }



  public void setFilterEL(String filterEL) {
    this.filterEL = filterEL;
  }


  public InvoiceSubCategoryCountryDto startValidityDate(OffsetDateTime startValidityDate) {
    
    this.startValidityDate = startValidityDate;
    return this;
  }

   /**
   * Get startValidityDate
   * @return startValidityDate
  **/
  @javax.annotation.Nullable
  @ApiModelProperty(value = "")

  public OffsetDateTime getStartValidityDate() {
    return startValidityDate;
  }



  public void setStartValidityDate(OffsetDateTime startValidityDate) {
    this.startValidityDate = startValidityDate;
  }


  public InvoiceSubCategoryCountryDto endValidityDate(OffsetDateTime endValidityDate) {
    
    this.endValidityDate = endValidityDate;
    return this;
  }

   /**
   * Get endValidityDate
   * @return endValidityDate
  **/
  @javax.annotation.Nullable
  @ApiModelProperty(value = "")

  public OffsetDateTime getEndValidityDate() {
    return endValidityDate;
  }



  public void setEndValidityDate(OffsetDateTime endValidityDate) {
    this.endValidityDate = endValidityDate;
  }


  public InvoiceSubCategoryCountryDto priority(Integer priority) {
    
    this.priority = priority;
    return this;
  }

   /**
   * Get priority
   * @return priority
  **/
  @javax.annotation.Nullable
  @ApiModelProperty(value = "")

  public Integer getPriority() {
    return priority;
  }



  public void setPriority(Integer priority) {
    this.priority = priority;
  }


  @Override
  public boolean equals(java.lang.Object o) {
    if (this == o) {
      return true;
    }
    if (o == null || getClass() != o.getClass()) {
      return false;
    }
    InvoiceSubCategoryCountryDto invoiceSubCategoryCountryDto = (InvoiceSubCategoryCountryDto) o;
    return Objects.equals(this.invoiceSubCategory, invoiceSubCategoryCountryDto.invoiceSubCategory) &&
        Objects.equals(this.sellingCountry, invoiceSubCategoryCountryDto.sellingCountry) &&
        Objects.equals(this.country, invoiceSubCategoryCountryDto.country) &&
        Objects.equals(this.tax, invoiceSubCategoryCountryDto.tax) &&
        Objects.equals(this.taxCodeEL, invoiceSubCategoryCountryDto.taxCodeEL) &&
        Objects.equals(this.taxCodeELSpark, invoiceSubCategoryCountryDto.taxCodeELSpark) &&
        Objects.equals(this.discountCode, invoiceSubCategoryCountryDto.discountCode) &&
        Objects.equals(this.filterEL, invoiceSubCategoryCountryDto.filterEL) &&
        Objects.equals(this.startValidityDate, invoiceSubCategoryCountryDto.startValidityDate) &&
        Objects.equals(this.endValidityDate, invoiceSubCategoryCountryDto.endValidityDate) &&
        Objects.equals(this.priority, invoiceSubCategoryCountryDto.priority);
  }

  @Override
  public int hashCode() {
    return Objects.hash(invoiceSubCategory, sellingCountry, country, tax, taxCodeEL, taxCodeELSpark, discountCode, filterEL, startValidityDate, endValidityDate, priority);
  }


  @Override
  public String toString() {
    StringBuilder sb = new StringBuilder();
    sb.append("class InvoiceSubCategoryCountryDto {\n");
    sb.append("    invoiceSubCategory: ").append(toIndentedString(invoiceSubCategory)).append("\n");
    sb.append("    sellingCountry: ").append(toIndentedString(sellingCountry)).append("\n");
    sb.append("    country: ").append(toIndentedString(country)).append("\n");
    sb.append("    tax: ").append(toIndentedString(tax)).append("\n");
    sb.append("    taxCodeEL: ").append(toIndentedString(taxCodeEL)).append("\n");
    sb.append("    taxCodeELSpark: ").append(toIndentedString(taxCodeELSpark)).append("\n");
    sb.append("    discountCode: ").append(toIndentedString(discountCode)).append("\n");
    sb.append("    filterEL: ").append(toIndentedString(filterEL)).append("\n");
    sb.append("    startValidityDate: ").append(toIndentedString(startValidityDate)).append("\n");
    sb.append("    endValidityDate: ").append(toIndentedString(endValidityDate)).append("\n");
    sb.append("    priority: ").append(toIndentedString(priority)).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(java.lang.Object o) {
    if (o == null) {
      return "null";
    }
    return o.toString().replace("\n", "\n    ");
  }

}

