/*
 * 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 org.openapitools.client.model.WoRatedTransactionDto;
import org.threeten.bp.OffsetDateTime;

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

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

  public static final String SERIALIZED_NAME_DESCRIPTION = "description";
  @SerializedName(SERIALIZED_NAME_DESCRIPTION)
  private String description;

  public static final String SERIALIZED_NAME_UPDATED_CODE = "updatedCode";
  @SerializedName(SERIALIZED_NAME_UPDATED_CODE)
  private String updatedCode;

  public static final String SERIALIZED_NAME_USER_ACCOUNT = "userAccount";
  @SerializedName(SERIALIZED_NAME_USER_ACCOUNT)
  private String userAccount;

  public static final String SERIALIZED_NAME_SUBSCRIPTION = "subscription";
  @SerializedName(SERIALIZED_NAME_SUBSCRIPTION)
  private String subscription;

  public static final String SERIALIZED_NAME_WALLET_TEMPLATE = "walletTemplate";
  @SerializedName(SERIALIZED_NAME_WALLET_TEMPLATE)
  private String walletTemplate;

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

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

  public static final String SERIALIZED_NAME_CHARGE_INSTANCE_ID = "chargeInstanceId";
  @SerializedName(SERIALIZED_NAME_CHARGE_INSTANCE_ID)
  private Long chargeInstanceId;

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

  /**
   * 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;

  /**
   * 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_RATING_UNIT_DESCRIPTION = "ratingUnitDescription";
  @SerializedName(SERIALIZED_NAME_RATING_UNIT_DESCRIPTION)
  private String ratingUnitDescription;

  public static final String SERIALIZED_NAME_TAX_CODE = "taxCode";
  @SerializedName(SERIALIZED_NAME_TAX_CODE)
  private String taxCode;

  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_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_ORDER_NUMBER = "orderNumber";
  @SerializedName(SERIALIZED_NAME_ORDER_NUMBER)
  private String orderNumber;

  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_OPERATION_DATE = "operationDate";
  @SerializedName(SERIALIZED_NAME_OPERATION_DATE)
  private OffsetDateTime operationDate;

  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;

  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_RATED_TRANSACTION = "ratedTransaction";
  @SerializedName(SERIALIZED_NAME_RATED_TRANSACTION)
  private WoRatedTransactionDto ratedTransaction;

  public static final String SERIALIZED_NAME_WALLET_ID = "walletId";
  @SerializedName(SERIALIZED_NAME_WALLET_ID)
  private Long walletId;


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

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

  public String getCode() {
    return code;
  }



  public void setCode(String code) {
    this.code = code;
  }


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

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

  public String getUpdatedCode() {
    return updatedCode;
  }



  public void setUpdatedCode(String updatedCode) {
    this.updatedCode = updatedCode;
  }


  public WalletOperationDto userAccount(String userAccount) {
    
    this.userAccount = userAccount;
    return this;
  }

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

  public String getUserAccount() {
    return userAccount;
  }



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


  public WalletOperationDto subscription(String subscription) {
    
    this.subscription = subscription;
    return this;
  }

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

  public String getSubscription() {
    return subscription;
  }



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


  public WalletOperationDto walletTemplate(String walletTemplate) {
    
    this.walletTemplate = walletTemplate;
    return this;
  }

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

  public String getWalletTemplate() {
    return walletTemplate;
  }



  public void setWalletTemplate(String walletTemplate) {
    this.walletTemplate = walletTemplate;
  }


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

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

  public String getSeller() {
    return seller;
  }



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


  public WalletOperationDto chargeInstance(String chargeInstance) {
    
    this.chargeInstance = chargeInstance;
    return this;
  }

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

  public String getChargeInstance() {
    return chargeInstance;
  }



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


  public WalletOperationDto chargeInstanceId(Long chargeInstanceId) {
    
    this.chargeInstanceId = chargeInstanceId;
    return this;
  }

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

  public Long getChargeInstanceId() {
    return chargeInstanceId;
  }



  public void setChargeInstanceId(Long chargeInstanceId) {
    this.chargeInstanceId = chargeInstanceId;
  }


  public WalletOperationDto currency(String currency) {
    
    this.currency = currency;
    return this;
  }

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

  public String getCurrency() {
    return currency;
  }



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


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

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

  public String getTaxCode() {
    return taxCode;
  }



  public void setTaxCode(String taxCode) {
    this.taxCode = taxCode;
  }


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

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

  public BigDecimal getTaxPercent() {
    return taxPercent;
  }



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


  public WalletOperationDto 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 WalletOperationDto 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 WalletOperationDto 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 WalletOperationDto 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 WalletOperationDto 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 WalletOperationDto 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 WalletOperationDto 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 WalletOperationDto 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 WalletOperationDto 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 WalletOperationDto 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 WalletOperationDto 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 WalletOperationDto 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 WalletOperationDto 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 WalletOperationDto 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 WalletOperationDto 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 WalletOperationDto 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 WalletOperationDto 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 WalletOperationDto 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 WalletOperationDto 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 WalletOperationDto ratedTransaction(WoRatedTransactionDto ratedTransaction) {
    
    this.ratedTransaction = ratedTransaction;
    return this;
  }

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

  public WoRatedTransactionDto getRatedTransaction() {
    return ratedTransaction;
  }



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


  public WalletOperationDto walletId(Long walletId) {
    
    this.walletId = walletId;
    return this;
  }

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

  public Long getWalletId() {
    return walletId;
  }



  public void setWalletId(Long walletId) {
    this.walletId = walletId;
  }


  @Override
  public boolean equals(java.lang.Object o) {
    if (this == o) {
      return true;
    }
    if (o == null || getClass() != o.getClass()) {
      return false;
    }
    WalletOperationDto walletOperationDto = (WalletOperationDto) o;
    return Objects.equals(this.id, walletOperationDto.id) &&
        Objects.equals(this.code, walletOperationDto.code) &&
        Objects.equals(this.description, walletOperationDto.description) &&
        Objects.equals(this.updatedCode, walletOperationDto.updatedCode) &&
        Objects.equals(this.userAccount, walletOperationDto.userAccount) &&
        Objects.equals(this.subscription, walletOperationDto.subscription) &&
        Objects.equals(this.walletTemplate, walletOperationDto.walletTemplate) &&
        Objects.equals(this.seller, walletOperationDto.seller) &&
        Objects.equals(this.chargeInstance, walletOperationDto.chargeInstance) &&
        Objects.equals(this.chargeInstanceId, walletOperationDto.chargeInstanceId) &&
        Objects.equals(this.currency, walletOperationDto.currency) &&
        Objects.equals(this.type, walletOperationDto.type) &&
        Objects.equals(this.status, walletOperationDto.status) &&
        Objects.equals(this.ratingUnitDescription, walletOperationDto.ratingUnitDescription) &&
        Objects.equals(this.taxCode, walletOperationDto.taxCode) &&
        Objects.equals(this.taxPercent, walletOperationDto.taxPercent) &&
        Objects.equals(this.unitAmountWithoutTax, walletOperationDto.unitAmountWithoutTax) &&
        Objects.equals(this.unitAmountWithTax, walletOperationDto.unitAmountWithTax) &&
        Objects.equals(this.unitAmountTax, walletOperationDto.unitAmountTax) &&
        Objects.equals(this.quantity, walletOperationDto.quantity) &&
        Objects.equals(this.amountWithoutTax, walletOperationDto.amountWithoutTax) &&
        Objects.equals(this.amountWithTax, walletOperationDto.amountWithTax) &&
        Objects.equals(this.amountTax, walletOperationDto.amountTax) &&
        Objects.equals(this.parameter1, walletOperationDto.parameter1) &&
        Objects.equals(this.parameter2, walletOperationDto.parameter2) &&
        Objects.equals(this.parameter3, walletOperationDto.parameter3) &&
        Objects.equals(this.parameterExtra, walletOperationDto.parameterExtra) &&
        Objects.equals(this.orderNumber, walletOperationDto.orderNumber) &&
        Objects.equals(this.startDate, walletOperationDto.startDate) &&
        Objects.equals(this.endDate, walletOperationDto.endDate) &&
        Objects.equals(this.operationDate, walletOperationDto.operationDate) &&
        Objects.equals(this.subscriptionDate, walletOperationDto.subscriptionDate) &&
        Objects.equals(this.offerCode, walletOperationDto.offerCode) &&
        Objects.equals(this.rawAmountWithoutTax, walletOperationDto.rawAmountWithoutTax) &&
        Objects.equals(this.rawAmountWithTax, walletOperationDto.rawAmountWithTax) &&
        Objects.equals(this.ratedTransaction, walletOperationDto.ratedTransaction) &&
        Objects.equals(this.walletId, walletOperationDto.walletId);
  }

  @Override
  public int hashCode() {
    return Objects.hash(id, code, description, updatedCode, userAccount, subscription, walletTemplate, seller, chargeInstance, chargeInstanceId, currency, type, status, ratingUnitDescription, taxCode, taxPercent, unitAmountWithoutTax, unitAmountWithTax, unitAmountTax, quantity, amountWithoutTax, amountWithTax, amountTax, parameter1, parameter2, parameter3, parameterExtra, orderNumber, startDate, endDate, operationDate, subscriptionDate, offerCode, rawAmountWithoutTax, rawAmountWithTax, ratedTransaction, walletId);
  }


  @Override
  public String toString() {
    StringBuilder sb = new StringBuilder();
    sb.append("class WalletOperationDto {\n");
    sb.append("    id: ").append(toIndentedString(id)).append("\n");
    sb.append("    code: ").append(toIndentedString(code)).append("\n");
    sb.append("    description: ").append(toIndentedString(description)).append("\n");
    sb.append("    updatedCode: ").append(toIndentedString(updatedCode)).append("\n");
    sb.append("    userAccount: ").append(toIndentedString(userAccount)).append("\n");
    sb.append("    subscription: ").append(toIndentedString(subscription)).append("\n");
    sb.append("    walletTemplate: ").append(toIndentedString(walletTemplate)).append("\n");
    sb.append("    seller: ").append(toIndentedString(seller)).append("\n");
    sb.append("    chargeInstance: ").append(toIndentedString(chargeInstance)).append("\n");
    sb.append("    chargeInstanceId: ").append(toIndentedString(chargeInstanceId)).append("\n");
    sb.append("    currency: ").append(toIndentedString(currency)).append("\n");
    sb.append("    type: ").append(toIndentedString(type)).append("\n");
    sb.append("    status: ").append(toIndentedString(status)).append("\n");
    sb.append("    ratingUnitDescription: ").append(toIndentedString(ratingUnitDescription)).append("\n");
    sb.append("    taxCode: ").append(toIndentedString(taxCode)).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("    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("    orderNumber: ").append(toIndentedString(orderNumber)).append("\n");
    sb.append("    startDate: ").append(toIndentedString(startDate)).append("\n");
    sb.append("    endDate: ").append(toIndentedString(endDate)).append("\n");
    sb.append("    operationDate: ").append(toIndentedString(operationDate)).append("\n");
    sb.append("    subscriptionDate: ").append(toIndentedString(subscriptionDate)).append("\n");
    sb.append("    offerCode: ").append(toIndentedString(offerCode)).append("\n");
    sb.append("    rawAmountWithoutTax: ").append(toIndentedString(rawAmountWithoutTax)).append("\n");
    sb.append("    rawAmountWithTax: ").append(toIndentedString(rawAmountWithTax)).append("\n");
    sb.append("    ratedTransaction: ").append(toIndentedString(ratedTransaction)).append("\n");
    sb.append("    walletId: ").append(toIndentedString(walletId)).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    ");
  }

}

