/*
 * 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.CustomFieldValues;
import org.openapitools.client.model.DiscountPlan;
import org.openapitools.client.model.ICustomFieldEntity;
import org.openapitools.client.model.InvoiceCategory;
import org.openapitools.client.model.InvoiceSubCategory;

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

  public static final String SERIALIZED_NAME_CODE = "code";
  @SerializedName(SERIALIZED_NAME_CODE)
  private String code;

  public static final String SERIALIZED_NAME_DISCOUNT_PLAN = "discountPlan";
  @SerializedName(SERIALIZED_NAME_DISCOUNT_PLAN)
  private DiscountPlan discountPlan;

  public static final String SERIALIZED_NAME_INVOICE_CATEGORY = "invoiceCategory";
  @SerializedName(SERIALIZED_NAME_INVOICE_CATEGORY)
  private InvoiceCategory invoiceCategory;

  public static final String SERIALIZED_NAME_INVOICE_SUB_CATEGORY = "invoiceSubCategory";
  @SerializedName(SERIALIZED_NAME_INVOICE_SUB_CATEGORY)
  private InvoiceSubCategory invoiceSubCategory;

  public static final String SERIALIZED_NAME_ACCOUNTING_CODE = "accountingCode";
  @SerializedName(SERIALIZED_NAME_ACCOUNTING_CODE)
  private String accountingCode;

  public static final String SERIALIZED_NAME_EXPRESSION_EL = "expressionEl";
  @SerializedName(SERIALIZED_NAME_EXPRESSION_EL)
  private String expressionEl;

  public static final String SERIALIZED_NAME_EXPRESSION_EL_SPARK = "expressionElSpark";
  @SerializedName(SERIALIZED_NAME_EXPRESSION_EL_SPARK)
  private String expressionElSpark;

  public static final String SERIALIZED_NAME_DISCOUNT_VALUE = "discountValue";
  @SerializedName(SERIALIZED_NAME_DISCOUNT_VALUE)
  private BigDecimal discountValue;

  public static final String SERIALIZED_NAME_DISCOUNT_VALUE_E_L = "discountValueEL";
  @SerializedName(SERIALIZED_NAME_DISCOUNT_VALUE_E_L)
  private String discountValueEL;

  public static final String SERIALIZED_NAME_DISCOUNT_VALUE_EL_SPARK = "discountValueElSpark";
  @SerializedName(SERIALIZED_NAME_DISCOUNT_VALUE_EL_SPARK)
  private String discountValueElSpark;

  /**
   * Gets or Sets discountPlanItemType
   */
  @JsonAdapter(DiscountPlanItemTypeEnum.Adapter.class)
  public enum DiscountPlanItemTypeEnum {
    PERCENTAGE("PERCENTAGE"),
    
    FIXED("FIXED");

    private String value;

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

    public String getValue() {
      return value;
    }

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

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

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

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

  public static final String SERIALIZED_NAME_DISCOUNT_PLAN_ITEM_TYPE = "discountPlanItemType";
  @SerializedName(SERIALIZED_NAME_DISCOUNT_PLAN_ITEM_TYPE)
  private DiscountPlanItemTypeEnum discountPlanItemType;

  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_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_ACTIVE = "active";
  @SerializedName(SERIALIZED_NAME_ACTIVE)
  private Boolean active;

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


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

  public DiscountPlanItem 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 DiscountPlanItem 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 DiscountPlanItem 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 DiscountPlanItem discountPlan(DiscountPlan discountPlan) {
    
    this.discountPlan = discountPlan;
    return this;
  }

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

  public DiscountPlan getDiscountPlan() {
    return discountPlan;
  }



  public void setDiscountPlan(DiscountPlan discountPlan) {
    this.discountPlan = discountPlan;
  }


  public DiscountPlanItem invoiceCategory(InvoiceCategory invoiceCategory) {
    
    this.invoiceCategory = invoiceCategory;
    return this;
  }

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

  public InvoiceCategory getInvoiceCategory() {
    return invoiceCategory;
  }



  public void setInvoiceCategory(InvoiceCategory invoiceCategory) {
    this.invoiceCategory = invoiceCategory;
  }


  public DiscountPlanItem invoiceSubCategory(InvoiceSubCategory invoiceSubCategory) {
    
    this.invoiceSubCategory = invoiceSubCategory;
    return this;
  }

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

  public InvoiceSubCategory getInvoiceSubCategory() {
    return invoiceSubCategory;
  }



  public void setInvoiceSubCategory(InvoiceSubCategory invoiceSubCategory) {
    this.invoiceSubCategory = invoiceSubCategory;
  }


  public DiscountPlanItem accountingCode(String accountingCode) {
    
    this.accountingCode = accountingCode;
    return this;
  }

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

  public String getAccountingCode() {
    return accountingCode;
  }



  public void setAccountingCode(String accountingCode) {
    this.accountingCode = accountingCode;
  }


  public DiscountPlanItem expressionEl(String expressionEl) {
    
    this.expressionEl = expressionEl;
    return this;
  }

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

  public String getExpressionEl() {
    return expressionEl;
  }



  public void setExpressionEl(String expressionEl) {
    this.expressionEl = expressionEl;
  }


  public DiscountPlanItem expressionElSpark(String expressionElSpark) {
    
    this.expressionElSpark = expressionElSpark;
    return this;
  }

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

  public String getExpressionElSpark() {
    return expressionElSpark;
  }



  public void setExpressionElSpark(String expressionElSpark) {
    this.expressionElSpark = expressionElSpark;
  }


  public DiscountPlanItem discountValue(BigDecimal discountValue) {
    
    this.discountValue = discountValue;
    return this;
  }

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

  public BigDecimal getDiscountValue() {
    return discountValue;
  }



  public void setDiscountValue(BigDecimal discountValue) {
    this.discountValue = discountValue;
  }


  public DiscountPlanItem discountValueEL(String discountValueEL) {
    
    this.discountValueEL = discountValueEL;
    return this;
  }

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

  public String getDiscountValueEL() {
    return discountValueEL;
  }



  public void setDiscountValueEL(String discountValueEL) {
    this.discountValueEL = discountValueEL;
  }


  public DiscountPlanItem discountValueElSpark(String discountValueElSpark) {
    
    this.discountValueElSpark = discountValueElSpark;
    return this;
  }

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

  public String getDiscountValueElSpark() {
    return discountValueElSpark;
  }



  public void setDiscountValueElSpark(String discountValueElSpark) {
    this.discountValueElSpark = discountValueElSpark;
  }


  public DiscountPlanItem discountPlanItemType(DiscountPlanItemTypeEnum discountPlanItemType) {
    
    this.discountPlanItemType = discountPlanItemType;
    return this;
  }

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

  public DiscountPlanItemTypeEnum getDiscountPlanItemType() {
    return discountPlanItemType;
  }



  public void setDiscountPlanItemType(DiscountPlanItemTypeEnum discountPlanItemType) {
    this.discountPlanItemType = discountPlanItemType;
  }


  public DiscountPlanItem 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 DiscountPlanItem 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 DiscountPlanItem 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 DiscountPlanItem parentCFEntities(List<ICustomFieldEntity> parentCFEntities) {
    
    this.parentCFEntities = parentCFEntities;
    return this;
  }

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

  public DiscountPlanItem 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 DiscountPlanItem 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 DiscountPlanItem 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 DiscountPlanItem _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;
    }
    DiscountPlanItem discountPlanItem = (DiscountPlanItem) o;
    return Objects.equals(this.id, discountPlanItem.id) &&
        Objects.equals(this.version, discountPlanItem.version) &&
        Objects.equals(this.auditable, discountPlanItem.auditable) &&
        Objects.equals(this.historized, discountPlanItem.historized) &&
        Objects.equals(this.notified, discountPlanItem.notified) &&
        Objects.equals(this.auditableFields, discountPlanItem.auditableFields) &&
        Objects.equals(this.disabled, discountPlanItem.disabled) &&
        Objects.equals(this.code, discountPlanItem.code) &&
        Objects.equals(this.discountPlan, discountPlanItem.discountPlan) &&
        Objects.equals(this.invoiceCategory, discountPlanItem.invoiceCategory) &&
        Objects.equals(this.invoiceSubCategory, discountPlanItem.invoiceSubCategory) &&
        Objects.equals(this.accountingCode, discountPlanItem.accountingCode) &&
        Objects.equals(this.expressionEl, discountPlanItem.expressionEl) &&
        Objects.equals(this.expressionElSpark, discountPlanItem.expressionElSpark) &&
        Objects.equals(this.discountValue, discountPlanItem.discountValue) &&
        Objects.equals(this.discountValueEL, discountPlanItem.discountValueEL) &&
        Objects.equals(this.discountValueElSpark, discountPlanItem.discountValueElSpark) &&
        Objects.equals(this.discountPlanItemType, discountPlanItem.discountPlanItemType) &&
        Objects.equals(this.uuid, discountPlanItem.uuid) &&
        Objects.equals(this.cfValues, discountPlanItem.cfValues) &&
        Objects.equals(this.cfAccumulatedValues, discountPlanItem.cfAccumulatedValues) &&
        Objects.equals(this.parentCFEntities, discountPlanItem.parentCFEntities) &&
        Objects.equals(this.cfValuesNullSafe, discountPlanItem.cfValuesNullSafe) &&
        Objects.equals(this.cfValuesAsValues, discountPlanItem.cfValuesAsValues) &&
        Objects.equals(this.cfAccumulatedValuesNullSafe, discountPlanItem.cfAccumulatedValuesNullSafe) &&
        Objects.equals(this.active, discountPlanItem.active) &&
        Objects.equals(this._transient, discountPlanItem._transient);
  }

  @Override
  public int hashCode() {
    return Objects.hash(id, version, auditable, historized, notified, auditableFields, disabled, code, discountPlan, invoiceCategory, invoiceSubCategory, accountingCode, expressionEl, expressionElSpark, discountValue, discountValueEL, discountValueElSpark, discountPlanItemType, uuid, cfValues, cfAccumulatedValues, parentCFEntities, cfValuesNullSafe, cfValuesAsValues, cfAccumulatedValuesNullSafe, active, _transient);
  }


  @Override
  public String toString() {
    StringBuilder sb = new StringBuilder();
    sb.append("class DiscountPlanItem {\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("    disabled: ").append(toIndentedString(disabled)).append("\n");
    sb.append("    code: ").append(toIndentedString(code)).append("\n");
    sb.append("    discountPlan: ").append(toIndentedString(discountPlan)).append("\n");
    sb.append("    invoiceCategory: ").append(toIndentedString(invoiceCategory)).append("\n");
    sb.append("    invoiceSubCategory: ").append(toIndentedString(invoiceSubCategory)).append("\n");
    sb.append("    accountingCode: ").append(toIndentedString(accountingCode)).append("\n");
    sb.append("    expressionEl: ").append(toIndentedString(expressionEl)).append("\n");
    sb.append("    expressionElSpark: ").append(toIndentedString(expressionElSpark)).append("\n");
    sb.append("    discountValue: ").append(toIndentedString(discountValue)).append("\n");
    sb.append("    discountValueEL: ").append(toIndentedString(discountValueEL)).append("\n");
    sb.append("    discountValueElSpark: ").append(toIndentedString(discountValueElSpark)).append("\n");
    sb.append("    discountPlanItemType: ").append(toIndentedString(discountPlanItemType)).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("    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("    active: ").append(toIndentedString(active)).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    ");
  }

}

