/*
 * 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 java.util.HashMap;
import java.util.List;
import java.util.Map;
import org.openapitools.client.model.AddressDto;
import org.openapitools.client.model.BusinessEntityDto;
import org.openapitools.client.model.ContactInformationDto;
import org.openapitools.client.model.CustomFieldsDto;
import org.openapitools.client.model.CustomersDto;
import org.openapitools.client.model.SequenceDto;

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

  public static final String SERIALIZED_NAME_CODE = "code";
  @SerializedName(SERIALIZED_NAME_CODE)
  private String code;

  public static final String SERIALIZED_NAME_DESCRIPTION = "description";
  @SerializedName(SERIALIZED_NAME_DESCRIPTION)
  private String description;

  public static final String SERIALIZED_NAME_UPDATED_CODE = "updatedCode";
  @SerializedName(SERIALIZED_NAME_UPDATED_CODE)
  private String updatedCode;

  public static final String SERIALIZED_NAME_CURRENCY_CODE = "currencyCode";
  @SerializedName(SERIALIZED_NAME_CURRENCY_CODE)
  private String currencyCode;

  public static final String SERIALIZED_NAME_COUNTRY_CODE = "countryCode";
  @SerializedName(SERIALIZED_NAME_COUNTRY_CODE)
  private String countryCode;

  public static final String SERIALIZED_NAME_LANGUAGE_CODE = "languageCode";
  @SerializedName(SERIALIZED_NAME_LANGUAGE_CODE)
  private String languageCode;

  public static final String SERIALIZED_NAME_PARENT_SELLER = "parentSeller";
  @SerializedName(SERIALIZED_NAME_PARENT_SELLER)
  private String parentSeller;

  public static final String SERIALIZED_NAME_CUSTOMERS = "customers";
  @SerializedName(SERIALIZED_NAME_CUSTOMERS)
  private CustomersDto customers;

  public static final String SERIALIZED_NAME_CUSTOM_FIELDS = "customFields";
  @SerializedName(SERIALIZED_NAME_CUSTOM_FIELDS)
  private CustomFieldsDto customFields;

  public static final String SERIALIZED_NAME_INVOICE_TYPE_SEQUENCES = "invoiceTypeSequences";
  @SerializedName(SERIALIZED_NAME_INVOICE_TYPE_SEQUENCES)
  private Map<String, SequenceDto> invoiceTypeSequences = null;

  public static final String SERIALIZED_NAME_BUSINESS_ACCOUNT_MODEL = "businessAccountModel";
  @SerializedName(SERIALIZED_NAME_BUSINESS_ACCOUNT_MODEL)
  private BusinessEntityDto businessAccountModel;

  public static final String SERIALIZED_NAME_CONTACT_INFORMATION = "contactInformation";
  @SerializedName(SERIALIZED_NAME_CONTACT_INFORMATION)
  private ContactInformationDto contactInformation;

  public static final String SERIALIZED_NAME_ADDRESS = "address";
  @SerializedName(SERIALIZED_NAME_ADDRESS)
  private AddressDto address;

  public static final String SERIALIZED_NAME_VAT_NO = "vatNo";
  @SerializedName(SERIALIZED_NAME_VAT_NO)
  private String vatNo;

  public static final String SERIALIZED_NAME_REGISTRATION_NO = "registrationNo";
  @SerializedName(SERIALIZED_NAME_REGISTRATION_NO)
  private String registrationNo;

  public static final String SERIALIZED_NAME_LEGAL_TEXT = "legalText";
  @SerializedName(SERIALIZED_NAME_LEGAL_TEXT)
  private String legalText;

  public static final String SERIALIZED_NAME_LEGAL_TYPE = "legalType";
  @SerializedName(SERIALIZED_NAME_LEGAL_TYPE)
  private String legalType;


  public SellerDto id(Long id) {
    
    this.id = id;
    return this;
  }

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

  public Long getId() {
    return id;
  }



  public void setId(Long id) {
    this.id = id;
  }


  public SellerDto code(String code) {
    
    this.code = code;
    return this;
  }

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

  public String getCode() {
    return code;
  }



  public void setCode(String code) {
    this.code = code;
  }


  public SellerDto description(String description) {
    
    this.description = description;
    return this;
  }

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

  public String getDescription() {
    return description;
  }



  public void setDescription(String description) {
    this.description = description;
  }


  public SellerDto updatedCode(String updatedCode) {
    
    this.updatedCode = updatedCode;
    return this;
  }

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

  public String getUpdatedCode() {
    return updatedCode;
  }



  public void setUpdatedCode(String updatedCode) {
    this.updatedCode = updatedCode;
  }


  public SellerDto currencyCode(String currencyCode) {
    
    this.currencyCode = currencyCode;
    return this;
  }

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

  public String getCurrencyCode() {
    return currencyCode;
  }



  public void setCurrencyCode(String currencyCode) {
    this.currencyCode = currencyCode;
  }


  public SellerDto countryCode(String countryCode) {
    
    this.countryCode = countryCode;
    return this;
  }

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

  public String getCountryCode() {
    return countryCode;
  }



  public void setCountryCode(String countryCode) {
    this.countryCode = countryCode;
  }


  public SellerDto languageCode(String languageCode) {
    
    this.languageCode = languageCode;
    return this;
  }

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

  public String getLanguageCode() {
    return languageCode;
  }



  public void setLanguageCode(String languageCode) {
    this.languageCode = languageCode;
  }


  public SellerDto parentSeller(String parentSeller) {
    
    this.parentSeller = parentSeller;
    return this;
  }

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

  public String getParentSeller() {
    return parentSeller;
  }



  public void setParentSeller(String parentSeller) {
    this.parentSeller = parentSeller;
  }


  public SellerDto customers(CustomersDto customers) {
    
    this.customers = customers;
    return this;
  }

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

  public CustomersDto getCustomers() {
    return customers;
  }



  public void setCustomers(CustomersDto customers) {
    this.customers = customers;
  }


  public SellerDto customFields(CustomFieldsDto customFields) {
    
    this.customFields = customFields;
    return this;
  }

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

  public CustomFieldsDto getCustomFields() {
    return customFields;
  }



  public void setCustomFields(CustomFieldsDto customFields) {
    this.customFields = customFields;
  }


  public SellerDto invoiceTypeSequences(Map<String, SequenceDto> invoiceTypeSequences) {
    
    this.invoiceTypeSequences = invoiceTypeSequences;
    return this;
  }

  public SellerDto putInvoiceTypeSequencesItem(String key, SequenceDto invoiceTypeSequencesItem) {
    if (this.invoiceTypeSequences == null) {
      this.invoiceTypeSequences = new HashMap<String, SequenceDto>();
    }
    this.invoiceTypeSequences.put(key, invoiceTypeSequencesItem);
    return this;
  }

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

  public Map<String, SequenceDto> getInvoiceTypeSequences() {
    return invoiceTypeSequences;
  }



  public void setInvoiceTypeSequences(Map<String, SequenceDto> invoiceTypeSequences) {
    this.invoiceTypeSequences = invoiceTypeSequences;
  }


  public SellerDto businessAccountModel(BusinessEntityDto businessAccountModel) {
    
    this.businessAccountModel = businessAccountModel;
    return this;
  }

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

  public BusinessEntityDto getBusinessAccountModel() {
    return businessAccountModel;
  }



  public void setBusinessAccountModel(BusinessEntityDto businessAccountModel) {
    this.businessAccountModel = businessAccountModel;
  }


  public SellerDto contactInformation(ContactInformationDto contactInformation) {
    
    this.contactInformation = contactInformation;
    return this;
  }

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

  public ContactInformationDto getContactInformation() {
    return contactInformation;
  }



  public void setContactInformation(ContactInformationDto contactInformation) {
    this.contactInformation = contactInformation;
  }


  public SellerDto address(AddressDto address) {
    
    this.address = address;
    return this;
  }

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

  public AddressDto getAddress() {
    return address;
  }



  public void setAddress(AddressDto address) {
    this.address = address;
  }


  public SellerDto vatNo(String vatNo) {
    
    this.vatNo = vatNo;
    return this;
  }

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

  public String getVatNo() {
    return vatNo;
  }



  public void setVatNo(String vatNo) {
    this.vatNo = vatNo;
  }


  public SellerDto registrationNo(String registrationNo) {
    
    this.registrationNo = registrationNo;
    return this;
  }

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

  public String getRegistrationNo() {
    return registrationNo;
  }



  public void setRegistrationNo(String registrationNo) {
    this.registrationNo = registrationNo;
  }


  public SellerDto legalText(String legalText) {
    
    this.legalText = legalText;
    return this;
  }

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

  public String getLegalText() {
    return legalText;
  }



  public void setLegalText(String legalText) {
    this.legalText = legalText;
  }


  public SellerDto legalType(String legalType) {
    
    this.legalType = legalType;
    return this;
  }

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

  public String getLegalType() {
    return legalType;
  }



  public void setLegalType(String legalType) {
    this.legalType = legalType;
  }


  @Override
  public boolean equals(java.lang.Object o) {
    if (this == o) {
      return true;
    }
    if (o == null || getClass() != o.getClass()) {
      return false;
    }
    SellerDto sellerDto = (SellerDto) o;
    return Objects.equals(this.id, sellerDto.id) &&
        Objects.equals(this.code, sellerDto.code) &&
        Objects.equals(this.description, sellerDto.description) &&
        Objects.equals(this.updatedCode, sellerDto.updatedCode) &&
        Objects.equals(this.currencyCode, sellerDto.currencyCode) &&
        Objects.equals(this.countryCode, sellerDto.countryCode) &&
        Objects.equals(this.languageCode, sellerDto.languageCode) &&
        Objects.equals(this.parentSeller, sellerDto.parentSeller) &&
        Objects.equals(this.customers, sellerDto.customers) &&
        Objects.equals(this.customFields, sellerDto.customFields) &&
        Objects.equals(this.invoiceTypeSequences, sellerDto.invoiceTypeSequences) &&
        Objects.equals(this.businessAccountModel, sellerDto.businessAccountModel) &&
        Objects.equals(this.contactInformation, sellerDto.contactInformation) &&
        Objects.equals(this.address, sellerDto.address) &&
        Objects.equals(this.vatNo, sellerDto.vatNo) &&
        Objects.equals(this.registrationNo, sellerDto.registrationNo) &&
        Objects.equals(this.legalText, sellerDto.legalText) &&
        Objects.equals(this.legalType, sellerDto.legalType);
  }

  @Override
  public int hashCode() {
    return Objects.hash(id, code, description, updatedCode, currencyCode, countryCode, languageCode, parentSeller, customers, customFields, invoiceTypeSequences, businessAccountModel, contactInformation, address, vatNo, registrationNo, legalText, legalType);
  }


  @Override
  public String toString() {
    StringBuilder sb = new StringBuilder();
    sb.append("class SellerDto {\n");
    sb.append("    id: ").append(toIndentedString(id)).append("\n");
    sb.append("    code: ").append(toIndentedString(code)).append("\n");
    sb.append("    description: ").append(toIndentedString(description)).append("\n");
    sb.append("    updatedCode: ").append(toIndentedString(updatedCode)).append("\n");
    sb.append("    currencyCode: ").append(toIndentedString(currencyCode)).append("\n");
    sb.append("    countryCode: ").append(toIndentedString(countryCode)).append("\n");
    sb.append("    languageCode: ").append(toIndentedString(languageCode)).append("\n");
    sb.append("    parentSeller: ").append(toIndentedString(parentSeller)).append("\n");
    sb.append("    customers: ").append(toIndentedString(customers)).append("\n");
    sb.append("    customFields: ").append(toIndentedString(customFields)).append("\n");
    sb.append("    invoiceTypeSequences: ").append(toIndentedString(invoiceTypeSequences)).append("\n");
    sb.append("    businessAccountModel: ").append(toIndentedString(businessAccountModel)).append("\n");
    sb.append("    contactInformation: ").append(toIndentedString(contactInformation)).append("\n");
    sb.append("    address: ").append(toIndentedString(address)).append("\n");
    sb.append("    vatNo: ").append(toIndentedString(vatNo)).append("\n");
    sb.append("    registrationNo: ").append(toIndentedString(registrationNo)).append("\n");
    sb.append("    legalText: ").append(toIndentedString(legalText)).append("\n");
    sb.append("    legalType: ").append(toIndentedString(legalType)).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    ");
  }

}

