/*
 * 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.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import org.openapitools.client.model.AccountOperation;
import org.openapitools.client.model.ActionDunning;
import org.openapitools.client.model.Address;
import org.openapitools.client.model.AddressBook;
import org.openapitools.client.model.Auditable;
import org.openapitools.client.model.AuditableFieldHistory;
import org.openapitools.client.model.BillingAccount;
import org.openapitools.client.model.BusinessAccountModel;
import org.openapitools.client.model.BusinessEntity;
import org.openapitools.client.model.CheckPaymentMethod;
import org.openapitools.client.model.ContactInformation;
import org.openapitools.client.model.CreditCategory;
import org.openapitools.client.model.CustomFieldValues;
import org.openapitools.client.model.Customer;
import org.openapitools.client.model.DDPaymentMethod;
import org.openapitools.client.model.DunningDocument;
import org.openapitools.client.model.ICustomFieldEntity;
import org.openapitools.client.model.Name;
import org.openapitools.client.model.PaymentMethod;
import org.openapitools.client.model.ProviderContact;
import org.openapitools.client.model.TradingCurrency;
import org.openapitools.client.model.TradingLanguage;
import org.openapitools.client.model.WirePaymentMethod;
import org.threeten.bp.OffsetDateTime;

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

  public static final String SERIALIZED_NAME_VERSION = "version";
  @SerializedName(SERIALIZED_NAME_VERSION)
  private Integer version;

  public static final String SERIALIZED_NAME_AUDITABLE = "auditable";
  @SerializedName(SERIALIZED_NAME_AUDITABLE)
  private Auditable auditable;

  public static final String SERIALIZED_NAME_HISTORIZED = "historized";
  @SerializedName(SERIALIZED_NAME_HISTORIZED)
  private Boolean historized;

  public static final String SERIALIZED_NAME_NOTIFIED = "notified";
  @SerializedName(SERIALIZED_NAME_NOTIFIED)
  private Boolean notified;

  public static final String SERIALIZED_NAME_AUDITABLE_FIELDS = "auditableFields";
  @SerializedName(SERIALIZED_NAME_AUDITABLE_FIELDS)
  private List<AuditableFieldHistory> auditableFields = null;

  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_APPEND_GENERATED_CODE = "appendGeneratedCode";
  @SerializedName(SERIALIZED_NAME_APPEND_GENERATED_CODE)
  private Boolean appendGeneratedCode;

  public static final String SERIALIZED_NAME_UUID = "uuid";
  @SerializedName(SERIALIZED_NAME_UUID)
  private String uuid;

  public static final String SERIALIZED_NAME_CF_VALUES = "cfValues";
  @SerializedName(SERIALIZED_NAME_CF_VALUES)
  private CustomFieldValues cfValues;

  public static final String SERIALIZED_NAME_CF_ACCUMULATED_VALUES = "cfAccumulatedValues";
  @SerializedName(SERIALIZED_NAME_CF_ACCUMULATED_VALUES)
  private CustomFieldValues cfAccumulatedValues;

  public static final String SERIALIZED_NAME_EXTERNAL_REF1 = "externalRef1";
  @SerializedName(SERIALIZED_NAME_EXTERNAL_REF1)
  private String externalRef1;

  public static final String SERIALIZED_NAME_EXTERNAL_REF2 = "externalRef2";
  @SerializedName(SERIALIZED_NAME_EXTERNAL_REF2)
  private String externalRef2;

  public static final String SERIALIZED_NAME_NAME = "name";
  @SerializedName(SERIALIZED_NAME_NAME)
  private Name name;

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

  public static final String SERIALIZED_NAME_DEFAULT_LEVEL = "defaultLevel";
  @SerializedName(SERIALIZED_NAME_DEFAULT_LEVEL)
  private Boolean defaultLevel;

  public static final String SERIALIZED_NAME_PROVIDER_CONTACT = "providerContact";
  @SerializedName(SERIALIZED_NAME_PROVIDER_CONTACT)
  private String providerContact;

  public static final String SERIALIZED_NAME_PRIMARY_CONTACT = "primaryContact";
  @SerializedName(SERIALIZED_NAME_PRIMARY_CONTACT)
  private ProviderContact primaryContact;

  public static final String SERIALIZED_NAME_ACCOUNT_TYPE = "accountType";
  @SerializedName(SERIALIZED_NAME_ACCOUNT_TYPE)
  private String accountType;

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

  public static final String SERIALIZED_NAME_JOB_TITLE = "jobTitle";
  @SerializedName(SERIALIZED_NAME_JOB_TITLE)
  private String jobTitle;

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

  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_ADDRESSBOOK = "addressbook";
  @SerializedName(SERIALIZED_NAME_ADDRESSBOOK)
  private AddressBook addressbook;

  public static final String SERIALIZED_NAME_TRADING_CURRENCY = "tradingCurrency";
  @SerializedName(SERIALIZED_NAME_TRADING_CURRENCY)
  private TradingCurrency tradingCurrency;

  /**
   * Gets or Sets status
   */
  @JsonAdapter(StatusEnum.Adapter.class)
  public enum StatusEnum {
    ACTIVE("ACTIVE"),
    
    CLOSE("CLOSE");

    private String value;

    StatusEnum(String value) {
      this.value = value;
    }

    public String getValue() {
      return value;
    }

    @Override
    public String toString() {
      return String.valueOf(value);
    }

    public static StatusEnum fromValue(String value) {
      for (StatusEnum b : StatusEnum.values()) {
        if (b.value.equals(value)) {
          return b;
        }
      }
      throw new IllegalArgumentException("Unexpected value '" + value + "'");
    }

    public static class Adapter extends TypeAdapter<StatusEnum> {
      @Override
      public void write(final JsonWriter jsonWriter, final StatusEnum enumeration) throws IOException {
        jsonWriter.value(enumeration.getValue());
      }

      @Override
      public StatusEnum read(final JsonReader jsonReader) throws IOException {
        String value = jsonReader.nextString();
        return StatusEnum.fromValue(value);
      }
    }
  }

  public static final String SERIALIZED_NAME_STATUS = "status";
  @SerializedName(SERIALIZED_NAME_STATUS)
  private StatusEnum status;

  public static final String SERIALIZED_NAME_CREDIT_CATEGORY = "creditCategory";
  @SerializedName(SERIALIZED_NAME_CREDIT_CATEGORY)
  private CreditCategory creditCategory;

  public static final String SERIALIZED_NAME_BILLING_ACCOUNTS = "billingAccounts";
  @SerializedName(SERIALIZED_NAME_BILLING_ACCOUNTS)
  private List<BillingAccount> billingAccounts = null;

  public static final String SERIALIZED_NAME_ACCOUNT_OPERATIONS = "accountOperations";
  @SerializedName(SERIALIZED_NAME_ACCOUNT_OPERATIONS)
  private List<AccountOperation> accountOperations = null;

  public static final String SERIALIZED_NAME_DUNNING_DOCUMENTS = "dunningDocuments";
  @SerializedName(SERIALIZED_NAME_DUNNING_DOCUMENTS)
  private List<DunningDocument> dunningDocuments = null;

  public static final String SERIALIZED_NAME_ACTION_DUNNINGS = "actionDunnings";
  @SerializedName(SERIALIZED_NAME_ACTION_DUNNINGS)
  private List<ActionDunning> actionDunnings = null;

  public static final String SERIALIZED_NAME_DATE_STATUS = "dateStatus";
  @SerializedName(SERIALIZED_NAME_DATE_STATUS)
  private OffsetDateTime dateStatus;

  public static final String SERIALIZED_NAME_DATE_DUNNING_LEVEL = "dateDunningLevel";
  @SerializedName(SERIALIZED_NAME_DATE_DUNNING_LEVEL)
  private OffsetDateTime dateDunningLevel;

  public static final String SERIALIZED_NAME_CUSTOMER = "customer";
  @SerializedName(SERIALIZED_NAME_CUSTOMER)
  private Customer customer;

  /**
   * Gets or Sets dunningLevel
   */
  @JsonAdapter(DunningLevelEnum.Adapter.class)
  public enum DunningLevelEnum {
    R0("R0"),
    
    R1("R1"),
    
    R2("R2"),
    
    R3("R3"),
    
    R4("R4");

    private String value;

    DunningLevelEnum(String value) {
      this.value = value;
    }

    public String getValue() {
      return value;
    }

    @Override
    public String toString() {
      return String.valueOf(value);
    }

    public static DunningLevelEnum fromValue(String value) {
      for (DunningLevelEnum b : DunningLevelEnum.values()) {
        if (b.value.equals(value)) {
          return b;
        }
      }
      throw new IllegalArgumentException("Unexpected value '" + value + "'");
    }

    public static class Adapter extends TypeAdapter<DunningLevelEnum> {
      @Override
      public void write(final JsonWriter jsonWriter, final DunningLevelEnum enumeration) throws IOException {
        jsonWriter.value(enumeration.getValue());
      }

      @Override
      public DunningLevelEnum read(final JsonReader jsonReader) throws IOException {
        String value = jsonReader.nextString();
        return DunningLevelEnum.fromValue(value);
      }
    }
  }

  public static final String SERIALIZED_NAME_DUNNING_LEVEL = "dunningLevel";
  @SerializedName(SERIALIZED_NAME_DUNNING_LEVEL)
  private DunningLevelEnum dunningLevel;

  public static final String SERIALIZED_NAME_PASSWORD = "password";
  @SerializedName(SERIALIZED_NAME_PASSWORD)
  private String password;

  public static final String SERIALIZED_NAME_DUE_DATE_DELAY_E_L = "dueDateDelayEL";
  @SerializedName(SERIALIZED_NAME_DUE_DATE_DELAY_E_L)
  private String dueDateDelayEL;

  public static final String SERIALIZED_NAME_DUE_DATE_DELAY_E_L_SPARK = "dueDateDelayELSpark";
  @SerializedName(SERIALIZED_NAME_DUE_DATE_DELAY_E_L_SPARK)
  private String dueDateDelayELSpark;

  public static final String SERIALIZED_NAME_TRADING_LANGUAGE = "tradingLanguage";
  @SerializedName(SERIALIZED_NAME_TRADING_LANGUAGE)
  private TradingLanguage tradingLanguage;

  public static final String SERIALIZED_NAME_PAYMENT_METHODS = "paymentMethods";
  @SerializedName(SERIALIZED_NAME_PAYMENT_METHODS)
  private List<PaymentMethod> paymentMethods = null;

  public static final String SERIALIZED_NAME_EXCLUDED_FROM_PAYMENT = "excludedFromPayment";
  @SerializedName(SERIALIZED_NAME_EXCLUDED_FROM_PAYMENT)
  private Boolean excludedFromPayment;

  public static final String SERIALIZED_NAME_AUDITED_METHOD_PAYMENTS = "auditedMethodPayments";
  @SerializedName(SERIALIZED_NAME_AUDITED_METHOD_PAYMENTS)
  private Map<String, List<PaymentMethod>> auditedMethodPayments = null;

  public static final String SERIALIZED_NAME_PARENT_C_F_ENTITIES = "parentCFEntities";
  @SerializedName(SERIALIZED_NAME_PARENT_C_F_ENTITIES)
  private List<ICustomFieldEntity> parentCFEntities = null;

  public static final String SERIALIZED_NAME_PARENT_ENTITY = "parentEntity";
  @SerializedName(SERIALIZED_NAME_PARENT_ENTITY)
  private BusinessEntity parentEntity;

  public static final String SERIALIZED_NAME_PREFERRED_PAYMENT_METHOD = "preferredPaymentMethod";
  @SerializedName(SERIALIZED_NAME_PREFERRED_PAYMENT_METHOD)
  private PaymentMethod preferredPaymentMethod;

  /**
   * Gets or Sets preferredPaymentMethodType
   */
  @JsonAdapter(PreferredPaymentMethodTypeEnum.Adapter.class)
  public enum PreferredPaymentMethodTypeEnum {
    CHECK("CHECK"),
    
    DIRECTDEBIT("DIRECTDEBIT"),
    
    WIRETRANSFER("WIRETRANSFER"),
    
    CARD("CARD");

    private String value;

    PreferredPaymentMethodTypeEnum(String value) {
      this.value = value;
    }

    public String getValue() {
      return value;
    }

    @Override
    public String toString() {
      return String.valueOf(value);
    }

    public static PreferredPaymentMethodTypeEnum fromValue(String value) {
      for (PreferredPaymentMethodTypeEnum b : PreferredPaymentMethodTypeEnum.values()) {
        if (b.value.equals(value)) {
          return b;
        }
      }
      throw new IllegalArgumentException("Unexpected value '" + value + "'");
    }

    public static class Adapter extends TypeAdapter<PreferredPaymentMethodTypeEnum> {
      @Override
      public void write(final JsonWriter jsonWriter, final PreferredPaymentMethodTypeEnum enumeration) throws IOException {
        jsonWriter.value(enumeration.getValue());
      }

      @Override
      public PreferredPaymentMethodTypeEnum read(final JsonReader jsonReader) throws IOException {
        String value = jsonReader.nextString();
        return PreferredPaymentMethodTypeEnum.fromValue(value);
      }
    }
  }

  public static final String SERIALIZED_NAME_PREFERRED_PAYMENT_METHOD_TYPE = "preferredPaymentMethodType";
  @SerializedName(SERIALIZED_NAME_PREFERRED_PAYMENT_METHOD_TYPE)
  private PreferredPaymentMethodTypeEnum preferredPaymentMethodType;

  public static final String SERIALIZED_NAME_DDPAYMENT_METHODS = "ddpaymentMethods";
  @SerializedName(SERIALIZED_NAME_DDPAYMENT_METHODS)
  private List<DDPaymentMethod> ddpaymentMethods = null;

  public static final String SERIALIZED_NAME_WIRE_PAYMENT_METHODS = "wirePaymentMethods";
  @SerializedName(SERIALIZED_NAME_WIRE_PAYMENT_METHODS)
  private List<WirePaymentMethod> wirePaymentMethods = null;

  public static final String SERIALIZED_NAME_CHECK_PAYMENT_METHODS = "checkPaymentMethods";
  @SerializedName(SERIALIZED_NAME_CHECK_PAYMENT_METHODS)
  private List<CheckPaymentMethod> checkPaymentMethods = null;

  public static final String SERIALIZED_NAME_NO_MORE_VALID_CARD = "noMoreValidCard";
  @SerializedName(SERIALIZED_NAME_NO_MORE_VALID_CARD)
  private Boolean noMoreValidCard;

  public static final String SERIALIZED_NAME_CONTACT_INFORMATION_NULL_SAFE = "contactInformationNullSafe";
  @SerializedName(SERIALIZED_NAME_CONTACT_INFORMATION_NULL_SAFE)
  private ContactInformation contactInformationNullSafe;

  public static final String SERIALIZED_NAME_CF_VALUES_NULL_SAFE = "cfValuesNullSafe";
  @SerializedName(SERIALIZED_NAME_CF_VALUES_NULL_SAFE)
  private CustomFieldValues cfValuesNullSafe;

  public static final String SERIALIZED_NAME_CF_VALUES_AS_VALUES = "cfValuesAsValues";
  @SerializedName(SERIALIZED_NAME_CF_VALUES_AS_VALUES)
  private Map<String, Object> cfValuesAsValues = null;

  public static final String SERIALIZED_NAME_CF_ACCUMULATED_VALUES_NULL_SAFE = "cfAccumulatedValuesNullSafe";
  @SerializedName(SERIALIZED_NAME_CF_ACCUMULATED_VALUES_NULL_SAFE)
  private CustomFieldValues cfAccumulatedValuesNullSafe;

  public static final String SERIALIZED_NAME_DESCRIPTION_OR_CODE = "descriptionOrCode";
  @SerializedName(SERIALIZED_NAME_DESCRIPTION_OR_CODE)
  private String descriptionOrCode;

  public static final String SERIALIZED_NAME_DESCRIPTION_AND_CODE = "descriptionAndCode";
  @SerializedName(SERIALIZED_NAME_DESCRIPTION_AND_CODE)
  private String descriptionAndCode;

  public static final String SERIALIZED_NAME_REFERENCE_CODE = "referenceCode";
  @SerializedName(SERIALIZED_NAME_REFERENCE_CODE)
  private String referenceCode;

  public static final String SERIALIZED_NAME_REFERENCE_DESCRIPTION = "referenceDescription";
  @SerializedName(SERIALIZED_NAME_REFERENCE_DESCRIPTION)
  private String referenceDescription;

  public static final String SERIALIZED_NAME_CODE_CHANGED = "codeChanged";
  @SerializedName(SERIALIZED_NAME_CODE_CHANGED)
  private Boolean codeChanged;

  public static final String SERIALIZED_NAME_TRANSIENT = "transient";
  @SerializedName(SERIALIZED_NAME_TRANSIENT)
  private Boolean _transient;


  public CustomerAccount 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 CustomerAccount version(Integer version) {
    
    this.version = version;
    return this;
  }

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

  public Integer getVersion() {
    return version;
  }



  public void setVersion(Integer version) {
    this.version = version;
  }


  public CustomerAccount auditable(Auditable auditable) {
    
    this.auditable = auditable;
    return this;
  }

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

  public Auditable getAuditable() {
    return auditable;
  }



  public void setAuditable(Auditable auditable) {
    this.auditable = auditable;
  }


  public CustomerAccount historized(Boolean historized) {
    
    this.historized = historized;
    return this;
  }

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

  public Boolean getHistorized() {
    return historized;
  }



  public void setHistorized(Boolean historized) {
    this.historized = historized;
  }


  public CustomerAccount notified(Boolean notified) {
    
    this.notified = notified;
    return this;
  }

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

  public Boolean getNotified() {
    return notified;
  }



  public void setNotified(Boolean notified) {
    this.notified = notified;
  }


  public CustomerAccount auditableFields(List<AuditableFieldHistory> auditableFields) {
    
    this.auditableFields = auditableFields;
    return this;
  }

  public CustomerAccount addAuditableFieldsItem(AuditableFieldHistory auditableFieldsItem) {
    if (this.auditableFields == null) {
      this.auditableFields = new ArrayList<AuditableFieldHistory>();
    }
    this.auditableFields.add(auditableFieldsItem);
    return this;
  }

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

  public List<AuditableFieldHistory> getAuditableFields() {
    return auditableFields;
  }



  public void setAuditableFields(List<AuditableFieldHistory> auditableFields) {
    this.auditableFields = auditableFields;
  }


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

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

  public String getCode() {
    return code;
  }



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


  public CustomerAccount 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 CustomerAccount appendGeneratedCode(Boolean appendGeneratedCode) {
    
    this.appendGeneratedCode = appendGeneratedCode;
    return this;
  }

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

  public Boolean getAppendGeneratedCode() {
    return appendGeneratedCode;
  }



  public void setAppendGeneratedCode(Boolean appendGeneratedCode) {
    this.appendGeneratedCode = appendGeneratedCode;
  }


  public CustomerAccount uuid(String uuid) {
    
    this.uuid = uuid;
    return this;
  }

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

  public String getUuid() {
    return uuid;
  }



  public void setUuid(String uuid) {
    this.uuid = uuid;
  }


  public CustomerAccount cfValues(CustomFieldValues cfValues) {
    
    this.cfValues = cfValues;
    return this;
  }

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

  public CustomFieldValues getCfValues() {
    return cfValues;
  }



  public void setCfValues(CustomFieldValues cfValues) {
    this.cfValues = cfValues;
  }


  public CustomerAccount cfAccumulatedValues(CustomFieldValues cfAccumulatedValues) {
    
    this.cfAccumulatedValues = cfAccumulatedValues;
    return this;
  }

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

  public CustomFieldValues getCfAccumulatedValues() {
    return cfAccumulatedValues;
  }



  public void setCfAccumulatedValues(CustomFieldValues cfAccumulatedValues) {
    this.cfAccumulatedValues = cfAccumulatedValues;
  }


  public CustomerAccount externalRef1(String externalRef1) {
    
    this.externalRef1 = externalRef1;
    return this;
  }

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

  public String getExternalRef1() {
    return externalRef1;
  }



  public void setExternalRef1(String externalRef1) {
    this.externalRef1 = externalRef1;
  }


  public CustomerAccount externalRef2(String externalRef2) {
    
    this.externalRef2 = externalRef2;
    return this;
  }

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

  public String getExternalRef2() {
    return externalRef2;
  }



  public void setExternalRef2(String externalRef2) {
    this.externalRef2 = externalRef2;
  }


  public CustomerAccount name(Name name) {
    
    this.name = name;
    return this;
  }

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

  public Name getName() {
    return name;
  }



  public void setName(Name name) {
    this.name = name;
  }


  public CustomerAccount address(Address address) {
    
    this.address = address;
    return this;
  }

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

  public Address getAddress() {
    return address;
  }



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


  public CustomerAccount defaultLevel(Boolean defaultLevel) {
    
    this.defaultLevel = defaultLevel;
    return this;
  }

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

  public Boolean getDefaultLevel() {
    return defaultLevel;
  }



  public void setDefaultLevel(Boolean defaultLevel) {
    this.defaultLevel = defaultLevel;
  }


  public CustomerAccount providerContact(String providerContact) {
    
    this.providerContact = providerContact;
    return this;
  }

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

  public String getProviderContact() {
    return providerContact;
  }



  public void setProviderContact(String providerContact) {
    this.providerContact = providerContact;
  }


  public CustomerAccount primaryContact(ProviderContact primaryContact) {
    
    this.primaryContact = primaryContact;
    return this;
  }

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

  public ProviderContact getPrimaryContact() {
    return primaryContact;
  }



  public void setPrimaryContact(ProviderContact primaryContact) {
    this.primaryContact = primaryContact;
  }


  public CustomerAccount accountType(String accountType) {
    
    this.accountType = accountType;
    return this;
  }

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

  public String getAccountType() {
    return accountType;
  }



  public void setAccountType(String accountType) {
    this.accountType = accountType;
  }


  public CustomerAccount businessAccountModel(BusinessAccountModel businessAccountModel) {
    
    this.businessAccountModel = businessAccountModel;
    return this;
  }

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

  public BusinessAccountModel getBusinessAccountModel() {
    return businessAccountModel;
  }



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


  public CustomerAccount jobTitle(String jobTitle) {
    
    this.jobTitle = jobTitle;
    return this;
  }

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

  public String getJobTitle() {
    return jobTitle;
  }



  public void setJobTitle(String jobTitle) {
    this.jobTitle = jobTitle;
  }


  public CustomerAccount contactInformation(ContactInformation contactInformation) {
    
    this.contactInformation = contactInformation;
    return this;
  }

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

  public ContactInformation getContactInformation() {
    return contactInformation;
  }



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


  public CustomerAccount 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 CustomerAccount 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 CustomerAccount addressbook(AddressBook addressbook) {
    
    this.addressbook = addressbook;
    return this;
  }

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

  public AddressBook getAddressbook() {
    return addressbook;
  }



  public void setAddressbook(AddressBook addressbook) {
    this.addressbook = addressbook;
  }


  public CustomerAccount tradingCurrency(TradingCurrency tradingCurrency) {
    
    this.tradingCurrency = tradingCurrency;
    return this;
  }

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

  public TradingCurrency getTradingCurrency() {
    return tradingCurrency;
  }



  public void setTradingCurrency(TradingCurrency tradingCurrency) {
    this.tradingCurrency = tradingCurrency;
  }


  public CustomerAccount status(StatusEnum status) {
    
    this.status = status;
    return this;
  }

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

  public StatusEnum getStatus() {
    return status;
  }



  public void setStatus(StatusEnum status) {
    this.status = status;
  }


  public CustomerAccount creditCategory(CreditCategory creditCategory) {
    
    this.creditCategory = creditCategory;
    return this;
  }

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

  public CreditCategory getCreditCategory() {
    return creditCategory;
  }



  public void setCreditCategory(CreditCategory creditCategory) {
    this.creditCategory = creditCategory;
  }


  public CustomerAccount billingAccounts(List<BillingAccount> billingAccounts) {
    
    this.billingAccounts = billingAccounts;
    return this;
  }

  public CustomerAccount addBillingAccountsItem(BillingAccount billingAccountsItem) {
    if (this.billingAccounts == null) {
      this.billingAccounts = new ArrayList<BillingAccount>();
    }
    this.billingAccounts.add(billingAccountsItem);
    return this;
  }

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

  public List<BillingAccount> getBillingAccounts() {
    return billingAccounts;
  }



  public void setBillingAccounts(List<BillingAccount> billingAccounts) {
    this.billingAccounts = billingAccounts;
  }


  public CustomerAccount accountOperations(List<AccountOperation> accountOperations) {
    
    this.accountOperations = accountOperations;
    return this;
  }

  public CustomerAccount addAccountOperationsItem(AccountOperation accountOperationsItem) {
    if (this.accountOperations == null) {
      this.accountOperations = new ArrayList<AccountOperation>();
    }
    this.accountOperations.add(accountOperationsItem);
    return this;
  }

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

  public List<AccountOperation> getAccountOperations() {
    return accountOperations;
  }



  public void setAccountOperations(List<AccountOperation> accountOperations) {
    this.accountOperations = accountOperations;
  }


  public CustomerAccount dunningDocuments(List<DunningDocument> dunningDocuments) {
    
    this.dunningDocuments = dunningDocuments;
    return this;
  }

  public CustomerAccount addDunningDocumentsItem(DunningDocument dunningDocumentsItem) {
    if (this.dunningDocuments == null) {
      this.dunningDocuments = new ArrayList<DunningDocument>();
    }
    this.dunningDocuments.add(dunningDocumentsItem);
    return this;
  }

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

  public List<DunningDocument> getDunningDocuments() {
    return dunningDocuments;
  }



  public void setDunningDocuments(List<DunningDocument> dunningDocuments) {
    this.dunningDocuments = dunningDocuments;
  }


  public CustomerAccount actionDunnings(List<ActionDunning> actionDunnings) {
    
    this.actionDunnings = actionDunnings;
    return this;
  }

  public CustomerAccount addActionDunningsItem(ActionDunning actionDunningsItem) {
    if (this.actionDunnings == null) {
      this.actionDunnings = new ArrayList<ActionDunning>();
    }
    this.actionDunnings.add(actionDunningsItem);
    return this;
  }

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

  public List<ActionDunning> getActionDunnings() {
    return actionDunnings;
  }



  public void setActionDunnings(List<ActionDunning> actionDunnings) {
    this.actionDunnings = actionDunnings;
  }


  public CustomerAccount dateStatus(OffsetDateTime dateStatus) {
    
    this.dateStatus = dateStatus;
    return this;
  }

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

  public OffsetDateTime getDateStatus() {
    return dateStatus;
  }



  public void setDateStatus(OffsetDateTime dateStatus) {
    this.dateStatus = dateStatus;
  }


  public CustomerAccount dateDunningLevel(OffsetDateTime dateDunningLevel) {
    
    this.dateDunningLevel = dateDunningLevel;
    return this;
  }

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

  public OffsetDateTime getDateDunningLevel() {
    return dateDunningLevel;
  }



  public void setDateDunningLevel(OffsetDateTime dateDunningLevel) {
    this.dateDunningLevel = dateDunningLevel;
  }


  public CustomerAccount customer(Customer customer) {
    
    this.customer = customer;
    return this;
  }

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

  public Customer getCustomer() {
    return customer;
  }



  public void setCustomer(Customer customer) {
    this.customer = customer;
  }


  public CustomerAccount dunningLevel(DunningLevelEnum dunningLevel) {
    
    this.dunningLevel = dunningLevel;
    return this;
  }

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

  public DunningLevelEnum getDunningLevel() {
    return dunningLevel;
  }



  public void setDunningLevel(DunningLevelEnum dunningLevel) {
    this.dunningLevel = dunningLevel;
  }


  public CustomerAccount password(String password) {
    
    this.password = password;
    return this;
  }

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

  public String getPassword() {
    return password;
  }



  public void setPassword(String password) {
    this.password = password;
  }


  public CustomerAccount dueDateDelayEL(String dueDateDelayEL) {
    
    this.dueDateDelayEL = dueDateDelayEL;
    return this;
  }

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

  public String getDueDateDelayEL() {
    return dueDateDelayEL;
  }



  public void setDueDateDelayEL(String dueDateDelayEL) {
    this.dueDateDelayEL = dueDateDelayEL;
  }


  public CustomerAccount dueDateDelayELSpark(String dueDateDelayELSpark) {
    
    this.dueDateDelayELSpark = dueDateDelayELSpark;
    return this;
  }

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

  public String getDueDateDelayELSpark() {
    return dueDateDelayELSpark;
  }



  public void setDueDateDelayELSpark(String dueDateDelayELSpark) {
    this.dueDateDelayELSpark = dueDateDelayELSpark;
  }


  public CustomerAccount tradingLanguage(TradingLanguage tradingLanguage) {
    
    this.tradingLanguage = tradingLanguage;
    return this;
  }

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

  public TradingLanguage getTradingLanguage() {
    return tradingLanguage;
  }



  public void setTradingLanguage(TradingLanguage tradingLanguage) {
    this.tradingLanguage = tradingLanguage;
  }


  public CustomerAccount paymentMethods(List<PaymentMethod> paymentMethods) {
    
    this.paymentMethods = paymentMethods;
    return this;
  }

  public CustomerAccount addPaymentMethodsItem(PaymentMethod paymentMethodsItem) {
    if (this.paymentMethods == null) {
      this.paymentMethods = new ArrayList<PaymentMethod>();
    }
    this.paymentMethods.add(paymentMethodsItem);
    return this;
  }

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

  public List<PaymentMethod> getPaymentMethods() {
    return paymentMethods;
  }



  public void setPaymentMethods(List<PaymentMethod> paymentMethods) {
    this.paymentMethods = paymentMethods;
  }


  public CustomerAccount excludedFromPayment(Boolean excludedFromPayment) {
    
    this.excludedFromPayment = excludedFromPayment;
    return this;
  }

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

  public Boolean getExcludedFromPayment() {
    return excludedFromPayment;
  }



  public void setExcludedFromPayment(Boolean excludedFromPayment) {
    this.excludedFromPayment = excludedFromPayment;
  }


  public CustomerAccount auditedMethodPayments(Map<String, List<PaymentMethod>> auditedMethodPayments) {
    
    this.auditedMethodPayments = auditedMethodPayments;
    return this;
  }

  public CustomerAccount putAuditedMethodPaymentsItem(String key, List<PaymentMethod> auditedMethodPaymentsItem) {
    if (this.auditedMethodPayments == null) {
      this.auditedMethodPayments = new HashMap<String, List<PaymentMethod>>();
    }
    this.auditedMethodPayments.put(key, auditedMethodPaymentsItem);
    return this;
  }

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

  public Map<String, List<PaymentMethod>> getAuditedMethodPayments() {
    return auditedMethodPayments;
  }



  public void setAuditedMethodPayments(Map<String, List<PaymentMethod>> auditedMethodPayments) {
    this.auditedMethodPayments = auditedMethodPayments;
  }


  public CustomerAccount parentCFEntities(List<ICustomFieldEntity> parentCFEntities) {
    
    this.parentCFEntities = parentCFEntities;
    return this;
  }

  public CustomerAccount addParentCFEntitiesItem(ICustomFieldEntity parentCFEntitiesItem) {
    if (this.parentCFEntities == null) {
      this.parentCFEntities = new ArrayList<ICustomFieldEntity>();
    }
    this.parentCFEntities.add(parentCFEntitiesItem);
    return this;
  }

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

  public List<ICustomFieldEntity> getParentCFEntities() {
    return parentCFEntities;
  }



  public void setParentCFEntities(List<ICustomFieldEntity> parentCFEntities) {
    this.parentCFEntities = parentCFEntities;
  }


  public CustomerAccount parentEntity(BusinessEntity parentEntity) {
    
    this.parentEntity = parentEntity;
    return this;
  }

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

  public BusinessEntity getParentEntity() {
    return parentEntity;
  }



  public void setParentEntity(BusinessEntity parentEntity) {
    this.parentEntity = parentEntity;
  }


  public CustomerAccount preferredPaymentMethod(PaymentMethod preferredPaymentMethod) {
    
    this.preferredPaymentMethod = preferredPaymentMethod;
    return this;
  }

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

  public PaymentMethod getPreferredPaymentMethod() {
    return preferredPaymentMethod;
  }



  public void setPreferredPaymentMethod(PaymentMethod preferredPaymentMethod) {
    this.preferredPaymentMethod = preferredPaymentMethod;
  }


  public CustomerAccount preferredPaymentMethodType(PreferredPaymentMethodTypeEnum preferredPaymentMethodType) {
    
    this.preferredPaymentMethodType = preferredPaymentMethodType;
    return this;
  }

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

  public PreferredPaymentMethodTypeEnum getPreferredPaymentMethodType() {
    return preferredPaymentMethodType;
  }



  public void setPreferredPaymentMethodType(PreferredPaymentMethodTypeEnum preferredPaymentMethodType) {
    this.preferredPaymentMethodType = preferredPaymentMethodType;
  }


  public CustomerAccount ddpaymentMethods(List<DDPaymentMethod> ddpaymentMethods) {
    
    this.ddpaymentMethods = ddpaymentMethods;
    return this;
  }

  public CustomerAccount addDdpaymentMethodsItem(DDPaymentMethod ddpaymentMethodsItem) {
    if (this.ddpaymentMethods == null) {
      this.ddpaymentMethods = new ArrayList<DDPaymentMethod>();
    }
    this.ddpaymentMethods.add(ddpaymentMethodsItem);
    return this;
  }

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

  public List<DDPaymentMethod> getDdpaymentMethods() {
    return ddpaymentMethods;
  }



  public void setDdpaymentMethods(List<DDPaymentMethod> ddpaymentMethods) {
    this.ddpaymentMethods = ddpaymentMethods;
  }


  public CustomerAccount wirePaymentMethods(List<WirePaymentMethod> wirePaymentMethods) {
    
    this.wirePaymentMethods = wirePaymentMethods;
    return this;
  }

  public CustomerAccount addWirePaymentMethodsItem(WirePaymentMethod wirePaymentMethodsItem) {
    if (this.wirePaymentMethods == null) {
      this.wirePaymentMethods = new ArrayList<WirePaymentMethod>();
    }
    this.wirePaymentMethods.add(wirePaymentMethodsItem);
    return this;
  }

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

  public List<WirePaymentMethod> getWirePaymentMethods() {
    return wirePaymentMethods;
  }



  public void setWirePaymentMethods(List<WirePaymentMethod> wirePaymentMethods) {
    this.wirePaymentMethods = wirePaymentMethods;
  }


  public CustomerAccount checkPaymentMethods(List<CheckPaymentMethod> checkPaymentMethods) {
    
    this.checkPaymentMethods = checkPaymentMethods;
    return this;
  }

  public CustomerAccount addCheckPaymentMethodsItem(CheckPaymentMethod checkPaymentMethodsItem) {
    if (this.checkPaymentMethods == null) {
      this.checkPaymentMethods = new ArrayList<CheckPaymentMethod>();
    }
    this.checkPaymentMethods.add(checkPaymentMethodsItem);
    return this;
  }

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

  public List<CheckPaymentMethod> getCheckPaymentMethods() {
    return checkPaymentMethods;
  }



  public void setCheckPaymentMethods(List<CheckPaymentMethod> checkPaymentMethods) {
    this.checkPaymentMethods = checkPaymentMethods;
  }


  public CustomerAccount noMoreValidCard(Boolean noMoreValidCard) {
    
    this.noMoreValidCard = noMoreValidCard;
    return this;
  }

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

  public Boolean getNoMoreValidCard() {
    return noMoreValidCard;
  }



  public void setNoMoreValidCard(Boolean noMoreValidCard) {
    this.noMoreValidCard = noMoreValidCard;
  }


  public CustomerAccount contactInformationNullSafe(ContactInformation contactInformationNullSafe) {
    
    this.contactInformationNullSafe = contactInformationNullSafe;
    return this;
  }

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

  public ContactInformation getContactInformationNullSafe() {
    return contactInformationNullSafe;
  }



  public void setContactInformationNullSafe(ContactInformation contactInformationNullSafe) {
    this.contactInformationNullSafe = contactInformationNullSafe;
  }


  public CustomerAccount cfValuesNullSafe(CustomFieldValues cfValuesNullSafe) {
    
    this.cfValuesNullSafe = cfValuesNullSafe;
    return this;
  }

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

  public CustomFieldValues getCfValuesNullSafe() {
    return cfValuesNullSafe;
  }



  public void setCfValuesNullSafe(CustomFieldValues cfValuesNullSafe) {
    this.cfValuesNullSafe = cfValuesNullSafe;
  }


  public CustomerAccount cfValuesAsValues(Map<String, Object> cfValuesAsValues) {
    
    this.cfValuesAsValues = cfValuesAsValues;
    return this;
  }

  public CustomerAccount putCfValuesAsValuesItem(String key, Object cfValuesAsValuesItem) {
    if (this.cfValuesAsValues == null) {
      this.cfValuesAsValues = new HashMap<String, Object>();
    }
    this.cfValuesAsValues.put(key, cfValuesAsValuesItem);
    return this;
  }

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

  public Map<String, Object> getCfValuesAsValues() {
    return cfValuesAsValues;
  }



  public void setCfValuesAsValues(Map<String, Object> cfValuesAsValues) {
    this.cfValuesAsValues = cfValuesAsValues;
  }


  public CustomerAccount cfAccumulatedValuesNullSafe(CustomFieldValues cfAccumulatedValuesNullSafe) {
    
    this.cfAccumulatedValuesNullSafe = cfAccumulatedValuesNullSafe;
    return this;
  }

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

  public CustomFieldValues getCfAccumulatedValuesNullSafe() {
    return cfAccumulatedValuesNullSafe;
  }



  public void setCfAccumulatedValuesNullSafe(CustomFieldValues cfAccumulatedValuesNullSafe) {
    this.cfAccumulatedValuesNullSafe = cfAccumulatedValuesNullSafe;
  }


  public CustomerAccount descriptionOrCode(String descriptionOrCode) {
    
    this.descriptionOrCode = descriptionOrCode;
    return this;
  }

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

  public String getDescriptionOrCode() {
    return descriptionOrCode;
  }



  public void setDescriptionOrCode(String descriptionOrCode) {
    this.descriptionOrCode = descriptionOrCode;
  }


  public CustomerAccount descriptionAndCode(String descriptionAndCode) {
    
    this.descriptionAndCode = descriptionAndCode;
    return this;
  }

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

  public String getDescriptionAndCode() {
    return descriptionAndCode;
  }



  public void setDescriptionAndCode(String descriptionAndCode) {
    this.descriptionAndCode = descriptionAndCode;
  }


  public CustomerAccount referenceCode(String referenceCode) {
    
    this.referenceCode = referenceCode;
    return this;
  }

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

  public String getReferenceCode() {
    return referenceCode;
  }



  public void setReferenceCode(String referenceCode) {
    this.referenceCode = referenceCode;
  }


  public CustomerAccount referenceDescription(String referenceDescription) {
    
    this.referenceDescription = referenceDescription;
    return this;
  }

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

  public String getReferenceDescription() {
    return referenceDescription;
  }



  public void setReferenceDescription(String referenceDescription) {
    this.referenceDescription = referenceDescription;
  }


  public CustomerAccount codeChanged(Boolean codeChanged) {
    
    this.codeChanged = codeChanged;
    return this;
  }

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

  public Boolean getCodeChanged() {
    return codeChanged;
  }



  public void setCodeChanged(Boolean codeChanged) {
    this.codeChanged = codeChanged;
  }


  public CustomerAccount _transient(Boolean _transient) {
    
    this._transient = _transient;
    return this;
  }

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

  public Boolean getTransient() {
    return _transient;
  }



  public void setTransient(Boolean _transient) {
    this._transient = _transient;
  }


  @Override
  public boolean equals(java.lang.Object o) {
    if (this == o) {
      return true;
    }
    if (o == null || getClass() != o.getClass()) {
      return false;
    }
    CustomerAccount customerAccount = (CustomerAccount) o;
    return Objects.equals(this.id, customerAccount.id) &&
        Objects.equals(this.version, customerAccount.version) &&
        Objects.equals(this.auditable, customerAccount.auditable) &&
        Objects.equals(this.historized, customerAccount.historized) &&
        Objects.equals(this.notified, customerAccount.notified) &&
        Objects.equals(this.auditableFields, customerAccount.auditableFields) &&
        Objects.equals(this.code, customerAccount.code) &&
        Objects.equals(this.description, customerAccount.description) &&
        Objects.equals(this.appendGeneratedCode, customerAccount.appendGeneratedCode) &&
        Objects.equals(this.uuid, customerAccount.uuid) &&
        Objects.equals(this.cfValues, customerAccount.cfValues) &&
        Objects.equals(this.cfAccumulatedValues, customerAccount.cfAccumulatedValues) &&
        Objects.equals(this.externalRef1, customerAccount.externalRef1) &&
        Objects.equals(this.externalRef2, customerAccount.externalRef2) &&
        Objects.equals(this.name, customerAccount.name) &&
        Objects.equals(this.address, customerAccount.address) &&
        Objects.equals(this.defaultLevel, customerAccount.defaultLevel) &&
        Objects.equals(this.providerContact, customerAccount.providerContact) &&
        Objects.equals(this.primaryContact, customerAccount.primaryContact) &&
        Objects.equals(this.accountType, customerAccount.accountType) &&
        Objects.equals(this.businessAccountModel, customerAccount.businessAccountModel) &&
        Objects.equals(this.jobTitle, customerAccount.jobTitle) &&
        Objects.equals(this.contactInformation, customerAccount.contactInformation) &&
        Objects.equals(this.vatNo, customerAccount.vatNo) &&
        Objects.equals(this.registrationNo, customerAccount.registrationNo) &&
        Objects.equals(this.addressbook, customerAccount.addressbook) &&
        Objects.equals(this.tradingCurrency, customerAccount.tradingCurrency) &&
        Objects.equals(this.status, customerAccount.status) &&
        Objects.equals(this.creditCategory, customerAccount.creditCategory) &&
        Objects.equals(this.billingAccounts, customerAccount.billingAccounts) &&
        Objects.equals(this.accountOperations, customerAccount.accountOperations) &&
        Objects.equals(this.dunningDocuments, customerAccount.dunningDocuments) &&
        Objects.equals(this.actionDunnings, customerAccount.actionDunnings) &&
        Objects.equals(this.dateStatus, customerAccount.dateStatus) &&
        Objects.equals(this.dateDunningLevel, customerAccount.dateDunningLevel) &&
        Objects.equals(this.customer, customerAccount.customer) &&
        Objects.equals(this.dunningLevel, customerAccount.dunningLevel) &&
        Objects.equals(this.password, customerAccount.password) &&
        Objects.equals(this.dueDateDelayEL, customerAccount.dueDateDelayEL) &&
        Objects.equals(this.dueDateDelayELSpark, customerAccount.dueDateDelayELSpark) &&
        Objects.equals(this.tradingLanguage, customerAccount.tradingLanguage) &&
        Objects.equals(this.paymentMethods, customerAccount.paymentMethods) &&
        Objects.equals(this.excludedFromPayment, customerAccount.excludedFromPayment) &&
        Objects.equals(this.auditedMethodPayments, customerAccount.auditedMethodPayments) &&
        Objects.equals(this.parentCFEntities, customerAccount.parentCFEntities) &&
        Objects.equals(this.parentEntity, customerAccount.parentEntity) &&
        Objects.equals(this.preferredPaymentMethod, customerAccount.preferredPaymentMethod) &&
        Objects.equals(this.preferredPaymentMethodType, customerAccount.preferredPaymentMethodType) &&
        Objects.equals(this.ddpaymentMethods, customerAccount.ddpaymentMethods) &&
        Objects.equals(this.wirePaymentMethods, customerAccount.wirePaymentMethods) &&
        Objects.equals(this.checkPaymentMethods, customerAccount.checkPaymentMethods) &&
        Objects.equals(this.noMoreValidCard, customerAccount.noMoreValidCard) &&
        Objects.equals(this.contactInformationNullSafe, customerAccount.contactInformationNullSafe) &&
        Objects.equals(this.cfValuesNullSafe, customerAccount.cfValuesNullSafe) &&
        Objects.equals(this.cfValuesAsValues, customerAccount.cfValuesAsValues) &&
        Objects.equals(this.cfAccumulatedValuesNullSafe, customerAccount.cfAccumulatedValuesNullSafe) &&
        Objects.equals(this.descriptionOrCode, customerAccount.descriptionOrCode) &&
        Objects.equals(this.descriptionAndCode, customerAccount.descriptionAndCode) &&
        Objects.equals(this.referenceCode, customerAccount.referenceCode) &&
        Objects.equals(this.referenceDescription, customerAccount.referenceDescription) &&
        Objects.equals(this.codeChanged, customerAccount.codeChanged) &&
        Objects.equals(this._transient, customerAccount._transient);
  }

  @Override
  public int hashCode() {
    return Objects.hash(id, version, auditable, historized, notified, auditableFields, code, description, appendGeneratedCode, uuid, cfValues, cfAccumulatedValues, externalRef1, externalRef2, name, address, defaultLevel, providerContact, primaryContact, accountType, businessAccountModel, jobTitle, contactInformation, vatNo, registrationNo, addressbook, tradingCurrency, status, creditCategory, billingAccounts, accountOperations, dunningDocuments, actionDunnings, dateStatus, dateDunningLevel, customer, dunningLevel, password, dueDateDelayEL, dueDateDelayELSpark, tradingLanguage, paymentMethods, excludedFromPayment, auditedMethodPayments, parentCFEntities, parentEntity, preferredPaymentMethod, preferredPaymentMethodType, ddpaymentMethods, wirePaymentMethods, checkPaymentMethods, noMoreValidCard, contactInformationNullSafe, cfValuesNullSafe, cfValuesAsValues, cfAccumulatedValuesNullSafe, descriptionOrCode, descriptionAndCode, referenceCode, referenceDescription, codeChanged, _transient);
  }


  @Override
  public String toString() {
    StringBuilder sb = new StringBuilder();
    sb.append("class CustomerAccount {\n");
    sb.append("    id: ").append(toIndentedString(id)).append("\n");
    sb.append("    version: ").append(toIndentedString(version)).append("\n");
    sb.append("    auditable: ").append(toIndentedString(auditable)).append("\n");
    sb.append("    historized: ").append(toIndentedString(historized)).append("\n");
    sb.append("    notified: ").append(toIndentedString(notified)).append("\n");
    sb.append("    auditableFields: ").append(toIndentedString(auditableFields)).append("\n");
    sb.append("    code: ").append(toIndentedString(code)).append("\n");
    sb.append("    description: ").append(toIndentedString(description)).append("\n");
    sb.append("    appendGeneratedCode: ").append(toIndentedString(appendGeneratedCode)).append("\n");
    sb.append("    uuid: ").append(toIndentedString(uuid)).append("\n");
    sb.append("    cfValues: ").append(toIndentedString(cfValues)).append("\n");
    sb.append("    cfAccumulatedValues: ").append(toIndentedString(cfAccumulatedValues)).append("\n");
    sb.append("    externalRef1: ").append(toIndentedString(externalRef1)).append("\n");
    sb.append("    externalRef2: ").append(toIndentedString(externalRef2)).append("\n");
    sb.append("    name: ").append(toIndentedString(name)).append("\n");
    sb.append("    address: ").append(toIndentedString(address)).append("\n");
    sb.append("    defaultLevel: ").append(toIndentedString(defaultLevel)).append("\n");
    sb.append("    providerContact: ").append(toIndentedString(providerContact)).append("\n");
    sb.append("    primaryContact: ").append(toIndentedString(primaryContact)).append("\n");
    sb.append("    accountType: ").append(toIndentedString(accountType)).append("\n");
    sb.append("    businessAccountModel: ").append(toIndentedString(businessAccountModel)).append("\n");
    sb.append("    jobTitle: ").append(toIndentedString(jobTitle)).append("\n");
    sb.append("    contactInformation: ").append(toIndentedString(contactInformation)).append("\n");
    sb.append("    vatNo: ").append(toIndentedString(vatNo)).append("\n");
    sb.append("    registrationNo: ").append(toIndentedString(registrationNo)).append("\n");
    sb.append("    addressbook: ").append(toIndentedString(addressbook)).append("\n");
    sb.append("    tradingCurrency: ").append(toIndentedString(tradingCurrency)).append("\n");
    sb.append("    status: ").append(toIndentedString(status)).append("\n");
    sb.append("    creditCategory: ").append(toIndentedString(creditCategory)).append("\n");
    sb.append("    billingAccounts: ").append(toIndentedString(billingAccounts)).append("\n");
    sb.append("    accountOperations: ").append(toIndentedString(accountOperations)).append("\n");
    sb.append("    dunningDocuments: ").append(toIndentedString(dunningDocuments)).append("\n");
    sb.append("    actionDunnings: ").append(toIndentedString(actionDunnings)).append("\n");
    sb.append("    dateStatus: ").append(toIndentedString(dateStatus)).append("\n");
    sb.append("    dateDunningLevel: ").append(toIndentedString(dateDunningLevel)).append("\n");
    sb.append("    customer: ").append(toIndentedString(customer)).append("\n");
    sb.append("    dunningLevel: ").append(toIndentedString(dunningLevel)).append("\n");
    sb.append("    password: ").append(toIndentedString(password)).append("\n");
    sb.append("    dueDateDelayEL: ").append(toIndentedString(dueDateDelayEL)).append("\n");
    sb.append("    dueDateDelayELSpark: ").append(toIndentedString(dueDateDelayELSpark)).append("\n");
    sb.append("    tradingLanguage: ").append(toIndentedString(tradingLanguage)).append("\n");
    sb.append("    paymentMethods: ").append(toIndentedString(paymentMethods)).append("\n");
    sb.append("    excludedFromPayment: ").append(toIndentedString(excludedFromPayment)).append("\n");
    sb.append("    auditedMethodPayments: ").append(toIndentedString(auditedMethodPayments)).append("\n");
    sb.append("    parentCFEntities: ").append(toIndentedString(parentCFEntities)).append("\n");
    sb.append("    parentEntity: ").append(toIndentedString(parentEntity)).append("\n");
    sb.append("    preferredPaymentMethod: ").append(toIndentedString(preferredPaymentMethod)).append("\n");
    sb.append("    preferredPaymentMethodType: ").append(toIndentedString(preferredPaymentMethodType)).append("\n");
    sb.append("    ddpaymentMethods: ").append(toIndentedString(ddpaymentMethods)).append("\n");
    sb.append("    wirePaymentMethods: ").append(toIndentedString(wirePaymentMethods)).append("\n");
    sb.append("    checkPaymentMethods: ").append(toIndentedString(checkPaymentMethods)).append("\n");
    sb.append("    noMoreValidCard: ").append(toIndentedString(noMoreValidCard)).append("\n");
    sb.append("    contactInformationNullSafe: ").append(toIndentedString(contactInformationNullSafe)).append("\n");
    sb.append("    cfValuesNullSafe: ").append(toIndentedString(cfValuesNullSafe)).append("\n");
    sb.append("    cfValuesAsValues: ").append(toIndentedString(cfValuesAsValues)).append("\n");
    sb.append("    cfAccumulatedValuesNullSafe: ").append(toIndentedString(cfAccumulatedValuesNullSafe)).append("\n");
    sb.append("    descriptionOrCode: ").append(toIndentedString(descriptionOrCode)).append("\n");
    sb.append("    descriptionAndCode: ").append(toIndentedString(descriptionAndCode)).append("\n");
    sb.append("    referenceCode: ").append(toIndentedString(referenceCode)).append("\n");
    sb.append("    referenceDescription: ").append(toIndentedString(referenceDescription)).append("\n");
    sb.append("    codeChanged: ").append(toIndentedString(codeChanged)).append("\n");
    sb.append("    _transient: ").append(toIndentedString(_transient)).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    ");
  }

}

