/*
 * 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.math.BigDecimal;
import java.util.ArrayList;
import java.util.List;
import org.openapitools.client.model.AccountOperationDto;
import org.openapitools.client.model.AddressDto;
import org.openapitools.client.model.BillingAccountsDto;
import org.openapitools.client.model.BusinessEntityDto;
import org.openapitools.client.model.ContactInformationDto;
import org.openapitools.client.model.CustomFieldsDto;
import org.openapitools.client.model.NameDto;
import org.openapitools.client.model.PaymentMethodDto;
import org.threeten.bp.OffsetDateTime;

/**
 * CustomerAccountDto
 */
@javax.annotation.Generated(value = "org.openapitools.codegen.languages.JavaClientCodegen", date = "2019-09-13T10:03:17.753Z[GMT]")
public class CustomerAccountDto {
  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_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 NameDto name;

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

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

  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_CUSTOM_FIELDS = "customFields";
  @SerializedName(SERIALIZED_NAME_CUSTOM_FIELDS)
  private CustomFieldsDto customFields;

  public static final String SERIALIZED_NAME_LOADED = "loaded";
  @SerializedName(SERIALIZED_NAME_LOADED)
  private Boolean loaded;

  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_CONTACT_INFORMATION = "contactInformation";
  @SerializedName(SERIALIZED_NAME_CONTACT_INFORMATION)
  private ContactInformationDto contactInformation;

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

  public static final String SERIALIZED_NAME_CURRENCY = "currency";
  @SerializedName(SERIALIZED_NAME_CURRENCY)
  private String currency;

  public static final String SERIALIZED_NAME_LANGUAGE = "language";
  @SerializedName(SERIALIZED_NAME_LANGUAGE)
  private String language;

  /**
   * 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 String creditCategory;

  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;

  /**
   * 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_MANDATE_IDENTIFICATION = "mandateIdentification";
  @SerializedName(SERIALIZED_NAME_MANDATE_IDENTIFICATION)
  private String mandateIdentification;

  public static final String SERIALIZED_NAME_MANDATE_DATE = "mandateDate";
  @SerializedName(SERIALIZED_NAME_MANDATE_DATE)
  private OffsetDateTime mandateDate;

  public static final String SERIALIZED_NAME_BALANCE = "balance";
  @SerializedName(SERIALIZED_NAME_BALANCE)
  private BigDecimal balance;

  public static final String SERIALIZED_NAME_TOTAL_INVOICE_BALANCE = "totalInvoiceBalance";
  @SerializedName(SERIALIZED_NAME_TOTAL_INVOICE_BALANCE)
  private BigDecimal totalInvoiceBalance;

  public static final String SERIALIZED_NAME_ACCOUNT_BALANCE = "accountBalance";
  @SerializedName(SERIALIZED_NAME_ACCOUNT_BALANCE)
  private BigDecimal accountBalance;

  public static final String SERIALIZED_NAME_CREDIT_BALANCE = "creditBalance";
  @SerializedName(SERIALIZED_NAME_CREDIT_BALANCE)
  private BigDecimal creditBalance;

  public static final String SERIALIZED_NAME_TERMINATION_DATE = "terminationDate";
  @SerializedName(SERIALIZED_NAME_TERMINATION_DATE)
  private OffsetDateTime terminationDate;

  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_PAYMENT_METHODS = "paymentMethods";
  @SerializedName(SERIALIZED_NAME_PAYMENT_METHODS)
  private List<PaymentMethodDto> paymentMethods = null;

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

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

    private String value;

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

    public String getValue() {
      return value;
    }

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

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

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

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

  public static final String SERIALIZED_NAME_PAYMENT_METHOD = "paymentMethod";
  @SerializedName(SERIALIZED_NAME_PAYMENT_METHOD)
  private PaymentMethodEnum paymentMethod;

  public static final String SERIALIZED_NAME_BILLING_ACCOUNTS = "billingAccounts";
  @SerializedName(SERIALIZED_NAME_BILLING_ACCOUNTS)
  private BillingAccountsDto billingAccounts;

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


  public CustomerAccountDto 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 CustomerAccountDto 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 CustomerAccountDto 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 CustomerAccountDto 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 CustomerAccountDto 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 CustomerAccountDto 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 CustomerAccountDto name(NameDto name) {
    
    this.name = name;
    return this;
  }

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

  public NameDto getName() {
    return name;
  }



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


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

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

  public Boolean getLoaded() {
    return loaded;
  }



  public void setLoaded(Boolean loaded) {
    this.loaded = loaded;
  }


  public CustomerAccountDto 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 CustomerAccountDto 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 CustomerAccountDto 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 CustomerAccountDto customer(String customer) {
    
    this.customer = customer;
    return this;
  }

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

  public String getCustomer() {
    return customer;
  }



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


  public CustomerAccountDto currency(String currency) {
    
    this.currency = currency;
    return this;
  }

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

  public String getCurrency() {
    return currency;
  }



  public void setCurrency(String currency) {
    this.currency = currency;
  }


  public CustomerAccountDto language(String language) {
    
    this.language = language;
    return this;
  }

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

  public String getLanguage() {
    return language;
  }



  public void setLanguage(String language) {
    this.language = language;
  }


  public CustomerAccountDto 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 CustomerAccountDto creditCategory(String creditCategory) {
    
    this.creditCategory = creditCategory;
    return this;
  }

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

  public String getCreditCategory() {
    return creditCategory;
  }



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


  public CustomerAccountDto 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 CustomerAccountDto 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 CustomerAccountDto 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 CustomerAccountDto mandateIdentification(String mandateIdentification) {
    
    this.mandateIdentification = mandateIdentification;
    return this;
  }

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

  public String getMandateIdentification() {
    return mandateIdentification;
  }



  public void setMandateIdentification(String mandateIdentification) {
    this.mandateIdentification = mandateIdentification;
  }


  public CustomerAccountDto mandateDate(OffsetDateTime mandateDate) {
    
    this.mandateDate = mandateDate;
    return this;
  }

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

  public OffsetDateTime getMandateDate() {
    return mandateDate;
  }



  public void setMandateDate(OffsetDateTime mandateDate) {
    this.mandateDate = mandateDate;
  }


  public CustomerAccountDto balance(BigDecimal balance) {
    
    this.balance = balance;
    return this;
  }

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

  public BigDecimal getBalance() {
    return balance;
  }



  public void setBalance(BigDecimal balance) {
    this.balance = balance;
  }


  public CustomerAccountDto totalInvoiceBalance(BigDecimal totalInvoiceBalance) {
    
    this.totalInvoiceBalance = totalInvoiceBalance;
    return this;
  }

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

  public BigDecimal getTotalInvoiceBalance() {
    return totalInvoiceBalance;
  }



  public void setTotalInvoiceBalance(BigDecimal totalInvoiceBalance) {
    this.totalInvoiceBalance = totalInvoiceBalance;
  }


  public CustomerAccountDto accountBalance(BigDecimal accountBalance) {
    
    this.accountBalance = accountBalance;
    return this;
  }

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

  public BigDecimal getAccountBalance() {
    return accountBalance;
  }



  public void setAccountBalance(BigDecimal accountBalance) {
    this.accountBalance = accountBalance;
  }


  public CustomerAccountDto creditBalance(BigDecimal creditBalance) {
    
    this.creditBalance = creditBalance;
    return this;
  }

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

  public BigDecimal getCreditBalance() {
    return creditBalance;
  }



  public void setCreditBalance(BigDecimal creditBalance) {
    this.creditBalance = creditBalance;
  }


  public CustomerAccountDto terminationDate(OffsetDateTime terminationDate) {
    
    this.terminationDate = terminationDate;
    return this;
  }

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

  public OffsetDateTime getTerminationDate() {
    return terminationDate;
  }



  public void setTerminationDate(OffsetDateTime terminationDate) {
    this.terminationDate = terminationDate;
  }


  public CustomerAccountDto 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 CustomerAccountDto 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 CustomerAccountDto paymentMethods(List<PaymentMethodDto> paymentMethods) {
    
    this.paymentMethods = paymentMethods;
    return this;
  }

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

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

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



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


  public CustomerAccountDto 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 CustomerAccountDto paymentMethod(PaymentMethodEnum paymentMethod) {
    
    this.paymentMethod = paymentMethod;
    return this;
  }

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

  public PaymentMethodEnum getPaymentMethod() {
    return paymentMethod;
  }



  public void setPaymentMethod(PaymentMethodEnum paymentMethod) {
    this.paymentMethod = paymentMethod;
  }


  public CustomerAccountDto billingAccounts(BillingAccountsDto billingAccounts) {
    
    this.billingAccounts = billingAccounts;
    return this;
  }

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

  public BillingAccountsDto getBillingAccounts() {
    return billingAccounts;
  }



  public void setBillingAccounts(BillingAccountsDto billingAccounts) {
    this.billingAccounts = billingAccounts;
  }


  public CustomerAccountDto accountOperations(List<AccountOperationDto> accountOperations) {
    
    this.accountOperations = accountOperations;
    return this;
  }

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

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

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



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


  @Override
  public boolean equals(java.lang.Object o) {
    if (this == o) {
      return true;
    }
    if (o == null || getClass() != o.getClass()) {
      return false;
    }
    CustomerAccountDto customerAccountDto = (CustomerAccountDto) o;
    return Objects.equals(this.id, customerAccountDto.id) &&
        Objects.equals(this.code, customerAccountDto.code) &&
        Objects.equals(this.description, customerAccountDto.description) &&
        Objects.equals(this.updatedCode, customerAccountDto.updatedCode) &&
        Objects.equals(this.externalRef1, customerAccountDto.externalRef1) &&
        Objects.equals(this.externalRef2, customerAccountDto.externalRef2) &&
        Objects.equals(this.name, customerAccountDto.name) &&
        Objects.equals(this.address, customerAccountDto.address) &&
        Objects.equals(this.jobTitle, customerAccountDto.jobTitle) &&
        Objects.equals(this.businessAccountModel, customerAccountDto.businessAccountModel) &&
        Objects.equals(this.customFields, customerAccountDto.customFields) &&
        Objects.equals(this.loaded, customerAccountDto.loaded) &&
        Objects.equals(this.vatNo, customerAccountDto.vatNo) &&
        Objects.equals(this.registrationNo, customerAccountDto.registrationNo) &&
        Objects.equals(this.contactInformation, customerAccountDto.contactInformation) &&
        Objects.equals(this.customer, customerAccountDto.customer) &&
        Objects.equals(this.currency, customerAccountDto.currency) &&
        Objects.equals(this.language, customerAccountDto.language) &&
        Objects.equals(this.status, customerAccountDto.status) &&
        Objects.equals(this.creditCategory, customerAccountDto.creditCategory) &&
        Objects.equals(this.dateStatus, customerAccountDto.dateStatus) &&
        Objects.equals(this.dateDunningLevel, customerAccountDto.dateDunningLevel) &&
        Objects.equals(this.dunningLevel, customerAccountDto.dunningLevel) &&
        Objects.equals(this.mandateIdentification, customerAccountDto.mandateIdentification) &&
        Objects.equals(this.mandateDate, customerAccountDto.mandateDate) &&
        Objects.equals(this.balance, customerAccountDto.balance) &&
        Objects.equals(this.totalInvoiceBalance, customerAccountDto.totalInvoiceBalance) &&
        Objects.equals(this.accountBalance, customerAccountDto.accountBalance) &&
        Objects.equals(this.creditBalance, customerAccountDto.creditBalance) &&
        Objects.equals(this.terminationDate, customerAccountDto.terminationDate) &&
        Objects.equals(this.dueDateDelayEL, customerAccountDto.dueDateDelayEL) &&
        Objects.equals(this.dueDateDelayELSpark, customerAccountDto.dueDateDelayELSpark) &&
        Objects.equals(this.paymentMethods, customerAccountDto.paymentMethods) &&
        Objects.equals(this.excludedFromPayment, customerAccountDto.excludedFromPayment) &&
        Objects.equals(this.paymentMethod, customerAccountDto.paymentMethod) &&
        Objects.equals(this.billingAccounts, customerAccountDto.billingAccounts) &&
        Objects.equals(this.accountOperations, customerAccountDto.accountOperations);
  }

  @Override
  public int hashCode() {
    return Objects.hash(id, code, description, updatedCode, externalRef1, externalRef2, name, address, jobTitle, businessAccountModel, customFields, loaded, vatNo, registrationNo, contactInformation, customer, currency, language, status, creditCategory, dateStatus, dateDunningLevel, dunningLevel, mandateIdentification, mandateDate, balance, totalInvoiceBalance, accountBalance, creditBalance, terminationDate, dueDateDelayEL, dueDateDelayELSpark, paymentMethods, excludedFromPayment, paymentMethod, billingAccounts, accountOperations);
  }


  @Override
  public String toString() {
    StringBuilder sb = new StringBuilder();
    sb.append("class CustomerAccountDto {\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("    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("    jobTitle: ").append(toIndentedString(jobTitle)).append("\n");
    sb.append("    businessAccountModel: ").append(toIndentedString(businessAccountModel)).append("\n");
    sb.append("    customFields: ").append(toIndentedString(customFields)).append("\n");
    sb.append("    loaded: ").append(toIndentedString(loaded)).append("\n");
    sb.append("    vatNo: ").append(toIndentedString(vatNo)).append("\n");
    sb.append("    registrationNo: ").append(toIndentedString(registrationNo)).append("\n");
    sb.append("    contactInformation: ").append(toIndentedString(contactInformation)).append("\n");
    sb.append("    customer: ").append(toIndentedString(customer)).append("\n");
    sb.append("    currency: ").append(toIndentedString(currency)).append("\n");
    sb.append("    language: ").append(toIndentedString(language)).append("\n");
    sb.append("    status: ").append(toIndentedString(status)).append("\n");
    sb.append("    creditCategory: ").append(toIndentedString(creditCategory)).append("\n");
    sb.append("    dateStatus: ").append(toIndentedString(dateStatus)).append("\n");
    sb.append("    dateDunningLevel: ").append(toIndentedString(dateDunningLevel)).append("\n");
    sb.append("    dunningLevel: ").append(toIndentedString(dunningLevel)).append("\n");
    sb.append("    mandateIdentification: ").append(toIndentedString(mandateIdentification)).append("\n");
    sb.append("    mandateDate: ").append(toIndentedString(mandateDate)).append("\n");
    sb.append("    balance: ").append(toIndentedString(balance)).append("\n");
    sb.append("    totalInvoiceBalance: ").append(toIndentedString(totalInvoiceBalance)).append("\n");
    sb.append("    accountBalance: ").append(toIndentedString(accountBalance)).append("\n");
    sb.append("    creditBalance: ").append(toIndentedString(creditBalance)).append("\n");
    sb.append("    terminationDate: ").append(toIndentedString(terminationDate)).append("\n");
    sb.append("    dueDateDelayEL: ").append(toIndentedString(dueDateDelayEL)).append("\n");
    sb.append("    dueDateDelayELSpark: ").append(toIndentedString(dueDateDelayELSpark)).append("\n");
    sb.append("    paymentMethods: ").append(toIndentedString(paymentMethods)).append("\n");
    sb.append("    excludedFromPayment: ").append(toIndentedString(excludedFromPayment)).append("\n");
    sb.append("    paymentMethod: ").append(toIndentedString(paymentMethod)).append("\n");
    sb.append("    billingAccounts: ").append(toIndentedString(billingAccounts)).append("\n");
    sb.append("    accountOperations: ").append(toIndentedString(accountOperations)).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    ");
  }

}

