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


package org.openapitools.client.model;

import java.util.Objects;
import java.util.Arrays;
import com.google.gson.TypeAdapter;
import com.google.gson.annotations.JsonAdapter;
import com.google.gson.annotations.SerializedName;
import com.google.gson.stream.JsonReader;
import com.google.gson.stream.JsonWriter;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import java.io.IOException;
import java.math.BigDecimal;
import java.util.ArrayList;
import java.util.List;
import org.openapitools.client.model.Auditable;
import org.openapitools.client.model.AuditableFieldHistory;
import org.openapitools.client.model.BillingAccount;
import org.openapitools.client.model.BillingRun;
import org.openapitools.client.model.BusinessEntity;
import org.openapitools.client.model.ChargeInstance;
import org.openapitools.client.model.CounterInstance;
import org.openapitools.client.model.Currency;
import org.openapitools.client.model.EDR;
import org.openapitools.client.model.InvoiceSubCategory;
import org.openapitools.client.model.OfferTemplate;
import org.openapitools.client.model.PricePlanMatrix;
import org.openapitools.client.model.RatedTransaction;
import org.openapitools.client.model.Seller;
import org.openapitools.client.model.ServiceInstance;
import org.openapitools.client.model.Subscription;
import org.openapitools.client.model.Tax;
import org.openapitools.client.model.WalletInstance;
import org.threeten.bp.OffsetDateTime;

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

  public static final String SERIALIZED_NAME_OPERATION_DATE = "operationDate";
  @SerializedName(SERIALIZED_NAME_OPERATION_DATE)
  private OffsetDateTime operationDate;

  public static final String SERIALIZED_NAME_INVOICING_DATE = "invoicingDate";
  @SerializedName(SERIALIZED_NAME_INVOICING_DATE)
  private OffsetDateTime invoicingDate;

  /**
   * Gets or Sets type
   */
  @JsonAdapter(TypeEnum.Adapter.class)
  public enum TypeEnum {
    CREDIT("CREDIT"),
    
    DEBIT("DEBIT");

    private String value;

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

    public String getValue() {
      return value;
    }

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

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

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

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

  public static final String SERIALIZED_NAME_TYPE = "type";
  @SerializedName(SERIALIZED_NAME_TYPE)
  private TypeEnum type;

  public static final String SERIALIZED_NAME_CHARGE_INSTANCE = "chargeInstance";
  @SerializedName(SERIALIZED_NAME_CHARGE_INSTANCE)
  private ChargeInstance chargeInstance;

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

  public static final String SERIALIZED_NAME_TAX = "tax";
  @SerializedName(SERIALIZED_NAME_TAX)
  private Tax tax;

  public static final String SERIALIZED_NAME_TAX_PERCENT = "taxPercent";
  @SerializedName(SERIALIZED_NAME_TAX_PERCENT)
  private BigDecimal taxPercent;

  public static final String SERIALIZED_NAME_UNIT_AMOUNT_WITHOUT_TAX = "unitAmountWithoutTax";
  @SerializedName(SERIALIZED_NAME_UNIT_AMOUNT_WITHOUT_TAX)
  private BigDecimal unitAmountWithoutTax;

  public static final String SERIALIZED_NAME_UNIT_AMOUNT_WITH_TAX = "unitAmountWithTax";
  @SerializedName(SERIALIZED_NAME_UNIT_AMOUNT_WITH_TAX)
  private BigDecimal unitAmountWithTax;

  public static final String SERIALIZED_NAME_UNIT_AMOUNT_TAX = "unitAmountTax";
  @SerializedName(SERIALIZED_NAME_UNIT_AMOUNT_TAX)
  private BigDecimal unitAmountTax;

  public static final String SERIALIZED_NAME_QUANTITY = "quantity";
  @SerializedName(SERIALIZED_NAME_QUANTITY)
  private BigDecimal quantity;

  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_TAX = "amountTax";
  @SerializedName(SERIALIZED_NAME_AMOUNT_TAX)
  private BigDecimal amountTax;

  public static final String SERIALIZED_NAME_COUNTER = "counter";
  @SerializedName(SERIALIZED_NAME_COUNTER)
  private CounterInstance counter;

  public static final String SERIALIZED_NAME_AGGREGATED_SERVICE_INSTANCE = "aggregatedServiceInstance";
  @SerializedName(SERIALIZED_NAME_AGGREGATED_SERVICE_INSTANCE)
  private ServiceInstance aggregatedServiceInstance;

  public static final String SERIALIZED_NAME_PARAMETER1 = "parameter1";
  @SerializedName(SERIALIZED_NAME_PARAMETER1)
  private String parameter1;

  public static final String SERIALIZED_NAME_PARAMETER2 = "parameter2";
  @SerializedName(SERIALIZED_NAME_PARAMETER2)
  private String parameter2;

  public static final String SERIALIZED_NAME_PARAMETER3 = "parameter3";
  @SerializedName(SERIALIZED_NAME_PARAMETER3)
  private String parameter3;

  public static final String SERIALIZED_NAME_PARAMETER_EXTRA = "parameterExtra";
  @SerializedName(SERIALIZED_NAME_PARAMETER_EXTRA)
  private String parameterExtra;

  public static final String SERIALIZED_NAME_START_DATE = "startDate";
  @SerializedName(SERIALIZED_NAME_START_DATE)
  private OffsetDateTime startDate;

  public static final String SERIALIZED_NAME_END_DATE = "endDate";
  @SerializedName(SERIALIZED_NAME_END_DATE)
  private OffsetDateTime endDate;

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

  public static final String SERIALIZED_NAME_OFFER_CODE = "offerCode";
  @SerializedName(SERIALIZED_NAME_OFFER_CODE)
  private String offerCode;

  /**
   * Gets or Sets status
   */
  @JsonAdapter(StatusEnum.Adapter.class)
  public enum StatusEnum {
    OPEN("OPEN"),
    
    TREATED("TREATED"),
    
    CANCELED("CANCELED"),
    
    RESERVED("RESERVED"),
    
    TO_RERATE("TO_RERATE"),
    
    RERATED("RERATED"),
    
    SCHEDULED("SCHEDULED");

    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_SELLER = "seller";
  @SerializedName(SERIALIZED_NAME_SELLER)
  private Seller seller;

  public static final String SERIALIZED_NAME_PRICEPLAN = "priceplan";
  @SerializedName(SERIALIZED_NAME_PRICEPLAN)
  private PricePlanMatrix priceplan;

  public static final String SERIALIZED_NAME_RERATED_WALLET_OPERATION = "reratedWalletOperation";
  @SerializedName(SERIALIZED_NAME_RERATED_WALLET_OPERATION)
  private WalletOperation reratedWalletOperation;

  public static final String SERIALIZED_NAME_INPUT_UNIT_DESCRIPTION = "inputUnitDescription";
  @SerializedName(SERIALIZED_NAME_INPUT_UNIT_DESCRIPTION)
  private String inputUnitDescription;

  public static final String SERIALIZED_NAME_RATING_UNIT_DESCRIPTION = "ratingUnitDescription";
  @SerializedName(SERIALIZED_NAME_RATING_UNIT_DESCRIPTION)
  private String ratingUnitDescription;

  public static final String SERIALIZED_NAME_INPUT_QUANTITY = "inputQuantity";
  @SerializedName(SERIALIZED_NAME_INPUT_QUANTITY)
  private BigDecimal inputQuantity;

  public static final String SERIALIZED_NAME_EDR = "edr";
  @SerializedName(SERIALIZED_NAME_EDR)
  private EDR edr;

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

  public static final String SERIALIZED_NAME_RAW_AMOUNT_WITHOUT_TAX = "rawAmountWithoutTax";
  @SerializedName(SERIALIZED_NAME_RAW_AMOUNT_WITHOUT_TAX)
  private BigDecimal rawAmountWithoutTax;

  public static final String SERIALIZED_NAME_RAW_AMOUNT_WITH_TAX = "rawAmountWithTax";
  @SerializedName(SERIALIZED_NAME_RAW_AMOUNT_WITH_TAX)
  private BigDecimal rawAmountWithTax;

  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_SUBSCRIPTION = "subscription";
  @SerializedName(SERIALIZED_NAME_SUBSCRIPTION)
  private Subscription subscription;

  public static final String SERIALIZED_NAME_RATED_TRANSACTION = "ratedTransaction";
  @SerializedName(SERIALIZED_NAME_RATED_TRANSACTION)
  private RatedTransaction ratedTransaction;

  public static final String SERIALIZED_NAME_SERVICE_INSTANCE = "serviceInstance";
  @SerializedName(SERIALIZED_NAME_SERVICE_INSTANCE)
  private ServiceInstance serviceInstance;

  public static final String SERIALIZED_NAME_BILLING_ACCOUNT = "billingAccount";
  @SerializedName(SERIALIZED_NAME_BILLING_ACCOUNT)
  private BillingAccount billingAccount;

  public static final String SERIALIZED_NAME_BILLING_RUN = "billingRun";
  @SerializedName(SERIALIZED_NAME_BILLING_RUN)
  private BillingRun billingRun;

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

  public static final String SERIALIZED_NAME_UNRATED_CLONE = "unratedClone";
  @SerializedName(SERIALIZED_NAME_UNRATED_CLONE)
  private WalletOperation unratedClone;

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

  public WalletOperation 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 WalletOperation 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 WalletOperation 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 WalletOperation 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 WalletOperation wallet(WalletInstance wallet) {
    
    this.wallet = wallet;
    return this;
  }

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

  public WalletInstance getWallet() {
    return wallet;
  }



  public void setWallet(WalletInstance wallet) {
    this.wallet = wallet;
  }


  public WalletOperation operationDate(OffsetDateTime operationDate) {
    
    this.operationDate = operationDate;
    return this;
  }

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

  public OffsetDateTime getOperationDate() {
    return operationDate;
  }



  public void setOperationDate(OffsetDateTime operationDate) {
    this.operationDate = operationDate;
  }


  public WalletOperation invoicingDate(OffsetDateTime invoicingDate) {
    
    this.invoicingDate = invoicingDate;
    return this;
  }

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

  public OffsetDateTime getInvoicingDate() {
    return invoicingDate;
  }



  public void setInvoicingDate(OffsetDateTime invoicingDate) {
    this.invoicingDate = invoicingDate;
  }


  public WalletOperation type(TypeEnum type) {
    
    this.type = type;
    return this;
  }

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

  public TypeEnum getType() {
    return type;
  }



  public void setType(TypeEnum type) {
    this.type = type;
  }


  public WalletOperation chargeInstance(ChargeInstance chargeInstance) {
    
    this.chargeInstance = chargeInstance;
    return this;
  }

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

  public ChargeInstance getChargeInstance() {
    return chargeInstance;
  }



  public void setChargeInstance(ChargeInstance chargeInstance) {
    this.chargeInstance = chargeInstance;
  }


  public WalletOperation currency(Currency currency) {
    
    this.currency = currency;
    return this;
  }

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

  public Currency getCurrency() {
    return currency;
  }



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


  public WalletOperation tax(Tax tax) {
    
    this.tax = tax;
    return this;
  }

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

  public Tax getTax() {
    return tax;
  }



  public void setTax(Tax tax) {
    this.tax = tax;
  }


  public WalletOperation taxPercent(BigDecimal taxPercent) {
    
    this.taxPercent = taxPercent;
    return this;
  }

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

  public BigDecimal getTaxPercent() {
    return taxPercent;
  }



  public void setTaxPercent(BigDecimal taxPercent) {
    this.taxPercent = taxPercent;
  }


  public WalletOperation unitAmountWithoutTax(BigDecimal unitAmountWithoutTax) {
    
    this.unitAmountWithoutTax = unitAmountWithoutTax;
    return this;
  }

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

  public BigDecimal getUnitAmountWithoutTax() {
    return unitAmountWithoutTax;
  }



  public void setUnitAmountWithoutTax(BigDecimal unitAmountWithoutTax) {
    this.unitAmountWithoutTax = unitAmountWithoutTax;
  }


  public WalletOperation unitAmountWithTax(BigDecimal unitAmountWithTax) {
    
    this.unitAmountWithTax = unitAmountWithTax;
    return this;
  }

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

  public BigDecimal getUnitAmountWithTax() {
    return unitAmountWithTax;
  }



  public void setUnitAmountWithTax(BigDecimal unitAmountWithTax) {
    this.unitAmountWithTax = unitAmountWithTax;
  }


  public WalletOperation unitAmountTax(BigDecimal unitAmountTax) {
    
    this.unitAmountTax = unitAmountTax;
    return this;
  }

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

  public BigDecimal getUnitAmountTax() {
    return unitAmountTax;
  }



  public void setUnitAmountTax(BigDecimal unitAmountTax) {
    this.unitAmountTax = unitAmountTax;
  }


  public WalletOperation quantity(BigDecimal quantity) {
    
    this.quantity = quantity;
    return this;
  }

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

  public BigDecimal getQuantity() {
    return quantity;
  }



  public void setQuantity(BigDecimal quantity) {
    this.quantity = quantity;
  }


  public WalletOperation 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 WalletOperation 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 WalletOperation amountTax(BigDecimal amountTax) {
    
    this.amountTax = amountTax;
    return this;
  }

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

  public BigDecimal getAmountTax() {
    return amountTax;
  }



  public void setAmountTax(BigDecimal amountTax) {
    this.amountTax = amountTax;
  }


  public WalletOperation counter(CounterInstance counter) {
    
    this.counter = counter;
    return this;
  }

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

  public CounterInstance getCounter() {
    return counter;
  }



  public void setCounter(CounterInstance counter) {
    this.counter = counter;
  }


  public WalletOperation aggregatedServiceInstance(ServiceInstance aggregatedServiceInstance) {
    
    this.aggregatedServiceInstance = aggregatedServiceInstance;
    return this;
  }

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

  public ServiceInstance getAggregatedServiceInstance() {
    return aggregatedServiceInstance;
  }



  public void setAggregatedServiceInstance(ServiceInstance aggregatedServiceInstance) {
    this.aggregatedServiceInstance = aggregatedServiceInstance;
  }


  public WalletOperation parameter1(String parameter1) {
    
    this.parameter1 = parameter1;
    return this;
  }

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

  public String getParameter1() {
    return parameter1;
  }



  public void setParameter1(String parameter1) {
    this.parameter1 = parameter1;
  }


  public WalletOperation parameter2(String parameter2) {
    
    this.parameter2 = parameter2;
    return this;
  }

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

  public String getParameter2() {
    return parameter2;
  }



  public void setParameter2(String parameter2) {
    this.parameter2 = parameter2;
  }


  public WalletOperation parameter3(String parameter3) {
    
    this.parameter3 = parameter3;
    return this;
  }

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

  public String getParameter3() {
    return parameter3;
  }



  public void setParameter3(String parameter3) {
    this.parameter3 = parameter3;
  }


  public WalletOperation parameterExtra(String parameterExtra) {
    
    this.parameterExtra = parameterExtra;
    return this;
  }

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

  public String getParameterExtra() {
    return parameterExtra;
  }



  public void setParameterExtra(String parameterExtra) {
    this.parameterExtra = parameterExtra;
  }


  public WalletOperation startDate(OffsetDateTime startDate) {
    
    this.startDate = startDate;
    return this;
  }

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

  public OffsetDateTime getStartDate() {
    return startDate;
  }



  public void setStartDate(OffsetDateTime startDate) {
    this.startDate = startDate;
  }


  public WalletOperation endDate(OffsetDateTime endDate) {
    
    this.endDate = endDate;
    return this;
  }

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

  public OffsetDateTime getEndDate() {
    return endDate;
  }



  public void setEndDate(OffsetDateTime endDate) {
    this.endDate = endDate;
  }


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

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

  public OffsetDateTime getSubscriptionDate() {
    return subscriptionDate;
  }



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


  public WalletOperation offerCode(String offerCode) {
    
    this.offerCode = offerCode;
    return this;
  }

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

  public String getOfferCode() {
    return offerCode;
  }



  public void setOfferCode(String offerCode) {
    this.offerCode = offerCode;
  }


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

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

  public PricePlanMatrix getPriceplan() {
    return priceplan;
  }



  public void setPriceplan(PricePlanMatrix priceplan) {
    this.priceplan = priceplan;
  }


  public WalletOperation reratedWalletOperation(WalletOperation reratedWalletOperation) {
    
    this.reratedWalletOperation = reratedWalletOperation;
    return this;
  }

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

  public WalletOperation getReratedWalletOperation() {
    return reratedWalletOperation;
  }



  public void setReratedWalletOperation(WalletOperation reratedWalletOperation) {
    this.reratedWalletOperation = reratedWalletOperation;
  }


  public WalletOperation inputUnitDescription(String inputUnitDescription) {
    
    this.inputUnitDescription = inputUnitDescription;
    return this;
  }

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

  public String getInputUnitDescription() {
    return inputUnitDescription;
  }



  public void setInputUnitDescription(String inputUnitDescription) {
    this.inputUnitDescription = inputUnitDescription;
  }


  public WalletOperation ratingUnitDescription(String ratingUnitDescription) {
    
    this.ratingUnitDescription = ratingUnitDescription;
    return this;
  }

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

  public String getRatingUnitDescription() {
    return ratingUnitDescription;
  }



  public void setRatingUnitDescription(String ratingUnitDescription) {
    this.ratingUnitDescription = ratingUnitDescription;
  }


  public WalletOperation inputQuantity(BigDecimal inputQuantity) {
    
    this.inputQuantity = inputQuantity;
    return this;
  }

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

  public BigDecimal getInputQuantity() {
    return inputQuantity;
  }



  public void setInputQuantity(BigDecimal inputQuantity) {
    this.inputQuantity = inputQuantity;
  }


  public WalletOperation edr(EDR edr) {
    
    this.edr = edr;
    return this;
  }

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

  public EDR getEdr() {
    return edr;
  }



  public void setEdr(EDR edr) {
    this.edr = edr;
  }


  public WalletOperation 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 WalletOperation rawAmountWithoutTax(BigDecimal rawAmountWithoutTax) {
    
    this.rawAmountWithoutTax = rawAmountWithoutTax;
    return this;
  }

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

  public BigDecimal getRawAmountWithoutTax() {
    return rawAmountWithoutTax;
  }



  public void setRawAmountWithoutTax(BigDecimal rawAmountWithoutTax) {
    this.rawAmountWithoutTax = rawAmountWithoutTax;
  }


  public WalletOperation rawAmountWithTax(BigDecimal rawAmountWithTax) {
    
    this.rawAmountWithTax = rawAmountWithTax;
    return this;
  }

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

  public BigDecimal getRawAmountWithTax() {
    return rawAmountWithTax;
  }



  public void setRawAmountWithTax(BigDecimal rawAmountWithTax) {
    this.rawAmountWithTax = rawAmountWithTax;
  }


  public WalletOperation 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 WalletOperation subscription(Subscription subscription) {
    
    this.subscription = subscription;
    return this;
  }

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

  public Subscription getSubscription() {
    return subscription;
  }



  public void setSubscription(Subscription subscription) {
    this.subscription = subscription;
  }


  public WalletOperation ratedTransaction(RatedTransaction ratedTransaction) {
    
    this.ratedTransaction = ratedTransaction;
    return this;
  }

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

  public RatedTransaction getRatedTransaction() {
    return ratedTransaction;
  }



  public void setRatedTransaction(RatedTransaction ratedTransaction) {
    this.ratedTransaction = ratedTransaction;
  }


  public WalletOperation serviceInstance(ServiceInstance serviceInstance) {
    
    this.serviceInstance = serviceInstance;
    return this;
  }

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

  public ServiceInstance getServiceInstance() {
    return serviceInstance;
  }



  public void setServiceInstance(ServiceInstance serviceInstance) {
    this.serviceInstance = serviceInstance;
  }


  public WalletOperation billingAccount(BillingAccount billingAccount) {
    
    this.billingAccount = billingAccount;
    return this;
  }

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

  public BillingAccount getBillingAccount() {
    return billingAccount;
  }



  public void setBillingAccount(BillingAccount billingAccount) {
    this.billingAccount = billingAccount;
  }


  public WalletOperation billingRun(BillingRun billingRun) {
    
    this.billingRun = billingRun;
    return this;
  }

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

  public BillingRun getBillingRun() {
    return billingRun;
  }



  public void setBillingRun(BillingRun billingRun) {
    this.billingRun = billingRun;
  }


  public WalletOperation 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 WalletOperation unratedClone(WalletOperation unratedClone) {
    
    this.unratedClone = unratedClone;
    return this;
  }

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

  public WalletOperation getUnratedClone() {
    return unratedClone;
  }



  public void setUnratedClone(WalletOperation unratedClone) {
    this.unratedClone = unratedClone;
  }


  public WalletOperation 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 WalletOperation 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 WalletOperation 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 WalletOperation 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 WalletOperation 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 WalletOperation 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 WalletOperation _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;
    }
    WalletOperation walletOperation = (WalletOperation) o;
    return Objects.equals(this.id, walletOperation.id) &&
        Objects.equals(this.version, walletOperation.version) &&
        Objects.equals(this.auditable, walletOperation.auditable) &&
        Objects.equals(this.historized, walletOperation.historized) &&
        Objects.equals(this.notified, walletOperation.notified) &&
        Objects.equals(this.auditableFields, walletOperation.auditableFields) &&
        Objects.equals(this.code, walletOperation.code) &&
        Objects.equals(this.description, walletOperation.description) &&
        Objects.equals(this.appendGeneratedCode, walletOperation.appendGeneratedCode) &&
        Objects.equals(this.wallet, walletOperation.wallet) &&
        Objects.equals(this.operationDate, walletOperation.operationDate) &&
        Objects.equals(this.invoicingDate, walletOperation.invoicingDate) &&
        Objects.equals(this.type, walletOperation.type) &&
        Objects.equals(this.chargeInstance, walletOperation.chargeInstance) &&
        Objects.equals(this.currency, walletOperation.currency) &&
        Objects.equals(this.tax, walletOperation.tax) &&
        Objects.equals(this.taxPercent, walletOperation.taxPercent) &&
        Objects.equals(this.unitAmountWithoutTax, walletOperation.unitAmountWithoutTax) &&
        Objects.equals(this.unitAmountWithTax, walletOperation.unitAmountWithTax) &&
        Objects.equals(this.unitAmountTax, walletOperation.unitAmountTax) &&
        Objects.equals(this.quantity, walletOperation.quantity) &&
        Objects.equals(this.amountWithoutTax, walletOperation.amountWithoutTax) &&
        Objects.equals(this.amountWithTax, walletOperation.amountWithTax) &&
        Objects.equals(this.amountTax, walletOperation.amountTax) &&
        Objects.equals(this.counter, walletOperation.counter) &&
        Objects.equals(this.aggregatedServiceInstance, walletOperation.aggregatedServiceInstance) &&
        Objects.equals(this.parameter1, walletOperation.parameter1) &&
        Objects.equals(this.parameter2, walletOperation.parameter2) &&
        Objects.equals(this.parameter3, walletOperation.parameter3) &&
        Objects.equals(this.parameterExtra, walletOperation.parameterExtra) &&
        Objects.equals(this.startDate, walletOperation.startDate) &&
        Objects.equals(this.endDate, walletOperation.endDate) &&
        Objects.equals(this.subscriptionDate, walletOperation.subscriptionDate) &&
        Objects.equals(this.offerCode, walletOperation.offerCode) &&
        Objects.equals(this.status, walletOperation.status) &&
        Objects.equals(this.seller, walletOperation.seller) &&
        Objects.equals(this.priceplan, walletOperation.priceplan) &&
        Objects.equals(this.reratedWalletOperation, walletOperation.reratedWalletOperation) &&
        Objects.equals(this.inputUnitDescription, walletOperation.inputUnitDescription) &&
        Objects.equals(this.ratingUnitDescription, walletOperation.ratingUnitDescription) &&
        Objects.equals(this.inputQuantity, walletOperation.inputQuantity) &&
        Objects.equals(this.edr, walletOperation.edr) &&
        Objects.equals(this.orderNumber, walletOperation.orderNumber) &&
        Objects.equals(this.rawAmountWithoutTax, walletOperation.rawAmountWithoutTax) &&
        Objects.equals(this.rawAmountWithTax, walletOperation.rawAmountWithTax) &&
        Objects.equals(this.invoiceSubCategory, walletOperation.invoiceSubCategory) &&
        Objects.equals(this.subscription, walletOperation.subscription) &&
        Objects.equals(this.ratedTransaction, walletOperation.ratedTransaction) &&
        Objects.equals(this.serviceInstance, walletOperation.serviceInstance) &&
        Objects.equals(this.billingAccount, walletOperation.billingAccount) &&
        Objects.equals(this.billingRun, walletOperation.billingRun) &&
        Objects.equals(this.offerTemplate, walletOperation.offerTemplate) &&
        Objects.equals(this.unratedClone, walletOperation.unratedClone) &&
        Objects.equals(this.descriptionOrCode, walletOperation.descriptionOrCode) &&
        Objects.equals(this.descriptionAndCode, walletOperation.descriptionAndCode) &&
        Objects.equals(this.referenceCode, walletOperation.referenceCode) &&
        Objects.equals(this.referenceDescription, walletOperation.referenceDescription) &&
        Objects.equals(this.codeChanged, walletOperation.codeChanged) &&
        Objects.equals(this.parentEntity, walletOperation.parentEntity) &&
        Objects.equals(this._transient, walletOperation._transient);
  }

  @Override
  public int hashCode() {
    return Objects.hash(id, version, auditable, historized, notified, auditableFields, code, description, appendGeneratedCode, wallet, operationDate, invoicingDate, type, chargeInstance, currency, tax, taxPercent, unitAmountWithoutTax, unitAmountWithTax, unitAmountTax, quantity, amountWithoutTax, amountWithTax, amountTax, counter, aggregatedServiceInstance, parameter1, parameter2, parameter3, parameterExtra, startDate, endDate, subscriptionDate, offerCode, status, seller, priceplan, reratedWalletOperation, inputUnitDescription, ratingUnitDescription, inputQuantity, edr, orderNumber, rawAmountWithoutTax, rawAmountWithTax, invoiceSubCategory, subscription, ratedTransaction, serviceInstance, billingAccount, billingRun, offerTemplate, unratedClone, descriptionOrCode, descriptionAndCode, referenceCode, referenceDescription, codeChanged, parentEntity, _transient);
  }


  @Override
  public String toString() {
    StringBuilder sb = new StringBuilder();
    sb.append("class WalletOperation {\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("    wallet: ").append(toIndentedString(wallet)).append("\n");
    sb.append("    operationDate: ").append(toIndentedString(operationDate)).append("\n");
    sb.append("    invoicingDate: ").append(toIndentedString(invoicingDate)).append("\n");
    sb.append("    type: ").append(toIndentedString(type)).append("\n");
    sb.append("    chargeInstance: ").append(toIndentedString(chargeInstance)).append("\n");
    sb.append("    currency: ").append(toIndentedString(currency)).append("\n");
    sb.append("    tax: ").append(toIndentedString(tax)).append("\n");
    sb.append("    taxPercent: ").append(toIndentedString(taxPercent)).append("\n");
    sb.append("    unitAmountWithoutTax: ").append(toIndentedString(unitAmountWithoutTax)).append("\n");
    sb.append("    unitAmountWithTax: ").append(toIndentedString(unitAmountWithTax)).append("\n");
    sb.append("    unitAmountTax: ").append(toIndentedString(unitAmountTax)).append("\n");
    sb.append("    quantity: ").append(toIndentedString(quantity)).append("\n");
    sb.append("    amountWithoutTax: ").append(toIndentedString(amountWithoutTax)).append("\n");
    sb.append("    amountWithTax: ").append(toIndentedString(amountWithTax)).append("\n");
    sb.append("    amountTax: ").append(toIndentedString(amountTax)).append("\n");
    sb.append("    counter: ").append(toIndentedString(counter)).append("\n");
    sb.append("    aggregatedServiceInstance: ").append(toIndentedString(aggregatedServiceInstance)).append("\n");
    sb.append("    parameter1: ").append(toIndentedString(parameter1)).append("\n");
    sb.append("    parameter2: ").append(toIndentedString(parameter2)).append("\n");
    sb.append("    parameter3: ").append(toIndentedString(parameter3)).append("\n");
    sb.append("    parameterExtra: ").append(toIndentedString(parameterExtra)).append("\n");
    sb.append("    startDate: ").append(toIndentedString(startDate)).append("\n");
    sb.append("    endDate: ").append(toIndentedString(endDate)).append("\n");
    sb.append("    subscriptionDate: ").append(toIndentedString(subscriptionDate)).append("\n");
    sb.append("    offerCode: ").append(toIndentedString(offerCode)).append("\n");
    sb.append("    status: ").append(toIndentedString(status)).append("\n");
    sb.append("    seller: ").append(toIndentedString(seller)).append("\n");
    sb.append("    priceplan: ").append(toIndentedString(priceplan)).append("\n");
    sb.append("    reratedWalletOperation: ").append(toIndentedString(reratedWalletOperation)).append("\n");
    sb.append("    inputUnitDescription: ").append(toIndentedString(inputUnitDescription)).append("\n");
    sb.append("    ratingUnitDescription: ").append(toIndentedString(ratingUnitDescription)).append("\n");
    sb.append("    inputQuantity: ").append(toIndentedString(inputQuantity)).append("\n");
    sb.append("    edr: ").append(toIndentedString(edr)).append("\n");
    sb.append("    orderNumber: ").append(toIndentedString(orderNumber)).append("\n");
    sb.append("    rawAmountWithoutTax: ").append(toIndentedString(rawAmountWithoutTax)).append("\n");
    sb.append("    rawAmountWithTax: ").append(toIndentedString(rawAmountWithTax)).append("\n");
    sb.append("    invoiceSubCategory: ").append(toIndentedString(invoiceSubCategory)).append("\n");
    sb.append("    subscription: ").append(toIndentedString(subscription)).append("\n");
    sb.append("    ratedTransaction: ").append(toIndentedString(ratedTransaction)).append("\n");
    sb.append("    serviceInstance: ").append(toIndentedString(serviceInstance)).append("\n");
    sb.append("    billingAccount: ").append(toIndentedString(billingAccount)).append("\n");
    sb.append("    billingRun: ").append(toIndentedString(billingRun)).append("\n");
    sb.append("    offerTemplate: ").append(toIndentedString(offerTemplate)).append("\n");
    sb.append("    unratedClone: ").append(toIndentedString(unratedClone)).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    ");
  }

}

