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


package org.openapitools.client.model;

import java.util.Objects;
import java.util.Arrays;
import com.google.gson.TypeAdapter;
import com.google.gson.annotations.JsonAdapter;
import com.google.gson.annotations.SerializedName;
import com.google.gson.stream.JsonReader;
import com.google.gson.stream.JsonWriter;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import java.io.IOException;
import org.openapitools.client.model.ActionStatus;
import org.openapitools.client.model.BillingCyclesDto;
import org.openapitools.client.model.CalendarsDto;
import org.openapitools.client.model.InvoiceCategoriesDto;
import org.openapitools.client.model.InvoiceSubCategoriesDto;
import org.openapitools.client.model.TaxesDto;
import org.openapitools.client.model.TerminationReasonsDto;

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

  public static final String SERIALIZED_NAME_CALENDARS = "calendars";
  @SerializedName(SERIALIZED_NAME_CALENDARS)
  private CalendarsDto calendars;

  public static final String SERIALIZED_NAME_TAXES = "taxes";
  @SerializedName(SERIALIZED_NAME_TAXES)
  private TaxesDto taxes;

  public static final String SERIALIZED_NAME_INVOICE_CATEGORIES = "invoiceCategories";
  @SerializedName(SERIALIZED_NAME_INVOICE_CATEGORIES)
  private InvoiceCategoriesDto invoiceCategories;

  public static final String SERIALIZED_NAME_INVOICE_SUB_CATEGORIES = "invoiceSubCategories";
  @SerializedName(SERIALIZED_NAME_INVOICE_SUB_CATEGORIES)
  private InvoiceSubCategoriesDto invoiceSubCategories;

  public static final String SERIALIZED_NAME_BILLING_CYCLES = "billingCycles";
  @SerializedName(SERIALIZED_NAME_BILLING_CYCLES)
  private BillingCyclesDto billingCycles;

  public static final String SERIALIZED_NAME_TERMINATION_REASONS = "terminationReasons";
  @SerializedName(SERIALIZED_NAME_TERMINATION_REASONS)
  private TerminationReasonsDto terminationReasons;


  public GetInvoicingConfigurationResponseDto actionStatus(ActionStatus actionStatus) {
    
    this.actionStatus = actionStatus;
    return this;
  }

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

  public ActionStatus getActionStatus() {
    return actionStatus;
  }



  public void setActionStatus(ActionStatus actionStatus) {
    this.actionStatus = actionStatus;
  }


  public GetInvoicingConfigurationResponseDto calendars(CalendarsDto calendars) {
    
    this.calendars = calendars;
    return this;
  }

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

  public CalendarsDto getCalendars() {
    return calendars;
  }



  public void setCalendars(CalendarsDto calendars) {
    this.calendars = calendars;
  }


  public GetInvoicingConfigurationResponseDto taxes(TaxesDto taxes) {
    
    this.taxes = taxes;
    return this;
  }

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

  public TaxesDto getTaxes() {
    return taxes;
  }



  public void setTaxes(TaxesDto taxes) {
    this.taxes = taxes;
  }


  public GetInvoicingConfigurationResponseDto invoiceCategories(InvoiceCategoriesDto invoiceCategories) {
    
    this.invoiceCategories = invoiceCategories;
    return this;
  }

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

  public InvoiceCategoriesDto getInvoiceCategories() {
    return invoiceCategories;
  }



  public void setInvoiceCategories(InvoiceCategoriesDto invoiceCategories) {
    this.invoiceCategories = invoiceCategories;
  }


  public GetInvoicingConfigurationResponseDto invoiceSubCategories(InvoiceSubCategoriesDto invoiceSubCategories) {
    
    this.invoiceSubCategories = invoiceSubCategories;
    return this;
  }

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

  public InvoiceSubCategoriesDto getInvoiceSubCategories() {
    return invoiceSubCategories;
  }



  public void setInvoiceSubCategories(InvoiceSubCategoriesDto invoiceSubCategories) {
    this.invoiceSubCategories = invoiceSubCategories;
  }


  public GetInvoicingConfigurationResponseDto billingCycles(BillingCyclesDto billingCycles) {
    
    this.billingCycles = billingCycles;
    return this;
  }

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

  public BillingCyclesDto getBillingCycles() {
    return billingCycles;
  }



  public void setBillingCycles(BillingCyclesDto billingCycles) {
    this.billingCycles = billingCycles;
  }


  public GetInvoicingConfigurationResponseDto terminationReasons(TerminationReasonsDto terminationReasons) {
    
    this.terminationReasons = terminationReasons;
    return this;
  }

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

  public TerminationReasonsDto getTerminationReasons() {
    return terminationReasons;
  }



  public void setTerminationReasons(TerminationReasonsDto terminationReasons) {
    this.terminationReasons = terminationReasons;
  }


  @Override
  public boolean equals(java.lang.Object o) {
    if (this == o) {
      return true;
    }
    if (o == null || getClass() != o.getClass()) {
      return false;
    }
    GetInvoicingConfigurationResponseDto getInvoicingConfigurationResponseDto = (GetInvoicingConfigurationResponseDto) o;
    return Objects.equals(this.actionStatus, getInvoicingConfigurationResponseDto.actionStatus) &&
        Objects.equals(this.calendars, getInvoicingConfigurationResponseDto.calendars) &&
        Objects.equals(this.taxes, getInvoicingConfigurationResponseDto.taxes) &&
        Objects.equals(this.invoiceCategories, getInvoicingConfigurationResponseDto.invoiceCategories) &&
        Objects.equals(this.invoiceSubCategories, getInvoicingConfigurationResponseDto.invoiceSubCategories) &&
        Objects.equals(this.billingCycles, getInvoicingConfigurationResponseDto.billingCycles) &&
        Objects.equals(this.terminationReasons, getInvoicingConfigurationResponseDto.terminationReasons);
  }

  @Override
  public int hashCode() {
    return Objects.hash(actionStatus, calendars, taxes, invoiceCategories, invoiceSubCategories, billingCycles, terminationReasons);
  }


  @Override
  public String toString() {
    StringBuilder sb = new StringBuilder();
    sb.append("class GetInvoicingConfigurationResponseDto {\n");
    sb.append("    actionStatus: ").append(toIndentedString(actionStatus)).append("\n");
    sb.append("    calendars: ").append(toIndentedString(calendars)).append("\n");
    sb.append("    taxes: ").append(toIndentedString(taxes)).append("\n");
    sb.append("    invoiceCategories: ").append(toIndentedString(invoiceCategories)).append("\n");
    sb.append("    invoiceSubCategories: ").append(toIndentedString(invoiceSubCategories)).append("\n");
    sb.append("    billingCycles: ").append(toIndentedString(billingCycles)).append("\n");
    sb.append("    terminationReasons: ").append(toIndentedString(terminationReasons)).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    ");
  }

}

