/*
 * 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.List;
import org.openapitools.client.model.AccessesDto;
import org.openapitools.client.model.CustomFieldsDto;
import org.openapitools.client.model.DiscountPlanDto;
import org.openapitools.client.model.DiscountPlanInstanceDto;
import org.openapitools.client.model.ProductInstanceDto;
import org.openapitools.client.model.ProductsDto;
import org.openapitools.client.model.ServiceInstancesDto;
import org.openapitools.client.model.ServicesToActivateDto;
import org.openapitools.client.model.SubscriptionRenewalDto;
import org.threeten.bp.OffsetDateTime;

/**
 * SubscriptionAndServicesToActivateRequestDto
 */
@javax.annotation.Generated(value = "org.openapitools.codegen.languages.JavaClientCodegen", date = "2019-09-13T10:03:17.753Z[GMT]")
public class SubscriptionAndServicesToActivateRequestDto {
  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_USER_ACCOUNT = "userAccount";
  @SerializedName(SERIALIZED_NAME_USER_ACCOUNT)
  private String userAccount;

  public static final String SERIALIZED_NAME_OFFER_TEMPLATE = "offerTemplate";
  @SerializedName(SERIALIZED_NAME_OFFER_TEMPLATE)
  private String offerTemplate;

  public static final String SERIALIZED_NAME_SUBSCRIPTION_DATE = "subscriptionDate";
  @SerializedName(SERIALIZED_NAME_SUBSCRIPTION_DATE)
  private OffsetDateTime subscriptionDate;

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

  public static final String SERIALIZED_NAME_END_AGREEMENT_DATE = "endAgreementDate";
  @SerializedName(SERIALIZED_NAME_END_AGREEMENT_DATE)
  private OffsetDateTime endAgreementDate;

  /**
   * Gets or Sets status
   */
  @JsonAdapter(StatusEnum.Adapter.class)
  public enum StatusEnum {
    CREATED("CREATED"),
    
    ACTIVE("ACTIVE"),
    
    CANCELED("CANCELED"),
    
    RESILIATED("RESILIATED"),
    
    CLOSED("CLOSED"),
    
    SUSPENDED("SUSPENDED");

    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_STATUS_DATE = "statusDate";
  @SerializedName(SERIALIZED_NAME_STATUS_DATE)
  private OffsetDateTime statusDate;

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

  public static final String SERIALIZED_NAME_ACCESSES = "accesses";
  @SerializedName(SERIALIZED_NAME_ACCESSES)
  private AccessesDto accesses;

  public static final String SERIALIZED_NAME_SERVICES = "services";
  @SerializedName(SERIALIZED_NAME_SERVICES)
  private ServiceInstancesDto services;

  public static final String SERIALIZED_NAME_PRODUCTS = "products";
  @SerializedName(SERIALIZED_NAME_PRODUCTS)
  private ProductsDto products;

  public static final String SERIALIZED_NAME_PRODUCT_INSTANCES = "productInstances";
  @SerializedName(SERIALIZED_NAME_PRODUCT_INSTANCES)
  private List<ProductInstanceDto> productInstances = null;

  public static final String SERIALIZED_NAME_TERMINATION_REASON = "terminationReason";
  @SerializedName(SERIALIZED_NAME_TERMINATION_REASON)
  private String terminationReason;

  public static final String SERIALIZED_NAME_ORDER_NUMBER = "orderNumber";
  @SerializedName(SERIALIZED_NAME_ORDER_NUMBER)
  private String orderNumber;

  public static final String SERIALIZED_NAME_MINIMUM_AMOUNT_EL = "minimumAmountEl";
  @SerializedName(SERIALIZED_NAME_MINIMUM_AMOUNT_EL)
  private String minimumAmountEl;

  public static final String SERIALIZED_NAME_MINIMUM_AMOUNT_EL_SPARK = "minimumAmountElSpark";
  @SerializedName(SERIALIZED_NAME_MINIMUM_AMOUNT_EL_SPARK)
  private String minimumAmountElSpark;

  public static final String SERIALIZED_NAME_MINIMUM_LABEL_EL = "minimumLabelEl";
  @SerializedName(SERIALIZED_NAME_MINIMUM_LABEL_EL)
  private String minimumLabelEl;

  public static final String SERIALIZED_NAME_MINIMUM_LABEL_EL_SPARK = "minimumLabelElSpark";
  @SerializedName(SERIALIZED_NAME_MINIMUM_LABEL_EL_SPARK)
  private String minimumLabelElSpark;

  public static final String SERIALIZED_NAME_SUBSCRIBED_TILL_DATE = "subscribedTillDate";
  @SerializedName(SERIALIZED_NAME_SUBSCRIBED_TILL_DATE)
  private OffsetDateTime subscribedTillDate;

  public static final String SERIALIZED_NAME_RENEWED = "renewed";
  @SerializedName(SERIALIZED_NAME_RENEWED)
  private Boolean renewed;

  public static final String SERIALIZED_NAME_RENEWAL_NOTIFIED_DATE = "renewalNotifiedDate";
  @SerializedName(SERIALIZED_NAME_RENEWAL_NOTIFIED_DATE)
  private OffsetDateTime renewalNotifiedDate;

  public static final String SERIALIZED_NAME_RENEWAL_RULE = "renewalRule";
  @SerializedName(SERIALIZED_NAME_RENEWAL_RULE)
  private SubscriptionRenewalDto renewalRule;

  public static final String SERIALIZED_NAME_BILLING_CYCLE = "billingCycle";
  @SerializedName(SERIALIZED_NAME_BILLING_CYCLE)
  private String billingCycle;

  public static final String SERIALIZED_NAME_SELLER = "seller";
  @SerializedName(SERIALIZED_NAME_SELLER)
  private String seller;

  public static final String SERIALIZED_NAME_AUTO_END_OF_ENGAGEMENT = "autoEndOfEngagement";
  @SerializedName(SERIALIZED_NAME_AUTO_END_OF_ENGAGEMENT)
  private Boolean autoEndOfEngagement;

  public static final String SERIALIZED_NAME_RATING_GROUP = "ratingGroup";
  @SerializedName(SERIALIZED_NAME_RATING_GROUP)
  private String ratingGroup;

  public static final String SERIALIZED_NAME_ELECTRONIC_BILLING = "electronicBilling";
  @SerializedName(SERIALIZED_NAME_ELECTRONIC_BILLING)
  private Boolean electronicBilling;

  public static final String SERIALIZED_NAME_EMAIL = "email";
  @SerializedName(SERIALIZED_NAME_EMAIL)
  private String email;

  public static final String SERIALIZED_NAME_MAILING_TYPE = "mailingType";
  @SerializedName(SERIALIZED_NAME_MAILING_TYPE)
  private String mailingType;

  public static final String SERIALIZED_NAME_EMAIL_TEMPLATE = "emailTemplate";
  @SerializedName(SERIALIZED_NAME_EMAIL_TEMPLATE)
  private String emailTemplate;

  public static final String SERIALIZED_NAME_CCED_EMAILS = "ccedEmails";
  @SerializedName(SERIALIZED_NAME_CCED_EMAILS)
  private String ccedEmails;

  public static final String SERIALIZED_NAME_DISCOUNT_PLANS_FOR_INSTANTIATION = "discountPlansForInstantiation";
  @SerializedName(SERIALIZED_NAME_DISCOUNT_PLANS_FOR_INSTANTIATION)
  private List<DiscountPlanDto> discountPlansForInstantiation = null;

  public static final String SERIALIZED_NAME_DISCOUNT_PLANS_FOR_TERMINATION = "discountPlansForTermination";
  @SerializedName(SERIALIZED_NAME_DISCOUNT_PLANS_FOR_TERMINATION)
  private List<String> discountPlansForTermination = null;

  public static final String SERIALIZED_NAME_DISCOUNT_PLAN_INSTANCES = "discountPlanInstances";
  @SerializedName(SERIALIZED_NAME_DISCOUNT_PLAN_INSTANCES)
  private List<DiscountPlanInstanceDto> discountPlanInstances = null;

  public static final String SERIALIZED_NAME_SERVICES_TO_ACTIVATE_DTO = "servicesToActivateDto";
  @SerializedName(SERIALIZED_NAME_SERVICES_TO_ACTIVATE_DTO)
  private ServicesToActivateDto servicesToActivateDto;


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

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

  public String getUserAccount() {
    return userAccount;
  }



  public void setUserAccount(String userAccount) {
    this.userAccount = userAccount;
  }


  public SubscriptionAndServicesToActivateRequestDto offerTemplate(String offerTemplate) {
    
    this.offerTemplate = offerTemplate;
    return this;
  }

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

  public String getOfferTemplate() {
    return offerTemplate;
  }



  public void setOfferTemplate(String offerTemplate) {
    this.offerTemplate = offerTemplate;
  }


  public SubscriptionAndServicesToActivateRequestDto subscriptionDate(OffsetDateTime subscriptionDate) {
    
    this.subscriptionDate = subscriptionDate;
    return this;
  }

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

  public OffsetDateTime getSubscriptionDate() {
    return subscriptionDate;
  }



  public void setSubscriptionDate(OffsetDateTime subscriptionDate) {
    this.subscriptionDate = subscriptionDate;
  }


  public SubscriptionAndServicesToActivateRequestDto 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 SubscriptionAndServicesToActivateRequestDto endAgreementDate(OffsetDateTime endAgreementDate) {
    
    this.endAgreementDate = endAgreementDate;
    return this;
  }

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

  public OffsetDateTime getEndAgreementDate() {
    return endAgreementDate;
  }



  public void setEndAgreementDate(OffsetDateTime endAgreementDate) {
    this.endAgreementDate = endAgreementDate;
  }


  public SubscriptionAndServicesToActivateRequestDto 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 SubscriptionAndServicesToActivateRequestDto statusDate(OffsetDateTime statusDate) {
    
    this.statusDate = statusDate;
    return this;
  }

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

  public OffsetDateTime getStatusDate() {
    return statusDate;
  }



  public void setStatusDate(OffsetDateTime statusDate) {
    this.statusDate = statusDate;
  }


  public SubscriptionAndServicesToActivateRequestDto 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 SubscriptionAndServicesToActivateRequestDto accesses(AccessesDto accesses) {
    
    this.accesses = accesses;
    return this;
  }

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

  public AccessesDto getAccesses() {
    return accesses;
  }



  public void setAccesses(AccessesDto accesses) {
    this.accesses = accesses;
  }


  public SubscriptionAndServicesToActivateRequestDto services(ServiceInstancesDto services) {
    
    this.services = services;
    return this;
  }

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

  public ServiceInstancesDto getServices() {
    return services;
  }



  public void setServices(ServiceInstancesDto services) {
    this.services = services;
  }


  public SubscriptionAndServicesToActivateRequestDto products(ProductsDto products) {
    
    this.products = products;
    return this;
  }

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

  public ProductsDto getProducts() {
    return products;
  }



  public void setProducts(ProductsDto products) {
    this.products = products;
  }


  public SubscriptionAndServicesToActivateRequestDto productInstances(List<ProductInstanceDto> productInstances) {
    
    this.productInstances = productInstances;
    return this;
  }

  public SubscriptionAndServicesToActivateRequestDto addProductInstancesItem(ProductInstanceDto productInstancesItem) {
    if (this.productInstances == null) {
      this.productInstances = new ArrayList<ProductInstanceDto>();
    }
    this.productInstances.add(productInstancesItem);
    return this;
  }

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

  public List<ProductInstanceDto> getProductInstances() {
    return productInstances;
  }



  public void setProductInstances(List<ProductInstanceDto> productInstances) {
    this.productInstances = productInstances;
  }


  public SubscriptionAndServicesToActivateRequestDto terminationReason(String terminationReason) {
    
    this.terminationReason = terminationReason;
    return this;
  }

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

  public String getTerminationReason() {
    return terminationReason;
  }



  public void setTerminationReason(String terminationReason) {
    this.terminationReason = terminationReason;
  }


  public SubscriptionAndServicesToActivateRequestDto orderNumber(String orderNumber) {
    
    this.orderNumber = orderNumber;
    return this;
  }

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

  public String getOrderNumber() {
    return orderNumber;
  }



  public void setOrderNumber(String orderNumber) {
    this.orderNumber = orderNumber;
  }


  public SubscriptionAndServicesToActivateRequestDto minimumAmountEl(String minimumAmountEl) {
    
    this.minimumAmountEl = minimumAmountEl;
    return this;
  }

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

  public String getMinimumAmountEl() {
    return minimumAmountEl;
  }



  public void setMinimumAmountEl(String minimumAmountEl) {
    this.minimumAmountEl = minimumAmountEl;
  }


  public SubscriptionAndServicesToActivateRequestDto minimumAmountElSpark(String minimumAmountElSpark) {
    
    this.minimumAmountElSpark = minimumAmountElSpark;
    return this;
  }

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

  public String getMinimumAmountElSpark() {
    return minimumAmountElSpark;
  }



  public void setMinimumAmountElSpark(String minimumAmountElSpark) {
    this.minimumAmountElSpark = minimumAmountElSpark;
  }


  public SubscriptionAndServicesToActivateRequestDto minimumLabelEl(String minimumLabelEl) {
    
    this.minimumLabelEl = minimumLabelEl;
    return this;
  }

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

  public String getMinimumLabelEl() {
    return minimumLabelEl;
  }



  public void setMinimumLabelEl(String minimumLabelEl) {
    this.minimumLabelEl = minimumLabelEl;
  }


  public SubscriptionAndServicesToActivateRequestDto minimumLabelElSpark(String minimumLabelElSpark) {
    
    this.minimumLabelElSpark = minimumLabelElSpark;
    return this;
  }

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

  public String getMinimumLabelElSpark() {
    return minimumLabelElSpark;
  }



  public void setMinimumLabelElSpark(String minimumLabelElSpark) {
    this.minimumLabelElSpark = minimumLabelElSpark;
  }


  public SubscriptionAndServicesToActivateRequestDto subscribedTillDate(OffsetDateTime subscribedTillDate) {
    
    this.subscribedTillDate = subscribedTillDate;
    return this;
  }

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

  public OffsetDateTime getSubscribedTillDate() {
    return subscribedTillDate;
  }



  public void setSubscribedTillDate(OffsetDateTime subscribedTillDate) {
    this.subscribedTillDate = subscribedTillDate;
  }


  public SubscriptionAndServicesToActivateRequestDto renewed(Boolean renewed) {
    
    this.renewed = renewed;
    return this;
  }

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

  public Boolean getRenewed() {
    return renewed;
  }



  public void setRenewed(Boolean renewed) {
    this.renewed = renewed;
  }


  public SubscriptionAndServicesToActivateRequestDto renewalNotifiedDate(OffsetDateTime renewalNotifiedDate) {
    
    this.renewalNotifiedDate = renewalNotifiedDate;
    return this;
  }

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

  public OffsetDateTime getRenewalNotifiedDate() {
    return renewalNotifiedDate;
  }



  public void setRenewalNotifiedDate(OffsetDateTime renewalNotifiedDate) {
    this.renewalNotifiedDate = renewalNotifiedDate;
  }


  public SubscriptionAndServicesToActivateRequestDto renewalRule(SubscriptionRenewalDto renewalRule) {
    
    this.renewalRule = renewalRule;
    return this;
  }

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

  public SubscriptionRenewalDto getRenewalRule() {
    return renewalRule;
  }



  public void setRenewalRule(SubscriptionRenewalDto renewalRule) {
    this.renewalRule = renewalRule;
  }


  public SubscriptionAndServicesToActivateRequestDto billingCycle(String billingCycle) {
    
    this.billingCycle = billingCycle;
    return this;
  }

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

  public String getBillingCycle() {
    return billingCycle;
  }



  public void setBillingCycle(String billingCycle) {
    this.billingCycle = billingCycle;
  }


  public SubscriptionAndServicesToActivateRequestDto seller(String seller) {
    
    this.seller = seller;
    return this;
  }

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

  public String getSeller() {
    return seller;
  }



  public void setSeller(String seller) {
    this.seller = seller;
  }


  public SubscriptionAndServicesToActivateRequestDto autoEndOfEngagement(Boolean autoEndOfEngagement) {
    
    this.autoEndOfEngagement = autoEndOfEngagement;
    return this;
  }

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

  public Boolean getAutoEndOfEngagement() {
    return autoEndOfEngagement;
  }



  public void setAutoEndOfEngagement(Boolean autoEndOfEngagement) {
    this.autoEndOfEngagement = autoEndOfEngagement;
  }


  public SubscriptionAndServicesToActivateRequestDto ratingGroup(String ratingGroup) {
    
    this.ratingGroup = ratingGroup;
    return this;
  }

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

  public String getRatingGroup() {
    return ratingGroup;
  }



  public void setRatingGroup(String ratingGroup) {
    this.ratingGroup = ratingGroup;
  }


  public SubscriptionAndServicesToActivateRequestDto electronicBilling(Boolean electronicBilling) {
    
    this.electronicBilling = electronicBilling;
    return this;
  }

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

  public Boolean getElectronicBilling() {
    return electronicBilling;
  }



  public void setElectronicBilling(Boolean electronicBilling) {
    this.electronicBilling = electronicBilling;
  }


  public SubscriptionAndServicesToActivateRequestDto email(String email) {
    
    this.email = email;
    return this;
  }

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

  public String getEmail() {
    return email;
  }



  public void setEmail(String email) {
    this.email = email;
  }


  public SubscriptionAndServicesToActivateRequestDto mailingType(String mailingType) {
    
    this.mailingType = mailingType;
    return this;
  }

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

  public String getMailingType() {
    return mailingType;
  }



  public void setMailingType(String mailingType) {
    this.mailingType = mailingType;
  }


  public SubscriptionAndServicesToActivateRequestDto emailTemplate(String emailTemplate) {
    
    this.emailTemplate = emailTemplate;
    return this;
  }

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

  public String getEmailTemplate() {
    return emailTemplate;
  }



  public void setEmailTemplate(String emailTemplate) {
    this.emailTemplate = emailTemplate;
  }


  public SubscriptionAndServicesToActivateRequestDto ccedEmails(String ccedEmails) {
    
    this.ccedEmails = ccedEmails;
    return this;
  }

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

  public String getCcedEmails() {
    return ccedEmails;
  }



  public void setCcedEmails(String ccedEmails) {
    this.ccedEmails = ccedEmails;
  }


  public SubscriptionAndServicesToActivateRequestDto discountPlansForInstantiation(List<DiscountPlanDto> discountPlansForInstantiation) {
    
    this.discountPlansForInstantiation = discountPlansForInstantiation;
    return this;
  }

  public SubscriptionAndServicesToActivateRequestDto addDiscountPlansForInstantiationItem(DiscountPlanDto discountPlansForInstantiationItem) {
    if (this.discountPlansForInstantiation == null) {
      this.discountPlansForInstantiation = new ArrayList<DiscountPlanDto>();
    }
    this.discountPlansForInstantiation.add(discountPlansForInstantiationItem);
    return this;
  }

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

  public List<DiscountPlanDto> getDiscountPlansForInstantiation() {
    return discountPlansForInstantiation;
  }



  public void setDiscountPlansForInstantiation(List<DiscountPlanDto> discountPlansForInstantiation) {
    this.discountPlansForInstantiation = discountPlansForInstantiation;
  }


  public SubscriptionAndServicesToActivateRequestDto discountPlansForTermination(List<String> discountPlansForTermination) {
    
    this.discountPlansForTermination = discountPlansForTermination;
    return this;
  }

  public SubscriptionAndServicesToActivateRequestDto addDiscountPlansForTerminationItem(String discountPlansForTerminationItem) {
    if (this.discountPlansForTermination == null) {
      this.discountPlansForTermination = new ArrayList<String>();
    }
    this.discountPlansForTermination.add(discountPlansForTerminationItem);
    return this;
  }

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

  public List<String> getDiscountPlansForTermination() {
    return discountPlansForTermination;
  }



  public void setDiscountPlansForTermination(List<String> discountPlansForTermination) {
    this.discountPlansForTermination = discountPlansForTermination;
  }


  public SubscriptionAndServicesToActivateRequestDto discountPlanInstances(List<DiscountPlanInstanceDto> discountPlanInstances) {
    
    this.discountPlanInstances = discountPlanInstances;
    return this;
  }

  public SubscriptionAndServicesToActivateRequestDto addDiscountPlanInstancesItem(DiscountPlanInstanceDto discountPlanInstancesItem) {
    if (this.discountPlanInstances == null) {
      this.discountPlanInstances = new ArrayList<DiscountPlanInstanceDto>();
    }
    this.discountPlanInstances.add(discountPlanInstancesItem);
    return this;
  }

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

  public List<DiscountPlanInstanceDto> getDiscountPlanInstances() {
    return discountPlanInstances;
  }



  public void setDiscountPlanInstances(List<DiscountPlanInstanceDto> discountPlanInstances) {
    this.discountPlanInstances = discountPlanInstances;
  }


  public SubscriptionAndServicesToActivateRequestDto servicesToActivateDto(ServicesToActivateDto servicesToActivateDto) {
    
    this.servicesToActivateDto = servicesToActivateDto;
    return this;
  }

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

  public ServicesToActivateDto getServicesToActivateDto() {
    return servicesToActivateDto;
  }



  public void setServicesToActivateDto(ServicesToActivateDto servicesToActivateDto) {
    this.servicesToActivateDto = servicesToActivateDto;
  }


  @Override
  public boolean equals(java.lang.Object o) {
    if (this == o) {
      return true;
    }
    if (o == null || getClass() != o.getClass()) {
      return false;
    }
    SubscriptionAndServicesToActivateRequestDto subscriptionAndServicesToActivateRequestDto = (SubscriptionAndServicesToActivateRequestDto) o;
    return Objects.equals(this.id, subscriptionAndServicesToActivateRequestDto.id) &&
        Objects.equals(this.code, subscriptionAndServicesToActivateRequestDto.code) &&
        Objects.equals(this.description, subscriptionAndServicesToActivateRequestDto.description) &&
        Objects.equals(this.updatedCode, subscriptionAndServicesToActivateRequestDto.updatedCode) &&
        Objects.equals(this.userAccount, subscriptionAndServicesToActivateRequestDto.userAccount) &&
        Objects.equals(this.offerTemplate, subscriptionAndServicesToActivateRequestDto.offerTemplate) &&
        Objects.equals(this.subscriptionDate, subscriptionAndServicesToActivateRequestDto.subscriptionDate) &&
        Objects.equals(this.terminationDate, subscriptionAndServicesToActivateRequestDto.terminationDate) &&
        Objects.equals(this.endAgreementDate, subscriptionAndServicesToActivateRequestDto.endAgreementDate) &&
        Objects.equals(this.status, subscriptionAndServicesToActivateRequestDto.status) &&
        Objects.equals(this.statusDate, subscriptionAndServicesToActivateRequestDto.statusDate) &&
        Objects.equals(this.customFields, subscriptionAndServicesToActivateRequestDto.customFields) &&
        Objects.equals(this.accesses, subscriptionAndServicesToActivateRequestDto.accesses) &&
        Objects.equals(this.services, subscriptionAndServicesToActivateRequestDto.services) &&
        Objects.equals(this.products, subscriptionAndServicesToActivateRequestDto.products) &&
        Objects.equals(this.productInstances, subscriptionAndServicesToActivateRequestDto.productInstances) &&
        Objects.equals(this.terminationReason, subscriptionAndServicesToActivateRequestDto.terminationReason) &&
        Objects.equals(this.orderNumber, subscriptionAndServicesToActivateRequestDto.orderNumber) &&
        Objects.equals(this.minimumAmountEl, subscriptionAndServicesToActivateRequestDto.minimumAmountEl) &&
        Objects.equals(this.minimumAmountElSpark, subscriptionAndServicesToActivateRequestDto.minimumAmountElSpark) &&
        Objects.equals(this.minimumLabelEl, subscriptionAndServicesToActivateRequestDto.minimumLabelEl) &&
        Objects.equals(this.minimumLabelElSpark, subscriptionAndServicesToActivateRequestDto.minimumLabelElSpark) &&
        Objects.equals(this.subscribedTillDate, subscriptionAndServicesToActivateRequestDto.subscribedTillDate) &&
        Objects.equals(this.renewed, subscriptionAndServicesToActivateRequestDto.renewed) &&
        Objects.equals(this.renewalNotifiedDate, subscriptionAndServicesToActivateRequestDto.renewalNotifiedDate) &&
        Objects.equals(this.renewalRule, subscriptionAndServicesToActivateRequestDto.renewalRule) &&
        Objects.equals(this.billingCycle, subscriptionAndServicesToActivateRequestDto.billingCycle) &&
        Objects.equals(this.seller, subscriptionAndServicesToActivateRequestDto.seller) &&
        Objects.equals(this.autoEndOfEngagement, subscriptionAndServicesToActivateRequestDto.autoEndOfEngagement) &&
        Objects.equals(this.ratingGroup, subscriptionAndServicesToActivateRequestDto.ratingGroup) &&
        Objects.equals(this.electronicBilling, subscriptionAndServicesToActivateRequestDto.electronicBilling) &&
        Objects.equals(this.email, subscriptionAndServicesToActivateRequestDto.email) &&
        Objects.equals(this.mailingType, subscriptionAndServicesToActivateRequestDto.mailingType) &&
        Objects.equals(this.emailTemplate, subscriptionAndServicesToActivateRequestDto.emailTemplate) &&
        Objects.equals(this.ccedEmails, subscriptionAndServicesToActivateRequestDto.ccedEmails) &&
        Objects.equals(this.discountPlansForInstantiation, subscriptionAndServicesToActivateRequestDto.discountPlansForInstantiation) &&
        Objects.equals(this.discountPlansForTermination, subscriptionAndServicesToActivateRequestDto.discountPlansForTermination) &&
        Objects.equals(this.discountPlanInstances, subscriptionAndServicesToActivateRequestDto.discountPlanInstances) &&
        Objects.equals(this.servicesToActivateDto, subscriptionAndServicesToActivateRequestDto.servicesToActivateDto);
  }

  @Override
  public int hashCode() {
    return Objects.hash(id, code, description, updatedCode, userAccount, offerTemplate, subscriptionDate, terminationDate, endAgreementDate, status, statusDate, customFields, accesses, services, products, productInstances, terminationReason, orderNumber, minimumAmountEl, minimumAmountElSpark, minimumLabelEl, minimumLabelElSpark, subscribedTillDate, renewed, renewalNotifiedDate, renewalRule, billingCycle, seller, autoEndOfEngagement, ratingGroup, electronicBilling, email, mailingType, emailTemplate, ccedEmails, discountPlansForInstantiation, discountPlansForTermination, discountPlanInstances, servicesToActivateDto);
  }


  @Override
  public String toString() {
    StringBuilder sb = new StringBuilder();
    sb.append("class SubscriptionAndServicesToActivateRequestDto {\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("    userAccount: ").append(toIndentedString(userAccount)).append("\n");
    sb.append("    offerTemplate: ").append(toIndentedString(offerTemplate)).append("\n");
    sb.append("    subscriptionDate: ").append(toIndentedString(subscriptionDate)).append("\n");
    sb.append("    terminationDate: ").append(toIndentedString(terminationDate)).append("\n");
    sb.append("    endAgreementDate: ").append(toIndentedString(endAgreementDate)).append("\n");
    sb.append("    status: ").append(toIndentedString(status)).append("\n");
    sb.append("    statusDate: ").append(toIndentedString(statusDate)).append("\n");
    sb.append("    customFields: ").append(toIndentedString(customFields)).append("\n");
    sb.append("    accesses: ").append(toIndentedString(accesses)).append("\n");
    sb.append("    services: ").append(toIndentedString(services)).append("\n");
    sb.append("    products: ").append(toIndentedString(products)).append("\n");
    sb.append("    productInstances: ").append(toIndentedString(productInstances)).append("\n");
    sb.append("    terminationReason: ").append(toIndentedString(terminationReason)).append("\n");
    sb.append("    orderNumber: ").append(toIndentedString(orderNumber)).append("\n");
    sb.append("    minimumAmountEl: ").append(toIndentedString(minimumAmountEl)).append("\n");
    sb.append("    minimumAmountElSpark: ").append(toIndentedString(minimumAmountElSpark)).append("\n");
    sb.append("    minimumLabelEl: ").append(toIndentedString(minimumLabelEl)).append("\n");
    sb.append("    minimumLabelElSpark: ").append(toIndentedString(minimumLabelElSpark)).append("\n");
    sb.append("    subscribedTillDate: ").append(toIndentedString(subscribedTillDate)).append("\n");
    sb.append("    renewed: ").append(toIndentedString(renewed)).append("\n");
    sb.append("    renewalNotifiedDate: ").append(toIndentedString(renewalNotifiedDate)).append("\n");
    sb.append("    renewalRule: ").append(toIndentedString(renewalRule)).append("\n");
    sb.append("    billingCycle: ").append(toIndentedString(billingCycle)).append("\n");
    sb.append("    seller: ").append(toIndentedString(seller)).append("\n");
    sb.append("    autoEndOfEngagement: ").append(toIndentedString(autoEndOfEngagement)).append("\n");
    sb.append("    ratingGroup: ").append(toIndentedString(ratingGroup)).append("\n");
    sb.append("    electronicBilling: ").append(toIndentedString(electronicBilling)).append("\n");
    sb.append("    email: ").append(toIndentedString(email)).append("\n");
    sb.append("    mailingType: ").append(toIndentedString(mailingType)).append("\n");
    sb.append("    emailTemplate: ").append(toIndentedString(emailTemplate)).append("\n");
    sb.append("    ccedEmails: ").append(toIndentedString(ccedEmails)).append("\n");
    sb.append("    discountPlansForInstantiation: ").append(toIndentedString(discountPlansForInstantiation)).append("\n");
    sb.append("    discountPlansForTermination: ").append(toIndentedString(discountPlansForTermination)).append("\n");
    sb.append("    discountPlanInstances: ").append(toIndentedString(discountPlanInstances)).append("\n");
    sb.append("    servicesToActivateDto: ").append(toIndentedString(servicesToActivateDto)).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    ");
  }

}

