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


package org.openapitools.client.model;

import java.util.Objects;
import java.util.Arrays;
import com.google.gson.TypeAdapter;
import com.google.gson.annotations.JsonAdapter;
import com.google.gson.annotations.SerializedName;
import com.google.gson.stream.JsonReader;
import com.google.gson.stream.JsonWriter;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import java.io.IOException;
import java.math.BigDecimal;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import org.openapitools.client.model.Auditable;
import org.openapitools.client.model.AuditableFieldHistory;
import org.openapitools.client.model.BillingAccount;
import org.openapitools.client.model.BillingCycle;
import org.openapitools.client.model.BillingRunList;
import org.openapitools.client.model.Country;
import org.openapitools.client.model.Currency;
import org.openapitools.client.model.CustomFieldValues;
import org.openapitools.client.model.ICustomFieldEntity;
import org.openapitools.client.model.Invoice;
import org.openapitools.client.model.Language;
import org.openapitools.client.model.PostInvoicingReportsDTO;
import org.openapitools.client.model.PreInvoicingReportsDTO;
import org.openapitools.client.model.RatedTransaction;
import org.openapitools.client.model.RejectedBillingAccount;
import org.threeten.bp.OffsetDateTime;

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

  /**
   * Gets or Sets status
   */
  @JsonAdapter(StatusEnum.Adapter.class)
  public enum StatusEnum {
    NEW("NEW"),
    
    PREINVOICED("PREINVOICED"),
    
    PREVALIDATED("PREVALIDATED"),
    
    CANCELED("CANCELED"),
    
    POSTINVOICED("POSTINVOICED"),
    
    POSTVALIDATED("POSTVALIDATED"),
    
    VALIDATED("VALIDATED"),
    
    CANCELLING("CANCELLING");

    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_STATUS_DATE = "statusDate";
  @SerializedName(SERIALIZED_NAME_STATUS_DATE)
  private OffsetDateTime statusDate;

  public static final String SERIALIZED_NAME_BILLING_CYCLE = "billingCycle";
  @SerializedName(SERIALIZED_NAME_BILLING_CYCLE)
  private BillingCycle billingCycle;

  public static final String SERIALIZED_NAME_BILLING_ACCOUNT_NUMBER = "billingAccountNumber";
  @SerializedName(SERIALIZED_NAME_BILLING_ACCOUNT_NUMBER)
  private Integer billingAccountNumber;

  public static final String SERIALIZED_NAME_BILLABLE_BILLING_ACOUNT_NUMBER = "billableBillingAcountNumber";
  @SerializedName(SERIALIZED_NAME_BILLABLE_BILLING_ACOUNT_NUMBER)
  private Integer billableBillingAcountNumber;

  public static final String SERIALIZED_NAME_PRODUCIBLE_INVOICE_NUMBER = "producibleInvoiceNumber";
  @SerializedName(SERIALIZED_NAME_PRODUCIBLE_INVOICE_NUMBER)
  private Integer producibleInvoiceNumber;

  public static final String SERIALIZED_NAME_PRODUCIBLE_AMOUNT_WITHOUT_TAX = "producibleAmountWithoutTax";
  @SerializedName(SERIALIZED_NAME_PRODUCIBLE_AMOUNT_WITHOUT_TAX)
  private BigDecimal producibleAmountWithoutTax;

  public static final String SERIALIZED_NAME_PRODUCIBLE_AMOUNT_TAX = "producibleAmountTax";
  @SerializedName(SERIALIZED_NAME_PRODUCIBLE_AMOUNT_TAX)
  private BigDecimal producibleAmountTax;

  public static final String SERIALIZED_NAME_PRODUCIBLE_AMOUNT_WITH_TAX = "producibleAmountWithTax";
  @SerializedName(SERIALIZED_NAME_PRODUCIBLE_AMOUNT_WITH_TAX)
  private BigDecimal producibleAmountWithTax;

  public static final String SERIALIZED_NAME_PR_AMOUNT_WITHOUT_TAX = "prAmountWithoutTax";
  @SerializedName(SERIALIZED_NAME_PR_AMOUNT_WITHOUT_TAX)
  private BigDecimal prAmountWithoutTax;

  public static final String SERIALIZED_NAME_PR_AMOUNT_WITH_TAX = "prAmountWithTax";
  @SerializedName(SERIALIZED_NAME_PR_AMOUNT_WITH_TAX)
  private BigDecimal prAmountWithTax;

  public static final String SERIALIZED_NAME_PR_AMOUNT_TAX = "prAmountTax";
  @SerializedName(SERIALIZED_NAME_PR_AMOUNT_TAX)
  private BigDecimal prAmountTax;

  public static final String SERIALIZED_NAME_INVOICES = "invoices";
  @SerializedName(SERIALIZED_NAME_INVOICES)
  private List<Invoice> invoices = null;

  public static final String SERIALIZED_NAME_BILLING_RUN_LISTS = "billingRunLists";
  @SerializedName(SERIALIZED_NAME_BILLING_RUN_LISTS)
  private List<BillingRunList> billingRunLists = null;

  public static final String SERIALIZED_NAME_BILLABLE_BILLING_ACCOUNTS = "billableBillingAccounts";
  @SerializedName(SERIALIZED_NAME_BILLABLE_BILLING_ACCOUNTS)
  private List<BillingAccount> billableBillingAccounts = null;

  public static final String SERIALIZED_NAME_RATED_TRANSACTIONS = "ratedTransactions";
  @SerializedName(SERIALIZED_NAME_RATED_TRANSACTIONS)
  private List<RatedTransaction> ratedTransactions = null;

  /**
   * Gets or Sets processType
   */
  @JsonAdapter(ProcessTypeEnum.Adapter.class)
  public enum ProcessTypeEnum {
    AUTOMATIC("AUTOMATIC"),
    
    MANUAL("MANUAL"),
    
    FULL_AUTOMATIC("FULL_AUTOMATIC");

    private String value;

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

    public String getValue() {
      return value;
    }

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

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

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

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

  public static final String SERIALIZED_NAME_PROCESS_TYPE = "processType";
  @SerializedName(SERIALIZED_NAME_PROCESS_TYPE)
  private ProcessTypeEnum processType;

  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_INVOICE_DATE = "invoiceDate";
  @SerializedName(SERIALIZED_NAME_INVOICE_DATE)
  private OffsetDateTime invoiceDate;

  public static final String SERIALIZED_NAME_LAST_TRANSACTION_DATE = "lastTransactionDate";
  @SerializedName(SERIALIZED_NAME_LAST_TRANSACTION_DATE)
  private OffsetDateTime lastTransactionDate;

  public static final String SERIALIZED_NAME_REJECTION_REASON = "rejectionReason";
  @SerializedName(SERIALIZED_NAME_REJECTION_REASON)
  private String rejectionReason;

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

  public static final String SERIALIZED_NAME_COUNTRY = "country";
  @SerializedName(SERIALIZED_NAME_COUNTRY)
  private Country country;

  public static final String SERIALIZED_NAME_LANGUAGE = "language";
  @SerializedName(SERIALIZED_NAME_LANGUAGE)
  private Language language;

  public static final String SERIALIZED_NAME_SELECTED_BILLING_ACCOUNTS = "selectedBillingAccounts";
  @SerializedName(SERIALIZED_NAME_SELECTED_BILLING_ACCOUNTS)
  private String selectedBillingAccounts;

  public static final String SERIALIZED_NAME_PRE_INVOICING_REPORTS = "preInvoicingReports";
  @SerializedName(SERIALIZED_NAME_PRE_INVOICING_REPORTS)
  private PreInvoicingReportsDTO preInvoicingReports;

  public static final String SERIALIZED_NAME_POST_INVOICING_REPORTS = "postInvoicingReports";
  @SerializedName(SERIALIZED_NAME_POST_INVOICING_REPORTS)
  private PostInvoicingReportsDTO postInvoicingReports;

  public static final String SERIALIZED_NAME_REJECTED_BILLING_ACCOUNTS = "rejectedBillingAccounts";
  @SerializedName(SERIALIZED_NAME_REJECTED_BILLING_ACCOUNTS)
  private List<RejectedBillingAccount> rejectedBillingAccounts = null;

  public static final String SERIALIZED_NAME_CF_VALUES = "cfValues";
  @SerializedName(SERIALIZED_NAME_CF_VALUES)
  private CustomFieldValues cfValues;

  public static final String SERIALIZED_NAME_CF_ACCUMULATED_VALUES = "cfAccumulatedValues";
  @SerializedName(SERIALIZED_NAME_CF_ACCUMULATED_VALUES)
  private CustomFieldValues cfAccumulatedValues;

  public static final String SERIALIZED_NAME_UUID = "uuid";
  @SerializedName(SERIALIZED_NAME_UUID)
  private String uuid;

  /**
   * Gets or Sets referenceDate
   */
  @JsonAdapter(ReferenceDateEnum.Adapter.class)
  public enum ReferenceDateEnum {
    TODAY("TODAY"),
    
    NEXT_INVOICE_DATE("NEXT_INVOICE_DATE"),
    
    LAST_TRANSACTION_DATE("LAST_TRANSACTION_DATE"),
    
    END_DATE("END_DATE");

    private String value;

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

    public String getValue() {
      return value;
    }

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

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

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

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

  public static final String SERIALIZED_NAME_REFERENCE_DATE = "referenceDate";
  @SerializedName(SERIALIZED_NAME_REFERENCE_DATE)
  private ReferenceDateEnum referenceDate;

  public static final String SERIALIZED_NAME_INVOICE_NUMBER = "invoiceNumber";
  @SerializedName(SERIALIZED_NAME_INVOICE_NUMBER)
  private Integer invoiceNumber;

  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_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_PARENT_C_F_ENTITIES = "parentCFEntities";
  @SerializedName(SERIALIZED_NAME_PARENT_C_F_ENTITIES)
  private List<ICustomFieldEntity> parentCFEntities = null;

  public static final String SERIALIZED_NAME_CF_VALUES_NULL_SAFE = "cfValuesNullSafe";
  @SerializedName(SERIALIZED_NAME_CF_VALUES_NULL_SAFE)
  private CustomFieldValues cfValuesNullSafe;

  public static final String SERIALIZED_NAME_CF_VALUES_AS_VALUES = "cfValuesAsValues";
  @SerializedName(SERIALIZED_NAME_CF_VALUES_AS_VALUES)
  private Map<String, Object> cfValuesAsValues = null;

  public static final String SERIALIZED_NAME_CF_ACCUMULATED_VALUES_NULL_SAFE = "cfAccumulatedValuesNullSafe";
  @SerializedName(SERIALIZED_NAME_CF_ACCUMULATED_VALUES_NULL_SAFE)
  private CustomFieldValues cfAccumulatedValuesNullSafe;

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


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

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

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

  public OffsetDateTime getProcessDate() {
    return processDate;
  }



  public void setProcessDate(OffsetDateTime processDate) {
    this.processDate = processDate;
  }


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

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

  public OffsetDateTime getStatusDate() {
    return statusDate;
  }



  public void setStatusDate(OffsetDateTime statusDate) {
    this.statusDate = statusDate;
  }


  public BillingRun billingCycle(BillingCycle billingCycle) {
    
    this.billingCycle = billingCycle;
    return this;
  }

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

  public BillingCycle getBillingCycle() {
    return billingCycle;
  }



  public void setBillingCycle(BillingCycle billingCycle) {
    this.billingCycle = billingCycle;
  }


  public BillingRun billingAccountNumber(Integer billingAccountNumber) {
    
    this.billingAccountNumber = billingAccountNumber;
    return this;
  }

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

  public Integer getBillingAccountNumber() {
    return billingAccountNumber;
  }



  public void setBillingAccountNumber(Integer billingAccountNumber) {
    this.billingAccountNumber = billingAccountNumber;
  }


  public BillingRun billableBillingAcountNumber(Integer billableBillingAcountNumber) {
    
    this.billableBillingAcountNumber = billableBillingAcountNumber;
    return this;
  }

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

  public Integer getBillableBillingAcountNumber() {
    return billableBillingAcountNumber;
  }



  public void setBillableBillingAcountNumber(Integer billableBillingAcountNumber) {
    this.billableBillingAcountNumber = billableBillingAcountNumber;
  }


  public BillingRun producibleInvoiceNumber(Integer producibleInvoiceNumber) {
    
    this.producibleInvoiceNumber = producibleInvoiceNumber;
    return this;
  }

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

  public Integer getProducibleInvoiceNumber() {
    return producibleInvoiceNumber;
  }



  public void setProducibleInvoiceNumber(Integer producibleInvoiceNumber) {
    this.producibleInvoiceNumber = producibleInvoiceNumber;
  }


  public BillingRun producibleAmountWithoutTax(BigDecimal producibleAmountWithoutTax) {
    
    this.producibleAmountWithoutTax = producibleAmountWithoutTax;
    return this;
  }

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

  public BigDecimal getProducibleAmountWithoutTax() {
    return producibleAmountWithoutTax;
  }



  public void setProducibleAmountWithoutTax(BigDecimal producibleAmountWithoutTax) {
    this.producibleAmountWithoutTax = producibleAmountWithoutTax;
  }


  public BillingRun producibleAmountTax(BigDecimal producibleAmountTax) {
    
    this.producibleAmountTax = producibleAmountTax;
    return this;
  }

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

  public BigDecimal getProducibleAmountTax() {
    return producibleAmountTax;
  }



  public void setProducibleAmountTax(BigDecimal producibleAmountTax) {
    this.producibleAmountTax = producibleAmountTax;
  }


  public BillingRun producibleAmountWithTax(BigDecimal producibleAmountWithTax) {
    
    this.producibleAmountWithTax = producibleAmountWithTax;
    return this;
  }

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

  public BigDecimal getProducibleAmountWithTax() {
    return producibleAmountWithTax;
  }



  public void setProducibleAmountWithTax(BigDecimal producibleAmountWithTax) {
    this.producibleAmountWithTax = producibleAmountWithTax;
  }


  public BillingRun prAmountWithoutTax(BigDecimal prAmountWithoutTax) {
    
    this.prAmountWithoutTax = prAmountWithoutTax;
    return this;
  }

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

  public BigDecimal getPrAmountWithoutTax() {
    return prAmountWithoutTax;
  }



  public void setPrAmountWithoutTax(BigDecimal prAmountWithoutTax) {
    this.prAmountWithoutTax = prAmountWithoutTax;
  }


  public BillingRun prAmountWithTax(BigDecimal prAmountWithTax) {
    
    this.prAmountWithTax = prAmountWithTax;
    return this;
  }

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

  public BigDecimal getPrAmountWithTax() {
    return prAmountWithTax;
  }



  public void setPrAmountWithTax(BigDecimal prAmountWithTax) {
    this.prAmountWithTax = prAmountWithTax;
  }


  public BillingRun prAmountTax(BigDecimal prAmountTax) {
    
    this.prAmountTax = prAmountTax;
    return this;
  }

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

  public BigDecimal getPrAmountTax() {
    return prAmountTax;
  }



  public void setPrAmountTax(BigDecimal prAmountTax) {
    this.prAmountTax = prAmountTax;
  }


  public BillingRun invoices(List<Invoice> invoices) {
    
    this.invoices = invoices;
    return this;
  }

  public BillingRun addInvoicesItem(Invoice invoicesItem) {
    if (this.invoices == null) {
      this.invoices = new ArrayList<Invoice>();
    }
    this.invoices.add(invoicesItem);
    return this;
  }

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

  public List<Invoice> getInvoices() {
    return invoices;
  }



  public void setInvoices(List<Invoice> invoices) {
    this.invoices = invoices;
  }


  public BillingRun billingRunLists(List<BillingRunList> billingRunLists) {
    
    this.billingRunLists = billingRunLists;
    return this;
  }

  public BillingRun addBillingRunListsItem(BillingRunList billingRunListsItem) {
    if (this.billingRunLists == null) {
      this.billingRunLists = new ArrayList<BillingRunList>();
    }
    this.billingRunLists.add(billingRunListsItem);
    return this;
  }

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

  public List<BillingRunList> getBillingRunLists() {
    return billingRunLists;
  }



  public void setBillingRunLists(List<BillingRunList> billingRunLists) {
    this.billingRunLists = billingRunLists;
  }


  public BillingRun billableBillingAccounts(List<BillingAccount> billableBillingAccounts) {
    
    this.billableBillingAccounts = billableBillingAccounts;
    return this;
  }

  public BillingRun addBillableBillingAccountsItem(BillingAccount billableBillingAccountsItem) {
    if (this.billableBillingAccounts == null) {
      this.billableBillingAccounts = new ArrayList<BillingAccount>();
    }
    this.billableBillingAccounts.add(billableBillingAccountsItem);
    return this;
  }

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

  public List<BillingAccount> getBillableBillingAccounts() {
    return billableBillingAccounts;
  }



  public void setBillableBillingAccounts(List<BillingAccount> billableBillingAccounts) {
    this.billableBillingAccounts = billableBillingAccounts;
  }


  public BillingRun ratedTransactions(List<RatedTransaction> ratedTransactions) {
    
    this.ratedTransactions = ratedTransactions;
    return this;
  }

  public BillingRun addRatedTransactionsItem(RatedTransaction ratedTransactionsItem) {
    if (this.ratedTransactions == null) {
      this.ratedTransactions = new ArrayList<RatedTransaction>();
    }
    this.ratedTransactions.add(ratedTransactionsItem);
    return this;
  }

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

  public List<RatedTransaction> getRatedTransactions() {
    return ratedTransactions;
  }



  public void setRatedTransactions(List<RatedTransaction> ratedTransactions) {
    this.ratedTransactions = ratedTransactions;
  }


  public BillingRun processType(ProcessTypeEnum processType) {
    
    this.processType = processType;
    return this;
  }

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

  public ProcessTypeEnum getProcessType() {
    return processType;
  }



  public void setProcessType(ProcessTypeEnum processType) {
    this.processType = processType;
  }


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

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

  public OffsetDateTime getInvoiceDate() {
    return invoiceDate;
  }



  public void setInvoiceDate(OffsetDateTime invoiceDate) {
    this.invoiceDate = invoiceDate;
  }


  public BillingRun lastTransactionDate(OffsetDateTime lastTransactionDate) {
    
    this.lastTransactionDate = lastTransactionDate;
    return this;
  }

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

  public OffsetDateTime getLastTransactionDate() {
    return lastTransactionDate;
  }



  public void setLastTransactionDate(OffsetDateTime lastTransactionDate) {
    this.lastTransactionDate = lastTransactionDate;
  }


  public BillingRun rejectionReason(String rejectionReason) {
    
    this.rejectionReason = rejectionReason;
    return this;
  }

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

  public String getRejectionReason() {
    return rejectionReason;
  }



  public void setRejectionReason(String rejectionReason) {
    this.rejectionReason = rejectionReason;
  }


  public BillingRun 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 BillingRun country(Country country) {
    
    this.country = country;
    return this;
  }

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

  public Country getCountry() {
    return country;
  }



  public void setCountry(Country country) {
    this.country = country;
  }


  public BillingRun language(Language language) {
    
    this.language = language;
    return this;
  }

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

  public Language getLanguage() {
    return language;
  }



  public void setLanguage(Language language) {
    this.language = language;
  }


  public BillingRun selectedBillingAccounts(String selectedBillingAccounts) {
    
    this.selectedBillingAccounts = selectedBillingAccounts;
    return this;
  }

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

  public String getSelectedBillingAccounts() {
    return selectedBillingAccounts;
  }



  public void setSelectedBillingAccounts(String selectedBillingAccounts) {
    this.selectedBillingAccounts = selectedBillingAccounts;
  }


  public BillingRun preInvoicingReports(PreInvoicingReportsDTO preInvoicingReports) {
    
    this.preInvoicingReports = preInvoicingReports;
    return this;
  }

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

  public PreInvoicingReportsDTO getPreInvoicingReports() {
    return preInvoicingReports;
  }



  public void setPreInvoicingReports(PreInvoicingReportsDTO preInvoicingReports) {
    this.preInvoicingReports = preInvoicingReports;
  }


  public BillingRun postInvoicingReports(PostInvoicingReportsDTO postInvoicingReports) {
    
    this.postInvoicingReports = postInvoicingReports;
    return this;
  }

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

  public PostInvoicingReportsDTO getPostInvoicingReports() {
    return postInvoicingReports;
  }



  public void setPostInvoicingReports(PostInvoicingReportsDTO postInvoicingReports) {
    this.postInvoicingReports = postInvoicingReports;
  }


  public BillingRun rejectedBillingAccounts(List<RejectedBillingAccount> rejectedBillingAccounts) {
    
    this.rejectedBillingAccounts = rejectedBillingAccounts;
    return this;
  }

  public BillingRun addRejectedBillingAccountsItem(RejectedBillingAccount rejectedBillingAccountsItem) {
    if (this.rejectedBillingAccounts == null) {
      this.rejectedBillingAccounts = new ArrayList<RejectedBillingAccount>();
    }
    this.rejectedBillingAccounts.add(rejectedBillingAccountsItem);
    return this;
  }

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

  public List<RejectedBillingAccount> getRejectedBillingAccounts() {
    return rejectedBillingAccounts;
  }



  public void setRejectedBillingAccounts(List<RejectedBillingAccount> rejectedBillingAccounts) {
    this.rejectedBillingAccounts = rejectedBillingAccounts;
  }


  public BillingRun cfValues(CustomFieldValues cfValues) {
    
    this.cfValues = cfValues;
    return this;
  }

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

  public CustomFieldValues getCfValues() {
    return cfValues;
  }



  public void setCfValues(CustomFieldValues cfValues) {
    this.cfValues = cfValues;
  }


  public BillingRun cfAccumulatedValues(CustomFieldValues cfAccumulatedValues) {
    
    this.cfAccumulatedValues = cfAccumulatedValues;
    return this;
  }

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

  public CustomFieldValues getCfAccumulatedValues() {
    return cfAccumulatedValues;
  }



  public void setCfAccumulatedValues(CustomFieldValues cfAccumulatedValues) {
    this.cfAccumulatedValues = cfAccumulatedValues;
  }


  public BillingRun uuid(String uuid) {
    
    this.uuid = uuid;
    return this;
  }

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

  public String getUuid() {
    return uuid;
  }



  public void setUuid(String uuid) {
    this.uuid = uuid;
  }


  public BillingRun referenceDate(ReferenceDateEnum referenceDate) {
    
    this.referenceDate = referenceDate;
    return this;
  }

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

  public ReferenceDateEnum getReferenceDate() {
    return referenceDate;
  }



  public void setReferenceDate(ReferenceDateEnum referenceDate) {
    this.referenceDate = referenceDate;
  }


  public BillingRun invoiceNumber(Integer invoiceNumber) {
    
    this.invoiceNumber = invoiceNumber;
    return this;
  }

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

  public Integer getInvoiceNumber() {
    return invoiceNumber;
  }



  public void setInvoiceNumber(Integer invoiceNumber) {
    this.invoiceNumber = invoiceNumber;
  }


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

  public BillingRun addParentCFEntitiesItem(ICustomFieldEntity parentCFEntitiesItem) {
    if (this.parentCFEntities == null) {
      this.parentCFEntities = new ArrayList<ICustomFieldEntity>();
    }
    this.parentCFEntities.add(parentCFEntitiesItem);
    return this;
  }

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

  public List<ICustomFieldEntity> getParentCFEntities() {
    return parentCFEntities;
  }



  public void setParentCFEntities(List<ICustomFieldEntity> parentCFEntities) {
    this.parentCFEntities = parentCFEntities;
  }


  public BillingRun cfValuesNullSafe(CustomFieldValues cfValuesNullSafe) {
    
    this.cfValuesNullSafe = cfValuesNullSafe;
    return this;
  }

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

  public CustomFieldValues getCfValuesNullSafe() {
    return cfValuesNullSafe;
  }



  public void setCfValuesNullSafe(CustomFieldValues cfValuesNullSafe) {
    this.cfValuesNullSafe = cfValuesNullSafe;
  }


  public BillingRun cfValuesAsValues(Map<String, Object> cfValuesAsValues) {
    
    this.cfValuesAsValues = cfValuesAsValues;
    return this;
  }

  public BillingRun putCfValuesAsValuesItem(String key, Object cfValuesAsValuesItem) {
    if (this.cfValuesAsValues == null) {
      this.cfValuesAsValues = new HashMap<String, Object>();
    }
    this.cfValuesAsValues.put(key, cfValuesAsValuesItem);
    return this;
  }

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

  public Map<String, Object> getCfValuesAsValues() {
    return cfValuesAsValues;
  }



  public void setCfValuesAsValues(Map<String, Object> cfValuesAsValues) {
    this.cfValuesAsValues = cfValuesAsValues;
  }


  public BillingRun cfAccumulatedValuesNullSafe(CustomFieldValues cfAccumulatedValuesNullSafe) {
    
    this.cfAccumulatedValuesNullSafe = cfAccumulatedValuesNullSafe;
    return this;
  }

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

  public CustomFieldValues getCfAccumulatedValuesNullSafe() {
    return cfAccumulatedValuesNullSafe;
  }



  public void setCfAccumulatedValuesNullSafe(CustomFieldValues cfAccumulatedValuesNullSafe) {
    this.cfAccumulatedValuesNullSafe = cfAccumulatedValuesNullSafe;
  }


  public BillingRun _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;
    }
    BillingRun billingRun = (BillingRun) o;
    return Objects.equals(this.id, billingRun.id) &&
        Objects.equals(this.version, billingRun.version) &&
        Objects.equals(this.auditable, billingRun.auditable) &&
        Objects.equals(this.historized, billingRun.historized) &&
        Objects.equals(this.notified, billingRun.notified) &&
        Objects.equals(this.auditableFields, billingRun.auditableFields) &&
        Objects.equals(this.processDate, billingRun.processDate) &&
        Objects.equals(this.status, billingRun.status) &&
        Objects.equals(this.statusDate, billingRun.statusDate) &&
        Objects.equals(this.billingCycle, billingRun.billingCycle) &&
        Objects.equals(this.billingAccountNumber, billingRun.billingAccountNumber) &&
        Objects.equals(this.billableBillingAcountNumber, billingRun.billableBillingAcountNumber) &&
        Objects.equals(this.producibleInvoiceNumber, billingRun.producibleInvoiceNumber) &&
        Objects.equals(this.producibleAmountWithoutTax, billingRun.producibleAmountWithoutTax) &&
        Objects.equals(this.producibleAmountTax, billingRun.producibleAmountTax) &&
        Objects.equals(this.producibleAmountWithTax, billingRun.producibleAmountWithTax) &&
        Objects.equals(this.prAmountWithoutTax, billingRun.prAmountWithoutTax) &&
        Objects.equals(this.prAmountWithTax, billingRun.prAmountWithTax) &&
        Objects.equals(this.prAmountTax, billingRun.prAmountTax) &&
        Objects.equals(this.invoices, billingRun.invoices) &&
        Objects.equals(this.billingRunLists, billingRun.billingRunLists) &&
        Objects.equals(this.billableBillingAccounts, billingRun.billableBillingAccounts) &&
        Objects.equals(this.ratedTransactions, billingRun.ratedTransactions) &&
        Objects.equals(this.processType, billingRun.processType) &&
        Objects.equals(this.startDate, billingRun.startDate) &&
        Objects.equals(this.endDate, billingRun.endDate) &&
        Objects.equals(this.invoiceDate, billingRun.invoiceDate) &&
        Objects.equals(this.lastTransactionDate, billingRun.lastTransactionDate) &&
        Objects.equals(this.rejectionReason, billingRun.rejectionReason) &&
        Objects.equals(this.currency, billingRun.currency) &&
        Objects.equals(this.country, billingRun.country) &&
        Objects.equals(this.language, billingRun.language) &&
        Objects.equals(this.selectedBillingAccounts, billingRun.selectedBillingAccounts) &&
        Objects.equals(this.preInvoicingReports, billingRun.preInvoicingReports) &&
        Objects.equals(this.postInvoicingReports, billingRun.postInvoicingReports) &&
        Objects.equals(this.rejectedBillingAccounts, billingRun.rejectedBillingAccounts) &&
        Objects.equals(this.cfValues, billingRun.cfValues) &&
        Objects.equals(this.cfAccumulatedValues, billingRun.cfAccumulatedValues) &&
        Objects.equals(this.uuid, billingRun.uuid) &&
        Objects.equals(this.referenceDate, billingRun.referenceDate) &&
        Objects.equals(this.invoiceNumber, billingRun.invoiceNumber) &&
        Objects.equals(this.descriptionOrCode, billingRun.descriptionOrCode) &&
        Objects.equals(this.referenceCode, billingRun.referenceCode) &&
        Objects.equals(this.referenceDescription, billingRun.referenceDescription) &&
        Objects.equals(this.parentCFEntities, billingRun.parentCFEntities) &&
        Objects.equals(this.cfValuesNullSafe, billingRun.cfValuesNullSafe) &&
        Objects.equals(this.cfValuesAsValues, billingRun.cfValuesAsValues) &&
        Objects.equals(this.cfAccumulatedValuesNullSafe, billingRun.cfAccumulatedValuesNullSafe) &&
        Objects.equals(this._transient, billingRun._transient);
  }

  @Override
  public int hashCode() {
    return Objects.hash(id, version, auditable, historized, notified, auditableFields, processDate, status, statusDate, billingCycle, billingAccountNumber, billableBillingAcountNumber, producibleInvoiceNumber, producibleAmountWithoutTax, producibleAmountTax, producibleAmountWithTax, prAmountWithoutTax, prAmountWithTax, prAmountTax, invoices, billingRunLists, billableBillingAccounts, ratedTransactions, processType, startDate, endDate, invoiceDate, lastTransactionDate, rejectionReason, currency, country, language, selectedBillingAccounts, preInvoicingReports, postInvoicingReports, rejectedBillingAccounts, cfValues, cfAccumulatedValues, uuid, referenceDate, invoiceNumber, descriptionOrCode, referenceCode, referenceDescription, parentCFEntities, cfValuesNullSafe, cfValuesAsValues, cfAccumulatedValuesNullSafe, _transient);
  }


  @Override
  public String toString() {
    StringBuilder sb = new StringBuilder();
    sb.append("class BillingRun {\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("    processDate: ").append(toIndentedString(processDate)).append("\n");
    sb.append("    status: ").append(toIndentedString(status)).append("\n");
    sb.append("    statusDate: ").append(toIndentedString(statusDate)).append("\n");
    sb.append("    billingCycle: ").append(toIndentedString(billingCycle)).append("\n");
    sb.append("    billingAccountNumber: ").append(toIndentedString(billingAccountNumber)).append("\n");
    sb.append("    billableBillingAcountNumber: ").append(toIndentedString(billableBillingAcountNumber)).append("\n");
    sb.append("    producibleInvoiceNumber: ").append(toIndentedString(producibleInvoiceNumber)).append("\n");
    sb.append("    producibleAmountWithoutTax: ").append(toIndentedString(producibleAmountWithoutTax)).append("\n");
    sb.append("    producibleAmountTax: ").append(toIndentedString(producibleAmountTax)).append("\n");
    sb.append("    producibleAmountWithTax: ").append(toIndentedString(producibleAmountWithTax)).append("\n");
    sb.append("    prAmountWithoutTax: ").append(toIndentedString(prAmountWithoutTax)).append("\n");
    sb.append("    prAmountWithTax: ").append(toIndentedString(prAmountWithTax)).append("\n");
    sb.append("    prAmountTax: ").append(toIndentedString(prAmountTax)).append("\n");
    sb.append("    invoices: ").append(toIndentedString(invoices)).append("\n");
    sb.append("    billingRunLists: ").append(toIndentedString(billingRunLists)).append("\n");
    sb.append("    billableBillingAccounts: ").append(toIndentedString(billableBillingAccounts)).append("\n");
    sb.append("    ratedTransactions: ").append(toIndentedString(ratedTransactions)).append("\n");
    sb.append("    processType: ").append(toIndentedString(processType)).append("\n");
    sb.append("    startDate: ").append(toIndentedString(startDate)).append("\n");
    sb.append("    endDate: ").append(toIndentedString(endDate)).append("\n");
    sb.append("    invoiceDate: ").append(toIndentedString(invoiceDate)).append("\n");
    sb.append("    lastTransactionDate: ").append(toIndentedString(lastTransactionDate)).append("\n");
    sb.append("    rejectionReason: ").append(toIndentedString(rejectionReason)).append("\n");
    sb.append("    currency: ").append(toIndentedString(currency)).append("\n");
    sb.append("    country: ").append(toIndentedString(country)).append("\n");
    sb.append("    language: ").append(toIndentedString(language)).append("\n");
    sb.append("    selectedBillingAccounts: ").append(toIndentedString(selectedBillingAccounts)).append("\n");
    sb.append("    preInvoicingReports: ").append(toIndentedString(preInvoicingReports)).append("\n");
    sb.append("    postInvoicingReports: ").append(toIndentedString(postInvoicingReports)).append("\n");
    sb.append("    rejectedBillingAccounts: ").append(toIndentedString(rejectedBillingAccounts)).append("\n");
    sb.append("    cfValues: ").append(toIndentedString(cfValues)).append("\n");
    sb.append("    cfAccumulatedValues: ").append(toIndentedString(cfAccumulatedValues)).append("\n");
    sb.append("    uuid: ").append(toIndentedString(uuid)).append("\n");
    sb.append("    referenceDate: ").append(toIndentedString(referenceDate)).append("\n");
    sb.append("    invoiceNumber: ").append(toIndentedString(invoiceNumber)).append("\n");
    sb.append("    descriptionOrCode: ").append(toIndentedString(descriptionOrCode)).append("\n");
    sb.append("    referenceCode: ").append(toIndentedString(referenceCode)).append("\n");
    sb.append("    referenceDescription: ").append(toIndentedString(referenceDescription)).append("\n");
    sb.append("    parentCFEntities: ").append(toIndentedString(parentCFEntities)).append("\n");
    sb.append("    cfValuesNullSafe: ").append(toIndentedString(cfValuesNullSafe)).append("\n");
    sb.append("    cfValuesAsValues: ").append(toIndentedString(cfValuesAsValues)).append("\n");
    sb.append("    cfAccumulatedValuesNullSafe: ").append(toIndentedString(cfAccumulatedValuesNullSafe)).append("\n");
    sb.append("    _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    ");
  }

}

