/*
 * 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.BillingAccount;
import org.openapitools.client.model.BillingRun;
import org.openapitools.client.model.CategoryInvoiceAgregate;
import org.openapitools.client.model.ChargeInstance;
import org.openapitools.client.model.EDR;
import org.openapitools.client.model.Invoice;
import org.openapitools.client.model.InvoiceSubCategory;
import org.openapitools.client.model.OfferTemplate;
import org.openapitools.client.model.PricePlanMatrix;
import org.openapitools.client.model.Seller;
import org.openapitools.client.model.ServiceInstance;
import org.openapitools.client.model.SubCategoryInvoiceAgregate;
import org.openapitools.client.model.Subscription;
import org.openapitools.client.model.Tax;
import org.openapitools.client.model.TaxInvoiceAgregate;
import org.openapitools.client.model.UserAccount;
import org.openapitools.client.model.WalletInstance;
import org.openapitools.client.model.WalletOperation;
import org.threeten.bp.OffsetDateTime;

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

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

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

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

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

  public static final String SERIALIZED_NAME_USAGE_DATE = "usageDate";
  @SerializedName(SERIALIZED_NAME_USAGE_DATE)
  private OffsetDateTime usageDate;

  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_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_UNITY_DESCRIPTION = "unityDescription";
  @SerializedName(SERIALIZED_NAME_UNITY_DESCRIPTION)
  private String unityDescription;

  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_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_INVOICE = "invoice";
  @SerializedName(SERIALIZED_NAME_INVOICE)
  private Invoice invoice;

  public static final String SERIALIZED_NAME_INVOICE_AGREGATE_F = "invoiceAgregateF";
  @SerializedName(SERIALIZED_NAME_INVOICE_AGREGATE_F)
  private SubCategoryInvoiceAgregate invoiceAgregateF;

  public static final String SERIALIZED_NAME_INVOICE_AGREGATE_R = "invoiceAgregateR";
  @SerializedName(SERIALIZED_NAME_INVOICE_AGREGATE_R)
  private CategoryInvoiceAgregate invoiceAgregateR;

  public static final String SERIALIZED_NAME_INVOICE_AGREGATE_T = "invoiceAgregateT";
  @SerializedName(SERIALIZED_NAME_INVOICE_AGREGATE_T)
  private TaxInvoiceAgregate invoiceAgregateT;

  /**
   * Gets or Sets status
   */
  @JsonAdapter(StatusEnum.Adapter.class)
  public enum StatusEnum {
    OPEN("OPEN"),
    
    BILLED("BILLED"),
    
    REJECTED("REJECTED"),
    
    RERATED("RERATED"),
    
    CANCELED("CANCELED");

    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_DO_NOT_TRIGGER_INVOICING = "doNotTriggerInvoicing";
  @SerializedName(SERIALIZED_NAME_DO_NOT_TRIGGER_INVOICING)
  private Boolean doNotTriggerInvoicing;

  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_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_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_PRICEPLAN = "priceplan";
  @SerializedName(SERIALIZED_NAME_PRICEPLAN)
  private PricePlanMatrix priceplan;

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

  public static final String SERIALIZED_NAME_ADJUSTED_RATED_TX = "adjustedRatedTx";
  @SerializedName(SERIALIZED_NAME_ADJUSTED_RATED_TX)
  private RatedTransaction adjustedRatedTx;

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

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

  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_WALLET_OPERATIONS = "walletOperations";
  @SerializedName(SERIALIZED_NAME_WALLET_OPERATIONS)
  private List<WalletOperation> walletOperations = null;

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

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

  public static final String SERIALIZED_NAME_TAX_OVERRIDEN = "taxOverriden";
  @SerializedName(SERIALIZED_NAME_TAX_OVERRIDEN)
  private Boolean taxOverriden;

  public static final String SERIALIZED_NAME_TAX_RECALCULATED = "taxRecalculated";
  @SerializedName(SERIALIZED_NAME_TAX_RECALCULATED)
  private Boolean taxRecalculated;

  public static final String SERIALIZED_NAME_PREPAID = "prepaid";
  @SerializedName(SERIALIZED_NAME_PREPAID)
  private Boolean prepaid;

  public static final String SERIALIZED_NAME_WALLET_OPERATION_ID = "walletOperationId";
  @SerializedName(SERIALIZED_NAME_WALLET_OPERATION_ID)
  private Long walletOperationId;

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


  public RatedTransaction 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 RatedTransaction 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 RatedTransaction 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 RatedTransaction billingAccount(BillingAccount billingAccount) {
    
    this.billingAccount = billingAccount;
    return this;
  }

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

  public BillingAccount getBillingAccount() {
    return billingAccount;
  }



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


  public RatedTransaction userAccount(UserAccount userAccount) {
    
    this.userAccount = userAccount;
    return this;
  }

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

  public UserAccount getUserAccount() {
    return userAccount;
  }



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


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

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

  public Seller getSeller() {
    return seller;
  }



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


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

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

  public OffsetDateTime getUsageDate() {
    return usageDate;
  }



  public void setUsageDate(OffsetDateTime usageDate) {
    this.usageDate = usageDate;
  }


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

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

  public String getUnityDescription() {
    return unityDescription;
  }



  public void setUnityDescription(String unityDescription) {
    this.unityDescription = unityDescription;
  }


  public RatedTransaction 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 RatedTransaction 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 RatedTransaction 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 RatedTransaction 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 RatedTransaction 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 RatedTransaction 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 RatedTransaction 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 RatedTransaction 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 RatedTransaction invoice(Invoice invoice) {
    
    this.invoice = invoice;
    return this;
  }

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

  public Invoice getInvoice() {
    return invoice;
  }



  public void setInvoice(Invoice invoice) {
    this.invoice = invoice;
  }


  public RatedTransaction invoiceAgregateF(SubCategoryInvoiceAgregate invoiceAgregateF) {
    
    this.invoiceAgregateF = invoiceAgregateF;
    return this;
  }

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

  public SubCategoryInvoiceAgregate getInvoiceAgregateF() {
    return invoiceAgregateF;
  }



  public void setInvoiceAgregateF(SubCategoryInvoiceAgregate invoiceAgregateF) {
    this.invoiceAgregateF = invoiceAgregateF;
  }


  public RatedTransaction invoiceAgregateR(CategoryInvoiceAgregate invoiceAgregateR) {
    
    this.invoiceAgregateR = invoiceAgregateR;
    return this;
  }

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

  public CategoryInvoiceAgregate getInvoiceAgregateR() {
    return invoiceAgregateR;
  }



  public void setInvoiceAgregateR(CategoryInvoiceAgregate invoiceAgregateR) {
    this.invoiceAgregateR = invoiceAgregateR;
  }


  public RatedTransaction invoiceAgregateT(TaxInvoiceAgregate invoiceAgregateT) {
    
    this.invoiceAgregateT = invoiceAgregateT;
    return this;
  }

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

  public TaxInvoiceAgregate getInvoiceAgregateT() {
    return invoiceAgregateT;
  }



  public void setInvoiceAgregateT(TaxInvoiceAgregate invoiceAgregateT) {
    this.invoiceAgregateT = invoiceAgregateT;
  }


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

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

  public Boolean getDoNotTriggerInvoicing() {
    return doNotTriggerInvoicing;
  }



  public void setDoNotTriggerInvoicing(Boolean doNotTriggerInvoicing) {
    this.doNotTriggerInvoicing = doNotTriggerInvoicing;
  }


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

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

  public RatedTransaction getAdjustedRatedTx() {
    return adjustedRatedTx;
  }



  public void setAdjustedRatedTx(RatedTransaction adjustedRatedTx) {
    this.adjustedRatedTx = adjustedRatedTx;
  }


  public RatedTransaction 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 RatedTransaction chargeInstance(ChargeInstance chargeInstance) {
    
    this.chargeInstance = chargeInstance;
    return this;
  }

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

  public ChargeInstance getChargeInstance() {
    return chargeInstance;
  }



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


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

  public RatedTransaction addWalletOperationsItem(WalletOperation walletOperationsItem) {
    if (this.walletOperations == null) {
      this.walletOperations = new ArrayList<WalletOperation>();
    }
    this.walletOperations.add(walletOperationsItem);
    return this;
  }

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

  public List<WalletOperation> getWalletOperations() {
    return walletOperations;
  }



  public void setWalletOperations(List<WalletOperation> walletOperations) {
    this.walletOperations = walletOperations;
  }


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

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

  public Boolean getTaxOverriden() {
    return taxOverriden;
  }



  public void setTaxOverriden(Boolean taxOverriden) {
    this.taxOverriden = taxOverriden;
  }


  public RatedTransaction taxRecalculated(Boolean taxRecalculated) {
    
    this.taxRecalculated = taxRecalculated;
    return this;
  }

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

  public Boolean getTaxRecalculated() {
    return taxRecalculated;
  }



  public void setTaxRecalculated(Boolean taxRecalculated) {
    this.taxRecalculated = taxRecalculated;
  }


  public RatedTransaction prepaid(Boolean prepaid) {
    
    this.prepaid = prepaid;
    return this;
  }

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

  public Boolean getPrepaid() {
    return prepaid;
  }



  public void setPrepaid(Boolean prepaid) {
    this.prepaid = prepaid;
  }


  public RatedTransaction walletOperationId(Long walletOperationId) {
    
    this.walletOperationId = walletOperationId;
    return this;
  }

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

  public Long getWalletOperationId() {
    return walletOperationId;
  }



  public void setWalletOperationId(Long walletOperationId) {
    this.walletOperationId = walletOperationId;
  }


  public RatedTransaction _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;
    }
    RatedTransaction ratedTransaction = (RatedTransaction) o;
    return Objects.equals(this.id, ratedTransaction.id) &&
        Objects.equals(this.version, ratedTransaction.version) &&
        Objects.equals(this.wallet, ratedTransaction.wallet) &&
        Objects.equals(this.billingAccount, ratedTransaction.billingAccount) &&
        Objects.equals(this.userAccount, ratedTransaction.userAccount) &&
        Objects.equals(this.seller, ratedTransaction.seller) &&
        Objects.equals(this.billingRun, ratedTransaction.billingRun) &&
        Objects.equals(this.usageDate, ratedTransaction.usageDate) &&
        Objects.equals(this.invoiceSubCategory, ratedTransaction.invoiceSubCategory) &&
        Objects.equals(this.code, ratedTransaction.code) &&
        Objects.equals(this.description, ratedTransaction.description) &&
        Objects.equals(this.unityDescription, ratedTransaction.unityDescription) &&
        Objects.equals(this.ratingUnitDescription, ratedTransaction.ratingUnitDescription) &&
        Objects.equals(this.unitAmountWithoutTax, ratedTransaction.unitAmountWithoutTax) &&
        Objects.equals(this.unitAmountWithTax, ratedTransaction.unitAmountWithTax) &&
        Objects.equals(this.unitAmountTax, ratedTransaction.unitAmountTax) &&
        Objects.equals(this.quantity, ratedTransaction.quantity) &&
        Objects.equals(this.amountWithoutTax, ratedTransaction.amountWithoutTax) &&
        Objects.equals(this.amountWithTax, ratedTransaction.amountWithTax) &&
        Objects.equals(this.amountTax, ratedTransaction.amountTax) &&
        Objects.equals(this.invoice, ratedTransaction.invoice) &&
        Objects.equals(this.invoiceAgregateF, ratedTransaction.invoiceAgregateF) &&
        Objects.equals(this.invoiceAgregateR, ratedTransaction.invoiceAgregateR) &&
        Objects.equals(this.invoiceAgregateT, ratedTransaction.invoiceAgregateT) &&
        Objects.equals(this.status, ratedTransaction.status) &&
        Objects.equals(this.doNotTriggerInvoicing, ratedTransaction.doNotTriggerInvoicing) &&
        Objects.equals(this.parameter1, ratedTransaction.parameter1) &&
        Objects.equals(this.parameter2, ratedTransaction.parameter2) &&
        Objects.equals(this.parameter3, ratedTransaction.parameter3) &&
        Objects.equals(this.startDate, ratedTransaction.startDate) &&
        Objects.equals(this.endDate, ratedTransaction.endDate) &&
        Objects.equals(this.parameterExtra, ratedTransaction.parameterExtra) &&
        Objects.equals(this.orderNumber, ratedTransaction.orderNumber) &&
        Objects.equals(this.priceplan, ratedTransaction.priceplan) &&
        Objects.equals(this.edr, ratedTransaction.edr) &&
        Objects.equals(this.adjustedRatedTx, ratedTransaction.adjustedRatedTx) &&
        Objects.equals(this.subscription, ratedTransaction.subscription) &&
        Objects.equals(this.chargeInstance, ratedTransaction.chargeInstance) &&
        Objects.equals(this.tax, ratedTransaction.tax) &&
        Objects.equals(this.taxPercent, ratedTransaction.taxPercent) &&
        Objects.equals(this.walletOperations, ratedTransaction.walletOperations) &&
        Objects.equals(this.offerTemplate, ratedTransaction.offerTemplate) &&
        Objects.equals(this.serviceInstance, ratedTransaction.serviceInstance) &&
        Objects.equals(this.taxOverriden, ratedTransaction.taxOverriden) &&
        Objects.equals(this.taxRecalculated, ratedTransaction.taxRecalculated) &&
        Objects.equals(this.prepaid, ratedTransaction.prepaid) &&
        Objects.equals(this.walletOperationId, ratedTransaction.walletOperationId) &&
        Objects.equals(this._transient, ratedTransaction._transient);
  }

  @Override
  public int hashCode() {
    return Objects.hash(id, version, wallet, billingAccount, userAccount, seller, billingRun, usageDate, invoiceSubCategory, code, description, unityDescription, ratingUnitDescription, unitAmountWithoutTax, unitAmountWithTax, unitAmountTax, quantity, amountWithoutTax, amountWithTax, amountTax, invoice, invoiceAgregateF, invoiceAgregateR, invoiceAgregateT, status, doNotTriggerInvoicing, parameter1, parameter2, parameter3, startDate, endDate, parameterExtra, orderNumber, priceplan, edr, adjustedRatedTx, subscription, chargeInstance, tax, taxPercent, walletOperations, offerTemplate, serviceInstance, taxOverriden, taxRecalculated, prepaid, walletOperationId, _transient);
  }


  @Override
  public String toString() {
    StringBuilder sb = new StringBuilder();
    sb.append("class RatedTransaction {\n");
    sb.append("    id: ").append(toIndentedString(id)).append("\n");
    sb.append("    version: ").append(toIndentedString(version)).append("\n");
    sb.append("    wallet: ").append(toIndentedString(wallet)).append("\n");
    sb.append("    billingAccount: ").append(toIndentedString(billingAccount)).append("\n");
    sb.append("    userAccount: ").append(toIndentedString(userAccount)).append("\n");
    sb.append("    seller: ").append(toIndentedString(seller)).append("\n");
    sb.append("    billingRun: ").append(toIndentedString(billingRun)).append("\n");
    sb.append("    usageDate: ").append(toIndentedString(usageDate)).append("\n");
    sb.append("    invoiceSubCategory: ").append(toIndentedString(invoiceSubCategory)).append("\n");
    sb.append("    code: ").append(toIndentedString(code)).append("\n");
    sb.append("    description: ").append(toIndentedString(description)).append("\n");
    sb.append("    unityDescription: ").append(toIndentedString(unityDescription)).append("\n");
    sb.append("    ratingUnitDescription: ").append(toIndentedString(ratingUnitDescription)).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("    invoice: ").append(toIndentedString(invoice)).append("\n");
    sb.append("    invoiceAgregateF: ").append(toIndentedString(invoiceAgregateF)).append("\n");
    sb.append("    invoiceAgregateR: ").append(toIndentedString(invoiceAgregateR)).append("\n");
    sb.append("    invoiceAgregateT: ").append(toIndentedString(invoiceAgregateT)).append("\n");
    sb.append("    status: ").append(toIndentedString(status)).append("\n");
    sb.append("    doNotTriggerInvoicing: ").append(toIndentedString(doNotTriggerInvoicing)).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("    startDate: ").append(toIndentedString(startDate)).append("\n");
    sb.append("    endDate: ").append(toIndentedString(endDate)).append("\n");
    sb.append("    parameterExtra: ").append(toIndentedString(parameterExtra)).append("\n");
    sb.append("    orderNumber: ").append(toIndentedString(orderNumber)).append("\n");
    sb.append("    priceplan: ").append(toIndentedString(priceplan)).append("\n");
    sb.append("    edr: ").append(toIndentedString(edr)).append("\n");
    sb.append("    adjustedRatedTx: ").append(toIndentedString(adjustedRatedTx)).append("\n");
    sb.append("    subscription: ").append(toIndentedString(subscription)).append("\n");
    sb.append("    chargeInstance: ").append(toIndentedString(chargeInstance)).append("\n");
    sb.append("    tax: ").append(toIndentedString(tax)).append("\n");
    sb.append("    taxPercent: ").append(toIndentedString(taxPercent)).append("\n");
    sb.append("    walletOperations: ").append(toIndentedString(walletOperations)).append("\n");
    sb.append("    offerTemplate: ").append(toIndentedString(offerTemplate)).append("\n");
    sb.append("    serviceInstance: ").append(toIndentedString(serviceInstance)).append("\n");
    sb.append("    taxOverriden: ").append(toIndentedString(taxOverriden)).append("\n");
    sb.append("    taxRecalculated: ").append(toIndentedString(taxRecalculated)).append("\n");
    sb.append("    prepaid: ").append(toIndentedString(prepaid)).append("\n");
    sb.append("    walletOperationId: ").append(toIndentedString(walletOperationId)).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    ");
  }

}

