/*
 * 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.HashMap;
import java.util.List;
import java.util.Map;
import org.openapitools.client.model.Auditable;
import org.openapitools.client.model.AuditableFieldHistory;
import org.openapitools.client.model.BusinessEntity;
import org.openapitools.client.model.Calendar;
import org.openapitools.client.model.CustomFieldValues;
import org.openapitools.client.model.ICustomFieldEntity;
import org.openapitools.client.model.OfferTemplate;
import org.openapitools.client.model.ScriptInstance;
import org.openapitools.client.model.Seller;
import org.openapitools.client.model.TradingCountry;
import org.openapitools.client.model.TradingCurrency;
import org.threeten.bp.OffsetDateTime;

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

  public static final String SERIALIZED_NAME_EVENT_CODE = "eventCode";
  @SerializedName(SERIALIZED_NAME_EVENT_CODE)
  private String eventCode;

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

  public static final String SERIALIZED_NAME_START_SUBSCRIPTION_DATE = "startSubscriptionDate";
  @SerializedName(SERIALIZED_NAME_START_SUBSCRIPTION_DATE)
  private OffsetDateTime startSubscriptionDate;

  public static final String SERIALIZED_NAME_END_SUBSCRIPTION_DATE = "endSubscriptionDate";
  @SerializedName(SERIALIZED_NAME_END_SUBSCRIPTION_DATE)
  private OffsetDateTime endSubscriptionDate;

  public static final String SERIALIZED_NAME_START_RATING_DATE = "startRatingDate";
  @SerializedName(SERIALIZED_NAME_START_RATING_DATE)
  private OffsetDateTime startRatingDate;

  public static final String SERIALIZED_NAME_END_RATING_DATE = "endRatingDate";
  @SerializedName(SERIALIZED_NAME_END_RATING_DATE)
  private OffsetDateTime endRatingDate;

  public static final String SERIALIZED_NAME_MIN_QUANTITY = "minQuantity";
  @SerializedName(SERIALIZED_NAME_MIN_QUANTITY)
  private BigDecimal minQuantity;

  public static final String SERIALIZED_NAME_MAX_QUANTITY = "maxQuantity";
  @SerializedName(SERIALIZED_NAME_MAX_QUANTITY)
  private BigDecimal maxQuantity;

  public static final String SERIALIZED_NAME_MIN_SUBSCRIPTION_AGE_IN_MONTH = "minSubscriptionAgeInMonth";
  @SerializedName(SERIALIZED_NAME_MIN_SUBSCRIPTION_AGE_IN_MONTH)
  private Long minSubscriptionAgeInMonth;

  public static final String SERIALIZED_NAME_MAX_SUBSCRIPTION_AGE_IN_MONTH = "maxSubscriptionAgeInMonth";
  @SerializedName(SERIALIZED_NAME_MAX_SUBSCRIPTION_AGE_IN_MONTH)
  private Long maxSubscriptionAgeInMonth;

  public static final String SERIALIZED_NAME_CRITERIA1_VALUE = "criteria1Value";
  @SerializedName(SERIALIZED_NAME_CRITERIA1_VALUE)
  private String criteria1Value;

  public static final String SERIALIZED_NAME_CRITERIA2_VALUE = "criteria2Value";
  @SerializedName(SERIALIZED_NAME_CRITERIA2_VALUE)
  private String criteria2Value;

  public static final String SERIALIZED_NAME_CRITERIA3_VALUE = "criteria3Value";
  @SerializedName(SERIALIZED_NAME_CRITERIA3_VALUE)
  private String criteria3Value;

  public static final String SERIALIZED_NAME_CRITERIA_E_L = "criteriaEL";
  @SerializedName(SERIALIZED_NAME_CRITERIA_E_L)
  private String criteriaEL;

  public static final String SERIALIZED_NAME_CRITERIA_E_L_SPARK = "criteriaELSpark";
  @SerializedName(SERIALIZED_NAME_CRITERIA_E_L_SPARK)
  private String criteriaELSpark;

  public static final String SERIALIZED_NAME_AMOUNT_WITHOUT_TAX = "amountWithoutTax";
  @SerializedName(SERIALIZED_NAME_AMOUNT_WITHOUT_TAX)
  private BigDecimal amountWithoutTax;

  public static final String SERIALIZED_NAME_AMOUNT_WITH_TAX = "amountWithTax";
  @SerializedName(SERIALIZED_NAME_AMOUNT_WITH_TAX)
  private BigDecimal amountWithTax;

  public static final String SERIALIZED_NAME_AMOUNT_WITHOUT_TAX_E_L = "amountWithoutTaxEL";
  @SerializedName(SERIALIZED_NAME_AMOUNT_WITHOUT_TAX_E_L)
  private String amountWithoutTaxEL;

  public static final String SERIALIZED_NAME_AMOUNT_WITHOUT_TAX_E_L_SPARK = "amountWithoutTaxELSpark";
  @SerializedName(SERIALIZED_NAME_AMOUNT_WITHOUT_TAX_E_L_SPARK)
  private String amountWithoutTaxELSpark;

  public static final String SERIALIZED_NAME_AMOUNT_WITH_TAX_E_L = "amountWithTaxEL";
  @SerializedName(SERIALIZED_NAME_AMOUNT_WITH_TAX_E_L)
  private String amountWithTaxEL;

  public static final String SERIALIZED_NAME_AMOUNT_WITH_TAX_E_L_SPARK = "amountWithTaxELSpark";
  @SerializedName(SERIALIZED_NAME_AMOUNT_WITH_TAX_E_L_SPARK)
  private String amountWithTaxELSpark;

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

  public static final String SERIALIZED_NAME_TRADING_COUNTRY = "tradingCountry";
  @SerializedName(SERIALIZED_NAME_TRADING_COUNTRY)
  private TradingCountry tradingCountry;

  public static final String SERIALIZED_NAME_PRIORITY = "priority";
  @SerializedName(SERIALIZED_NAME_PRIORITY)
  private Integer priority;

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

  public static final String SERIALIZED_NAME_VALIDITY_CALENDAR = "validityCalendar";
  @SerializedName(SERIALIZED_NAME_VALIDITY_CALENDAR)
  private Calendar validityCalendar;

  public static final String SERIALIZED_NAME_SEQUENCE = "sequence";
  @SerializedName(SERIALIZED_NAME_SEQUENCE)
  private Long sequence;

  public static final String SERIALIZED_NAME_SCRIPT_INSTANCE = "scriptInstance";
  @SerializedName(SERIALIZED_NAME_SCRIPT_INSTANCE)
  private ScriptInstance scriptInstance;

  public static final String SERIALIZED_NAME_DESCRIPTION_I18N = "descriptionI18n";
  @SerializedName(SERIALIZED_NAME_DESCRIPTION_I18N)
  private Map<String, String> descriptionI18n = null;

  public static final String SERIALIZED_NAME_WO_DESCRIPTION_E_L = "woDescriptionEL";
  @SerializedName(SERIALIZED_NAME_WO_DESCRIPTION_E_L)
  private String woDescriptionEL;

  public static final String SERIALIZED_NAME_WO_DESCRIPTION_E_L_SPARK = "woDescriptionELSpark";
  @SerializedName(SERIALIZED_NAME_WO_DESCRIPTION_E_L_SPARK)
  private String woDescriptionELSpark;

  public static final String SERIALIZED_NAME_TOTAL_AMOUNT_E_L = "totalAmountEL";
  @SerializedName(SERIALIZED_NAME_TOTAL_AMOUNT_E_L)
  private String totalAmountEL;

  public static final String SERIALIZED_NAME_TOTAL_AMOUNT_E_L_SPARK = "totalAmountELSpark";
  @SerializedName(SERIALIZED_NAME_TOTAL_AMOUNT_E_L_SPARK)
  private String totalAmountELSpark;

  public static final String SERIALIZED_NAME_MINIMUM_AMOUNT_E_L = "minimumAmountEL";
  @SerializedName(SERIALIZED_NAME_MINIMUM_AMOUNT_E_L)
  private String minimumAmountEL;

  public static final String SERIALIZED_NAME_MINIMUM_AMOUNT_E_L_SPARK = "minimumAmountELSpark";
  @SerializedName(SERIALIZED_NAME_MINIMUM_AMOUNT_E_L_SPARK)
  private String minimumAmountELSpark;

  public static final String SERIALIZED_NAME_INVOICE_SUB_CATEGORY_E_L = "invoiceSubCategoryEL";
  @SerializedName(SERIALIZED_NAME_INVOICE_SUB_CATEGORY_E_L)
  private String invoiceSubCategoryEL;

  public static final String SERIALIZED_NAME_DESCRIPTION_I18N_NULL_SAFE = "descriptionI18nNullSafe";
  @SerializedName(SERIALIZED_NAME_DESCRIPTION_I18N_NULL_SAFE)
  private Map<String, String> descriptionI18nNullSafe = null;

  public static final String SERIALIZED_NAME_ACTIVE = "active";
  @SerializedName(SERIALIZED_NAME_ACTIVE)
  private Boolean active;

  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_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_PARENT_ENTITY = "parentEntity";
  @SerializedName(SERIALIZED_NAME_PARENT_ENTITY)
  private BusinessEntity parentEntity;

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


  public PricePlanMatrix 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 PricePlanMatrix 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 PricePlanMatrix 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 PricePlanMatrix 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 PricePlanMatrix 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 PricePlanMatrix auditableFields(List<AuditableFieldHistory> auditableFields) {
    
    this.auditableFields = auditableFields;
    return this;
  }

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

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

  public Boolean getDisabled() {
    return disabled;
  }



  public void setDisabled(Boolean disabled) {
    this.disabled = disabled;
  }


  public PricePlanMatrix eventCode(String eventCode) {
    
    this.eventCode = eventCode;
    return this;
  }

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

  public String getEventCode() {
    return eventCode;
  }



  public void setEventCode(String eventCode) {
    this.eventCode = eventCode;
  }


  public PricePlanMatrix offerTemplate(OfferTemplate offerTemplate) {
    
    this.offerTemplate = offerTemplate;
    return this;
  }

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

  public OfferTemplate getOfferTemplate() {
    return offerTemplate;
  }



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


  public PricePlanMatrix startSubscriptionDate(OffsetDateTime startSubscriptionDate) {
    
    this.startSubscriptionDate = startSubscriptionDate;
    return this;
  }

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

  public OffsetDateTime getStartSubscriptionDate() {
    return startSubscriptionDate;
  }



  public void setStartSubscriptionDate(OffsetDateTime startSubscriptionDate) {
    this.startSubscriptionDate = startSubscriptionDate;
  }


  public PricePlanMatrix endSubscriptionDate(OffsetDateTime endSubscriptionDate) {
    
    this.endSubscriptionDate = endSubscriptionDate;
    return this;
  }

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

  public OffsetDateTime getEndSubscriptionDate() {
    return endSubscriptionDate;
  }



  public void setEndSubscriptionDate(OffsetDateTime endSubscriptionDate) {
    this.endSubscriptionDate = endSubscriptionDate;
  }


  public PricePlanMatrix startRatingDate(OffsetDateTime startRatingDate) {
    
    this.startRatingDate = startRatingDate;
    return this;
  }

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

  public OffsetDateTime getStartRatingDate() {
    return startRatingDate;
  }



  public void setStartRatingDate(OffsetDateTime startRatingDate) {
    this.startRatingDate = startRatingDate;
  }


  public PricePlanMatrix endRatingDate(OffsetDateTime endRatingDate) {
    
    this.endRatingDate = endRatingDate;
    return this;
  }

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

  public OffsetDateTime getEndRatingDate() {
    return endRatingDate;
  }



  public void setEndRatingDate(OffsetDateTime endRatingDate) {
    this.endRatingDate = endRatingDate;
  }


  public PricePlanMatrix minQuantity(BigDecimal minQuantity) {
    
    this.minQuantity = minQuantity;
    return this;
  }

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

  public BigDecimal getMinQuantity() {
    return minQuantity;
  }



  public void setMinQuantity(BigDecimal minQuantity) {
    this.minQuantity = minQuantity;
  }


  public PricePlanMatrix maxQuantity(BigDecimal maxQuantity) {
    
    this.maxQuantity = maxQuantity;
    return this;
  }

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

  public BigDecimal getMaxQuantity() {
    return maxQuantity;
  }



  public void setMaxQuantity(BigDecimal maxQuantity) {
    this.maxQuantity = maxQuantity;
  }


  public PricePlanMatrix minSubscriptionAgeInMonth(Long minSubscriptionAgeInMonth) {
    
    this.minSubscriptionAgeInMonth = minSubscriptionAgeInMonth;
    return this;
  }

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

  public Long getMinSubscriptionAgeInMonth() {
    return minSubscriptionAgeInMonth;
  }



  public void setMinSubscriptionAgeInMonth(Long minSubscriptionAgeInMonth) {
    this.minSubscriptionAgeInMonth = minSubscriptionAgeInMonth;
  }


  public PricePlanMatrix maxSubscriptionAgeInMonth(Long maxSubscriptionAgeInMonth) {
    
    this.maxSubscriptionAgeInMonth = maxSubscriptionAgeInMonth;
    return this;
  }

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

  public Long getMaxSubscriptionAgeInMonth() {
    return maxSubscriptionAgeInMonth;
  }



  public void setMaxSubscriptionAgeInMonth(Long maxSubscriptionAgeInMonth) {
    this.maxSubscriptionAgeInMonth = maxSubscriptionAgeInMonth;
  }


  public PricePlanMatrix criteria1Value(String criteria1Value) {
    
    this.criteria1Value = criteria1Value;
    return this;
  }

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

  public String getCriteria1Value() {
    return criteria1Value;
  }



  public void setCriteria1Value(String criteria1Value) {
    this.criteria1Value = criteria1Value;
  }


  public PricePlanMatrix criteria2Value(String criteria2Value) {
    
    this.criteria2Value = criteria2Value;
    return this;
  }

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

  public String getCriteria2Value() {
    return criteria2Value;
  }



  public void setCriteria2Value(String criteria2Value) {
    this.criteria2Value = criteria2Value;
  }


  public PricePlanMatrix criteria3Value(String criteria3Value) {
    
    this.criteria3Value = criteria3Value;
    return this;
  }

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

  public String getCriteria3Value() {
    return criteria3Value;
  }



  public void setCriteria3Value(String criteria3Value) {
    this.criteria3Value = criteria3Value;
  }


  public PricePlanMatrix criteriaEL(String criteriaEL) {
    
    this.criteriaEL = criteriaEL;
    return this;
  }

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

  public String getCriteriaEL() {
    return criteriaEL;
  }



  public void setCriteriaEL(String criteriaEL) {
    this.criteriaEL = criteriaEL;
  }


  public PricePlanMatrix criteriaELSpark(String criteriaELSpark) {
    
    this.criteriaELSpark = criteriaELSpark;
    return this;
  }

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

  public String getCriteriaELSpark() {
    return criteriaELSpark;
  }



  public void setCriteriaELSpark(String criteriaELSpark) {
    this.criteriaELSpark = criteriaELSpark;
  }


  public PricePlanMatrix amountWithoutTax(BigDecimal amountWithoutTax) {
    
    this.amountWithoutTax = amountWithoutTax;
    return this;
  }

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

  public BigDecimal getAmountWithoutTax() {
    return amountWithoutTax;
  }



  public void setAmountWithoutTax(BigDecimal amountWithoutTax) {
    this.amountWithoutTax = amountWithoutTax;
  }


  public PricePlanMatrix amountWithTax(BigDecimal amountWithTax) {
    
    this.amountWithTax = amountWithTax;
    return this;
  }

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

  public BigDecimal getAmountWithTax() {
    return amountWithTax;
  }



  public void setAmountWithTax(BigDecimal amountWithTax) {
    this.amountWithTax = amountWithTax;
  }


  public PricePlanMatrix amountWithoutTaxEL(String amountWithoutTaxEL) {
    
    this.amountWithoutTaxEL = amountWithoutTaxEL;
    return this;
  }

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

  public String getAmountWithoutTaxEL() {
    return amountWithoutTaxEL;
  }



  public void setAmountWithoutTaxEL(String amountWithoutTaxEL) {
    this.amountWithoutTaxEL = amountWithoutTaxEL;
  }


  public PricePlanMatrix amountWithoutTaxELSpark(String amountWithoutTaxELSpark) {
    
    this.amountWithoutTaxELSpark = amountWithoutTaxELSpark;
    return this;
  }

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

  public String getAmountWithoutTaxELSpark() {
    return amountWithoutTaxELSpark;
  }



  public void setAmountWithoutTaxELSpark(String amountWithoutTaxELSpark) {
    this.amountWithoutTaxELSpark = amountWithoutTaxELSpark;
  }


  public PricePlanMatrix amountWithTaxEL(String amountWithTaxEL) {
    
    this.amountWithTaxEL = amountWithTaxEL;
    return this;
  }

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

  public String getAmountWithTaxEL() {
    return amountWithTaxEL;
  }



  public void setAmountWithTaxEL(String amountWithTaxEL) {
    this.amountWithTaxEL = amountWithTaxEL;
  }


  public PricePlanMatrix amountWithTaxELSpark(String amountWithTaxELSpark) {
    
    this.amountWithTaxELSpark = amountWithTaxELSpark;
    return this;
  }

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

  public String getAmountWithTaxELSpark() {
    return amountWithTaxELSpark;
  }



  public void setAmountWithTaxELSpark(String amountWithTaxELSpark) {
    this.amountWithTaxELSpark = amountWithTaxELSpark;
  }


  public PricePlanMatrix 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 PricePlanMatrix tradingCountry(TradingCountry tradingCountry) {
    
    this.tradingCountry = tradingCountry;
    return this;
  }

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

  public TradingCountry getTradingCountry() {
    return tradingCountry;
  }



  public void setTradingCountry(TradingCountry tradingCountry) {
    this.tradingCountry = tradingCountry;
  }


  public PricePlanMatrix priority(Integer priority) {
    
    this.priority = priority;
    return this;
  }

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

  public Integer getPriority() {
    return priority;
  }



  public void setPriority(Integer priority) {
    this.priority = priority;
  }


  public PricePlanMatrix seller(Seller seller) {
    
    this.seller = seller;
    return this;
  }

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

  public Seller getSeller() {
    return seller;
  }



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


  public PricePlanMatrix validityCalendar(Calendar validityCalendar) {
    
    this.validityCalendar = validityCalendar;
    return this;
  }

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

  public Calendar getValidityCalendar() {
    return validityCalendar;
  }



  public void setValidityCalendar(Calendar validityCalendar) {
    this.validityCalendar = validityCalendar;
  }


  public PricePlanMatrix sequence(Long sequence) {
    
    this.sequence = sequence;
    return this;
  }

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

  public Long getSequence() {
    return sequence;
  }



  public void setSequence(Long sequence) {
    this.sequence = sequence;
  }


  public PricePlanMatrix scriptInstance(ScriptInstance scriptInstance) {
    
    this.scriptInstance = scriptInstance;
    return this;
  }

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

  public ScriptInstance getScriptInstance() {
    return scriptInstance;
  }



  public void setScriptInstance(ScriptInstance scriptInstance) {
    this.scriptInstance = scriptInstance;
  }


  public PricePlanMatrix descriptionI18n(Map<String, String> descriptionI18n) {
    
    this.descriptionI18n = descriptionI18n;
    return this;
  }

  public PricePlanMatrix putDescriptionI18nItem(String key, String descriptionI18nItem) {
    if (this.descriptionI18n == null) {
      this.descriptionI18n = new HashMap<String, String>();
    }
    this.descriptionI18n.put(key, descriptionI18nItem);
    return this;
  }

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

  public Map<String, String> getDescriptionI18n() {
    return descriptionI18n;
  }



  public void setDescriptionI18n(Map<String, String> descriptionI18n) {
    this.descriptionI18n = descriptionI18n;
  }


  public PricePlanMatrix woDescriptionEL(String woDescriptionEL) {
    
    this.woDescriptionEL = woDescriptionEL;
    return this;
  }

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

  public String getWoDescriptionEL() {
    return woDescriptionEL;
  }



  public void setWoDescriptionEL(String woDescriptionEL) {
    this.woDescriptionEL = woDescriptionEL;
  }


  public PricePlanMatrix woDescriptionELSpark(String woDescriptionELSpark) {
    
    this.woDescriptionELSpark = woDescriptionELSpark;
    return this;
  }

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

  public String getWoDescriptionELSpark() {
    return woDescriptionELSpark;
  }



  public void setWoDescriptionELSpark(String woDescriptionELSpark) {
    this.woDescriptionELSpark = woDescriptionELSpark;
  }


  public PricePlanMatrix totalAmountEL(String totalAmountEL) {
    
    this.totalAmountEL = totalAmountEL;
    return this;
  }

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

  public String getTotalAmountEL() {
    return totalAmountEL;
  }



  public void setTotalAmountEL(String totalAmountEL) {
    this.totalAmountEL = totalAmountEL;
  }


  public PricePlanMatrix totalAmountELSpark(String totalAmountELSpark) {
    
    this.totalAmountELSpark = totalAmountELSpark;
    return this;
  }

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

  public String getTotalAmountELSpark() {
    return totalAmountELSpark;
  }



  public void setTotalAmountELSpark(String totalAmountELSpark) {
    this.totalAmountELSpark = totalAmountELSpark;
  }


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

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

  public String getInvoiceSubCategoryEL() {
    return invoiceSubCategoryEL;
  }



  public void setInvoiceSubCategoryEL(String invoiceSubCategoryEL) {
    this.invoiceSubCategoryEL = invoiceSubCategoryEL;
  }


  public PricePlanMatrix descriptionI18nNullSafe(Map<String, String> descriptionI18nNullSafe) {
    
    this.descriptionI18nNullSafe = descriptionI18nNullSafe;
    return this;
  }

  public PricePlanMatrix putDescriptionI18nNullSafeItem(String key, String descriptionI18nNullSafeItem) {
    if (this.descriptionI18nNullSafe == null) {
      this.descriptionI18nNullSafe = new HashMap<String, String>();
    }
    this.descriptionI18nNullSafe.put(key, descriptionI18nNullSafeItem);
    return this;
  }

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

  public Map<String, String> getDescriptionI18nNullSafe() {
    return descriptionI18nNullSafe;
  }



  public void setDescriptionI18nNullSafe(Map<String, String> descriptionI18nNullSafe) {
    this.descriptionI18nNullSafe = descriptionI18nNullSafe;
  }


  public PricePlanMatrix active(Boolean active) {
    
    this.active = active;
    return this;
  }

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

  public Boolean getActive() {
    return active;
  }



  public void setActive(Boolean active) {
    this.active = active;
  }


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

  public PricePlanMatrix 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 PricePlanMatrix 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 PricePlanMatrix cfValuesAsValues(Map<String, Object> cfValuesAsValues) {
    
    this.cfValuesAsValues = cfValuesAsValues;
    return this;
  }

  public PricePlanMatrix 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 PricePlanMatrix 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 PricePlanMatrix 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 PricePlanMatrix 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 PricePlanMatrix 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 PricePlanMatrix 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 PricePlanMatrix 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 PricePlanMatrix 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 PricePlanMatrix _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;
    }
    PricePlanMatrix pricePlanMatrix = (PricePlanMatrix) o;
    return Objects.equals(this.id, pricePlanMatrix.id) &&
        Objects.equals(this.version, pricePlanMatrix.version) &&
        Objects.equals(this.auditable, pricePlanMatrix.auditable) &&
        Objects.equals(this.historized, pricePlanMatrix.historized) &&
        Objects.equals(this.notified, pricePlanMatrix.notified) &&
        Objects.equals(this.auditableFields, pricePlanMatrix.auditableFields) &&
        Objects.equals(this.code, pricePlanMatrix.code) &&
        Objects.equals(this.description, pricePlanMatrix.description) &&
        Objects.equals(this.appendGeneratedCode, pricePlanMatrix.appendGeneratedCode) &&
        Objects.equals(this.uuid, pricePlanMatrix.uuid) &&
        Objects.equals(this.cfValues, pricePlanMatrix.cfValues) &&
        Objects.equals(this.cfAccumulatedValues, pricePlanMatrix.cfAccumulatedValues) &&
        Objects.equals(this.disabled, pricePlanMatrix.disabled) &&
        Objects.equals(this.eventCode, pricePlanMatrix.eventCode) &&
        Objects.equals(this.offerTemplate, pricePlanMatrix.offerTemplate) &&
        Objects.equals(this.startSubscriptionDate, pricePlanMatrix.startSubscriptionDate) &&
        Objects.equals(this.endSubscriptionDate, pricePlanMatrix.endSubscriptionDate) &&
        Objects.equals(this.startRatingDate, pricePlanMatrix.startRatingDate) &&
        Objects.equals(this.endRatingDate, pricePlanMatrix.endRatingDate) &&
        Objects.equals(this.minQuantity, pricePlanMatrix.minQuantity) &&
        Objects.equals(this.maxQuantity, pricePlanMatrix.maxQuantity) &&
        Objects.equals(this.minSubscriptionAgeInMonth, pricePlanMatrix.minSubscriptionAgeInMonth) &&
        Objects.equals(this.maxSubscriptionAgeInMonth, pricePlanMatrix.maxSubscriptionAgeInMonth) &&
        Objects.equals(this.criteria1Value, pricePlanMatrix.criteria1Value) &&
        Objects.equals(this.criteria2Value, pricePlanMatrix.criteria2Value) &&
        Objects.equals(this.criteria3Value, pricePlanMatrix.criteria3Value) &&
        Objects.equals(this.criteriaEL, pricePlanMatrix.criteriaEL) &&
        Objects.equals(this.criteriaELSpark, pricePlanMatrix.criteriaELSpark) &&
        Objects.equals(this.amountWithoutTax, pricePlanMatrix.amountWithoutTax) &&
        Objects.equals(this.amountWithTax, pricePlanMatrix.amountWithTax) &&
        Objects.equals(this.amountWithoutTaxEL, pricePlanMatrix.amountWithoutTaxEL) &&
        Objects.equals(this.amountWithoutTaxELSpark, pricePlanMatrix.amountWithoutTaxELSpark) &&
        Objects.equals(this.amountWithTaxEL, pricePlanMatrix.amountWithTaxEL) &&
        Objects.equals(this.amountWithTaxELSpark, pricePlanMatrix.amountWithTaxELSpark) &&
        Objects.equals(this.tradingCurrency, pricePlanMatrix.tradingCurrency) &&
        Objects.equals(this.tradingCountry, pricePlanMatrix.tradingCountry) &&
        Objects.equals(this.priority, pricePlanMatrix.priority) &&
        Objects.equals(this.seller, pricePlanMatrix.seller) &&
        Objects.equals(this.validityCalendar, pricePlanMatrix.validityCalendar) &&
        Objects.equals(this.sequence, pricePlanMatrix.sequence) &&
        Objects.equals(this.scriptInstance, pricePlanMatrix.scriptInstance) &&
        Objects.equals(this.descriptionI18n, pricePlanMatrix.descriptionI18n) &&
        Objects.equals(this.woDescriptionEL, pricePlanMatrix.woDescriptionEL) &&
        Objects.equals(this.woDescriptionELSpark, pricePlanMatrix.woDescriptionELSpark) &&
        Objects.equals(this.totalAmountEL, pricePlanMatrix.totalAmountEL) &&
        Objects.equals(this.totalAmountELSpark, pricePlanMatrix.totalAmountELSpark) &&
        Objects.equals(this.minimumAmountEL, pricePlanMatrix.minimumAmountEL) &&
        Objects.equals(this.minimumAmountELSpark, pricePlanMatrix.minimumAmountELSpark) &&
        Objects.equals(this.invoiceSubCategoryEL, pricePlanMatrix.invoiceSubCategoryEL) &&
        Objects.equals(this.descriptionI18nNullSafe, pricePlanMatrix.descriptionI18nNullSafe) &&
        Objects.equals(this.active, pricePlanMatrix.active) &&
        Objects.equals(this.parentCFEntities, pricePlanMatrix.parentCFEntities) &&
        Objects.equals(this.cfValuesNullSafe, pricePlanMatrix.cfValuesNullSafe) &&
        Objects.equals(this.cfValuesAsValues, pricePlanMatrix.cfValuesAsValues) &&
        Objects.equals(this.cfAccumulatedValuesNullSafe, pricePlanMatrix.cfAccumulatedValuesNullSafe) &&
        Objects.equals(this.descriptionOrCode, pricePlanMatrix.descriptionOrCode) &&
        Objects.equals(this.descriptionAndCode, pricePlanMatrix.descriptionAndCode) &&
        Objects.equals(this.referenceCode, pricePlanMatrix.referenceCode) &&
        Objects.equals(this.referenceDescription, pricePlanMatrix.referenceDescription) &&
        Objects.equals(this.codeChanged, pricePlanMatrix.codeChanged) &&
        Objects.equals(this.parentEntity, pricePlanMatrix.parentEntity) &&
        Objects.equals(this._transient, pricePlanMatrix._transient);
  }

  @Override
  public int hashCode() {
    return Objects.hash(id, version, auditable, historized, notified, auditableFields, code, description, appendGeneratedCode, uuid, cfValues, cfAccumulatedValues, disabled, eventCode, offerTemplate, startSubscriptionDate, endSubscriptionDate, startRatingDate, endRatingDate, minQuantity, maxQuantity, minSubscriptionAgeInMonth, maxSubscriptionAgeInMonth, criteria1Value, criteria2Value, criteria3Value, criteriaEL, criteriaELSpark, amountWithoutTax, amountWithTax, amountWithoutTaxEL, amountWithoutTaxELSpark, amountWithTaxEL, amountWithTaxELSpark, tradingCurrency, tradingCountry, priority, seller, validityCalendar, sequence, scriptInstance, descriptionI18n, woDescriptionEL, woDescriptionELSpark, totalAmountEL, totalAmountELSpark, minimumAmountEL, minimumAmountELSpark, invoiceSubCategoryEL, descriptionI18nNullSafe, active, parentCFEntities, cfValuesNullSafe, cfValuesAsValues, cfAccumulatedValuesNullSafe, descriptionOrCode, descriptionAndCode, referenceCode, referenceDescription, codeChanged, parentEntity, _transient);
  }


  @Override
  public String toString() {
    StringBuilder sb = new StringBuilder();
    sb.append("class PricePlanMatrix {\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("    disabled: ").append(toIndentedString(disabled)).append("\n");
    sb.append("    eventCode: ").append(toIndentedString(eventCode)).append("\n");
    sb.append("    offerTemplate: ").append(toIndentedString(offerTemplate)).append("\n");
    sb.append("    startSubscriptionDate: ").append(toIndentedString(startSubscriptionDate)).append("\n");
    sb.append("    endSubscriptionDate: ").append(toIndentedString(endSubscriptionDate)).append("\n");
    sb.append("    startRatingDate: ").append(toIndentedString(startRatingDate)).append("\n");
    sb.append("    endRatingDate: ").append(toIndentedString(endRatingDate)).append("\n");
    sb.append("    minQuantity: ").append(toIndentedString(minQuantity)).append("\n");
    sb.append("    maxQuantity: ").append(toIndentedString(maxQuantity)).append("\n");
    sb.append("    minSubscriptionAgeInMonth: ").append(toIndentedString(minSubscriptionAgeInMonth)).append("\n");
    sb.append("    maxSubscriptionAgeInMonth: ").append(toIndentedString(maxSubscriptionAgeInMonth)).append("\n");
    sb.append("    criteria1Value: ").append(toIndentedString(criteria1Value)).append("\n");
    sb.append("    criteria2Value: ").append(toIndentedString(criteria2Value)).append("\n");
    sb.append("    criteria3Value: ").append(toIndentedString(criteria3Value)).append("\n");
    sb.append("    criteriaEL: ").append(toIndentedString(criteriaEL)).append("\n");
    sb.append("    criteriaELSpark: ").append(toIndentedString(criteriaELSpark)).append("\n");
    sb.append("    amountWithoutTax: ").append(toIndentedString(amountWithoutTax)).append("\n");
    sb.append("    amountWithTax: ").append(toIndentedString(amountWithTax)).append("\n");
    sb.append("    amountWithoutTaxEL: ").append(toIndentedString(amountWithoutTaxEL)).append("\n");
    sb.append("    amountWithoutTaxELSpark: ").append(toIndentedString(amountWithoutTaxELSpark)).append("\n");
    sb.append("    amountWithTaxEL: ").append(toIndentedString(amountWithTaxEL)).append("\n");
    sb.append("    amountWithTaxELSpark: ").append(toIndentedString(amountWithTaxELSpark)).append("\n");
    sb.append("    tradingCurrency: ").append(toIndentedString(tradingCurrency)).append("\n");
    sb.append("    tradingCountry: ").append(toIndentedString(tradingCountry)).append("\n");
    sb.append("    priority: ").append(toIndentedString(priority)).append("\n");
    sb.append("    seller: ").append(toIndentedString(seller)).append("\n");
    sb.append("    validityCalendar: ").append(toIndentedString(validityCalendar)).append("\n");
    sb.append("    sequence: ").append(toIndentedString(sequence)).append("\n");
    sb.append("    scriptInstance: ").append(toIndentedString(scriptInstance)).append("\n");
    sb.append("    descriptionI18n: ").append(toIndentedString(descriptionI18n)).append("\n");
    sb.append("    woDescriptionEL: ").append(toIndentedString(woDescriptionEL)).append("\n");
    sb.append("    woDescriptionELSpark: ").append(toIndentedString(woDescriptionELSpark)).append("\n");
    sb.append("    totalAmountEL: ").append(toIndentedString(totalAmountEL)).append("\n");
    sb.append("    totalAmountELSpark: ").append(toIndentedString(totalAmountELSpark)).append("\n");
    sb.append("    minimumAmountEL: ").append(toIndentedString(minimumAmountEL)).append("\n");
    sb.append("    minimumAmountELSpark: ").append(toIndentedString(minimumAmountELSpark)).append("\n");
    sb.append("    invoiceSubCategoryEL: ").append(toIndentedString(invoiceSubCategoryEL)).append("\n");
    sb.append("    descriptionI18nNullSafe: ").append(toIndentedString(descriptionI18nNullSafe)).append("\n");
    sb.append("    active: ").append(toIndentedString(active)).append("\n");
    sb.append("    parentCFEntities: ").append(toIndentedString(parentCFEntities)).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("    parentEntity: ").append(toIndentedString(parentEntity)).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    ");
  }

}

