/*
 * 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.CustomFieldsDto;
import org.openapitools.client.model.MatchingAmountsDto;
import org.openapitools.client.model.OtherCreditAndChargeDto;
import org.openapitools.client.model.RecordedInvoiceDto;
import org.openapitools.client.model.RejectedPaymentDto;
import org.threeten.bp.OffsetDateTime;

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

  public static final String SERIALIZED_NAME_DUE_DATE = "dueDate";
  @SerializedName(SERIALIZED_NAME_DUE_DATE)
  private OffsetDateTime dueDate;

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

  public static final String SERIALIZED_NAME_TRANSACTION_DATE = "transactionDate";
  @SerializedName(SERIALIZED_NAME_TRANSACTION_DATE)
  private OffsetDateTime transactionDate;

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

    private String value;

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

    public String getValue() {
      return value;
    }

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

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

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

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

  public static final String SERIALIZED_NAME_TRANSACTION_CATEGORY = "transactionCategory";
  @SerializedName(SERIALIZED_NAME_TRANSACTION_CATEGORY)
  private TransactionCategoryEnum transactionCategory;

  public static final String SERIALIZED_NAME_REFERENCE = "reference";
  @SerializedName(SERIALIZED_NAME_REFERENCE)
  private String reference;

  public static final String SERIALIZED_NAME_ACCOUNT_CODE = "accountCode";
  @SerializedName(SERIALIZED_NAME_ACCOUNT_CODE)
  private String accountCode;

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

  public static final String SERIALIZED_NAME_ACCOUNT_CODE_CLIENT_SIDE = "accountCodeClientSide";
  @SerializedName(SERIALIZED_NAME_ACCOUNT_CODE_CLIENT_SIDE)
  private String accountCodeClientSide;

  public static final String SERIALIZED_NAME_AMOUNT = "amount";
  @SerializedName(SERIALIZED_NAME_AMOUNT)
  private BigDecimal amount;

  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_TAX_AMOUNT = "taxAmount";
  @SerializedName(SERIALIZED_NAME_TAX_AMOUNT)
  private BigDecimal taxAmount;

  public static final String SERIALIZED_NAME_MATCHING_AMOUNT = "matchingAmount";
  @SerializedName(SERIALIZED_NAME_MATCHING_AMOUNT)
  private BigDecimal matchingAmount;

  public static final String SERIALIZED_NAME_UN_MATCHING_AMOUNT = "unMatchingAmount";
  @SerializedName(SERIALIZED_NAME_UN_MATCHING_AMOUNT)
  private BigDecimal unMatchingAmount;

  /**
   * Gets or Sets matchingStatus
   */
  @JsonAdapter(MatchingStatusEnum.Adapter.class)
  public enum MatchingStatusEnum {
    O("O"),
    
    L("L"),
    
    P("P"),
    
    C("C"),
    
    I("I"),
    
    R("R");

    private String value;

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

    public String getValue() {
      return value;
    }

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

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

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

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

  public static final String SERIALIZED_NAME_MATCHING_STATUS = "matchingStatus";
  @SerializedName(SERIALIZED_NAME_MATCHING_STATUS)
  private MatchingStatusEnum matchingStatus;

  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_CUSTOMER_ACCOUNT = "customerAccount";
  @SerializedName(SERIALIZED_NAME_CUSTOMER_ACCOUNT)
  private String customerAccount;

  public static final String SERIALIZED_NAME_EXCLUDED_FROM_DUNNING = "excludedFromDunning";
  @SerializedName(SERIALIZED_NAME_EXCLUDED_FROM_DUNNING)
  private Boolean excludedFromDunning;

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

  public static final String SERIALIZED_NAME_MATCHING_AMOUNTS = "matchingAmounts";
  @SerializedName(SERIALIZED_NAME_MATCHING_AMOUNTS)
  private MatchingAmountsDto matchingAmounts;

  public static final String SERIALIZED_NAME_OTHER_CREDIT_AND_CHARGE = "otherCreditAndCharge";
  @SerializedName(SERIALIZED_NAME_OTHER_CREDIT_AND_CHARGE)
  private OtherCreditAndChargeDto otherCreditAndCharge;

  public static final String SERIALIZED_NAME_RECORDED_INVOICE = "recordedInvoice";
  @SerializedName(SERIALIZED_NAME_RECORDED_INVOICE)
  private RecordedInvoiceDto recordedInvoice;

  public static final String SERIALIZED_NAME_REJECTED_PAYMENT = "rejectedPayment";
  @SerializedName(SERIALIZED_NAME_REJECTED_PAYMENT)
  private RejectedPaymentDto rejectedPayment;

  public static final String SERIALIZED_NAME_BANK_LOT = "bankLot";
  @SerializedName(SERIALIZED_NAME_BANK_LOT)
  private String bankLot;

  public static final String SERIALIZED_NAME_BANK_REFERENCE = "bankReference";
  @SerializedName(SERIALIZED_NAME_BANK_REFERENCE)
  private String bankReference;

  public static final String SERIALIZED_NAME_BANK_COLLECTION_DATE = "bankCollectionDate";
  @SerializedName(SERIALIZED_NAME_BANK_COLLECTION_DATE)
  private OffsetDateTime bankCollectionDate;

  public static final String SERIALIZED_NAME_DEPOSIT_DATE = "depositDate";
  @SerializedName(SERIALIZED_NAME_DEPOSIT_DATE)
  private OffsetDateTime depositDate;

  public static final String SERIALIZED_NAME_PAYMENT_METHOD = "paymentMethod";
  @SerializedName(SERIALIZED_NAME_PAYMENT_METHOD)
  private String paymentMethod;

  public static final String SERIALIZED_NAME_CUSTOM_FIELDS = "customFields";
  @SerializedName(SERIALIZED_NAME_CUSTOM_FIELDS)
  private CustomFieldsDto customFields;

  public static final String SERIALIZED_NAME_PAYMENT_INFO = "paymentInfo";
  @SerializedName(SERIALIZED_NAME_PAYMENT_INFO)
  private String paymentInfo;

  public static final String SERIALIZED_NAME_PAYMENT_INFO1 = "paymentInfo1";
  @SerializedName(SERIALIZED_NAME_PAYMENT_INFO1)
  private String paymentInfo1;

  public static final String SERIALIZED_NAME_PAYMENT_INFO2 = "paymentInfo2";
  @SerializedName(SERIALIZED_NAME_PAYMENT_INFO2)
  private String paymentInfo2;

  public static final String SERIALIZED_NAME_PAYMENT_INFO3 = "paymentInfo3";
  @SerializedName(SERIALIZED_NAME_PAYMENT_INFO3)
  private String paymentInfo3;

  public static final String SERIALIZED_NAME_PAYMENT_INFO4 = "paymentInfo4";
  @SerializedName(SERIALIZED_NAME_PAYMENT_INFO4)
  private String paymentInfo4;

  public static final String SERIALIZED_NAME_PAYMENT_INFO5 = "paymentInfo5";
  @SerializedName(SERIALIZED_NAME_PAYMENT_INFO5)
  private String paymentInfo5;

  public static final String SERIALIZED_NAME_PAYMENT_INFO6 = "paymentInfo6";
  @SerializedName(SERIALIZED_NAME_PAYMENT_INFO6)
  private String paymentInfo6;

  public static final String SERIALIZED_NAME_BILLING_ACCOUNT_NAME = "billingAccountName";
  @SerializedName(SERIALIZED_NAME_BILLING_ACCOUNT_NAME)
  private String billingAccountName;


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

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

  public OffsetDateTime getDueDate() {
    return dueDate;
  }



  public void setDueDate(OffsetDateTime dueDate) {
    this.dueDate = dueDate;
  }


  public AccountOperationDto type(String type) {
    
    this.type = type;
    return this;
  }

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

  public String getType() {
    return type;
  }



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


  public AccountOperationDto transactionDate(OffsetDateTime transactionDate) {
    
    this.transactionDate = transactionDate;
    return this;
  }

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

  public OffsetDateTime getTransactionDate() {
    return transactionDate;
  }



  public void setTransactionDate(OffsetDateTime transactionDate) {
    this.transactionDate = transactionDate;
  }


  public AccountOperationDto transactionCategory(TransactionCategoryEnum transactionCategory) {
    
    this.transactionCategory = transactionCategory;
    return this;
  }

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

  public TransactionCategoryEnum getTransactionCategory() {
    return transactionCategory;
  }



  public void setTransactionCategory(TransactionCategoryEnum transactionCategory) {
    this.transactionCategory = transactionCategory;
  }


  public AccountOperationDto reference(String reference) {
    
    this.reference = reference;
    return this;
  }

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

  public String getReference() {
    return reference;
  }



  public void setReference(String reference) {
    this.reference = reference;
  }


  public AccountOperationDto accountCode(String accountCode) {
    
    this.accountCode = accountCode;
    return this;
  }

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

  public String getAccountCode() {
    return accountCode;
  }



  public void setAccountCode(String accountCode) {
    this.accountCode = accountCode;
  }


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

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

  public String getAccountingCode() {
    return accountingCode;
  }



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


  public AccountOperationDto accountCodeClientSide(String accountCodeClientSide) {
    
    this.accountCodeClientSide = accountCodeClientSide;
    return this;
  }

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

  public String getAccountCodeClientSide() {
    return accountCodeClientSide;
  }



  public void setAccountCodeClientSide(String accountCodeClientSide) {
    this.accountCodeClientSide = accountCodeClientSide;
  }


  public AccountOperationDto amount(BigDecimal amount) {
    
    this.amount = amount;
    return this;
  }

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

  public BigDecimal getAmount() {
    return amount;
  }



  public void setAmount(BigDecimal amount) {
    this.amount = amount;
  }


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

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

  public BigDecimal getTaxAmount() {
    return taxAmount;
  }



  public void setTaxAmount(BigDecimal taxAmount) {
    this.taxAmount = taxAmount;
  }


  public AccountOperationDto matchingAmount(BigDecimal matchingAmount) {
    
    this.matchingAmount = matchingAmount;
    return this;
  }

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

  public BigDecimal getMatchingAmount() {
    return matchingAmount;
  }



  public void setMatchingAmount(BigDecimal matchingAmount) {
    this.matchingAmount = matchingAmount;
  }


  public AccountOperationDto unMatchingAmount(BigDecimal unMatchingAmount) {
    
    this.unMatchingAmount = unMatchingAmount;
    return this;
  }

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

  public BigDecimal getUnMatchingAmount() {
    return unMatchingAmount;
  }



  public void setUnMatchingAmount(BigDecimal unMatchingAmount) {
    this.unMatchingAmount = unMatchingAmount;
  }


  public AccountOperationDto matchingStatus(MatchingStatusEnum matchingStatus) {
    
    this.matchingStatus = matchingStatus;
    return this;
  }

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

  public MatchingStatusEnum getMatchingStatus() {
    return matchingStatus;
  }



  public void setMatchingStatus(MatchingStatusEnum matchingStatus) {
    this.matchingStatus = matchingStatus;
  }


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

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

  public String getCustomerAccount() {
    return customerAccount;
  }



  public void setCustomerAccount(String customerAccount) {
    this.customerAccount = customerAccount;
  }


  public AccountOperationDto excludedFromDunning(Boolean excludedFromDunning) {
    
    this.excludedFromDunning = excludedFromDunning;
    return this;
  }

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

  public Boolean getExcludedFromDunning() {
    return excludedFromDunning;
  }



  public void setExcludedFromDunning(Boolean excludedFromDunning) {
    this.excludedFromDunning = excludedFromDunning;
  }


  public AccountOperationDto 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 AccountOperationDto matchingAmounts(MatchingAmountsDto matchingAmounts) {
    
    this.matchingAmounts = matchingAmounts;
    return this;
  }

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

  public MatchingAmountsDto getMatchingAmounts() {
    return matchingAmounts;
  }



  public void setMatchingAmounts(MatchingAmountsDto matchingAmounts) {
    this.matchingAmounts = matchingAmounts;
  }


  public AccountOperationDto otherCreditAndCharge(OtherCreditAndChargeDto otherCreditAndCharge) {
    
    this.otherCreditAndCharge = otherCreditAndCharge;
    return this;
  }

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

  public OtherCreditAndChargeDto getOtherCreditAndCharge() {
    return otherCreditAndCharge;
  }



  public void setOtherCreditAndCharge(OtherCreditAndChargeDto otherCreditAndCharge) {
    this.otherCreditAndCharge = otherCreditAndCharge;
  }


  public AccountOperationDto recordedInvoice(RecordedInvoiceDto recordedInvoice) {
    
    this.recordedInvoice = recordedInvoice;
    return this;
  }

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

  public RecordedInvoiceDto getRecordedInvoice() {
    return recordedInvoice;
  }



  public void setRecordedInvoice(RecordedInvoiceDto recordedInvoice) {
    this.recordedInvoice = recordedInvoice;
  }


  public AccountOperationDto rejectedPayment(RejectedPaymentDto rejectedPayment) {
    
    this.rejectedPayment = rejectedPayment;
    return this;
  }

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

  public RejectedPaymentDto getRejectedPayment() {
    return rejectedPayment;
  }



  public void setRejectedPayment(RejectedPaymentDto rejectedPayment) {
    this.rejectedPayment = rejectedPayment;
  }


  public AccountOperationDto bankLot(String bankLot) {
    
    this.bankLot = bankLot;
    return this;
  }

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

  public String getBankLot() {
    return bankLot;
  }



  public void setBankLot(String bankLot) {
    this.bankLot = bankLot;
  }


  public AccountOperationDto bankReference(String bankReference) {
    
    this.bankReference = bankReference;
    return this;
  }

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

  public String getBankReference() {
    return bankReference;
  }



  public void setBankReference(String bankReference) {
    this.bankReference = bankReference;
  }


  public AccountOperationDto bankCollectionDate(OffsetDateTime bankCollectionDate) {
    
    this.bankCollectionDate = bankCollectionDate;
    return this;
  }

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

  public OffsetDateTime getBankCollectionDate() {
    return bankCollectionDate;
  }



  public void setBankCollectionDate(OffsetDateTime bankCollectionDate) {
    this.bankCollectionDate = bankCollectionDate;
  }


  public AccountOperationDto depositDate(OffsetDateTime depositDate) {
    
    this.depositDate = depositDate;
    return this;
  }

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

  public OffsetDateTime getDepositDate() {
    return depositDate;
  }



  public void setDepositDate(OffsetDateTime depositDate) {
    this.depositDate = depositDate;
  }


  public AccountOperationDto paymentMethod(String paymentMethod) {
    
    this.paymentMethod = paymentMethod;
    return this;
  }

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

  public String getPaymentMethod() {
    return paymentMethod;
  }



  public void setPaymentMethod(String paymentMethod) {
    this.paymentMethod = paymentMethod;
  }


  public AccountOperationDto customFields(CustomFieldsDto customFields) {
    
    this.customFields = customFields;
    return this;
  }

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

  public CustomFieldsDto getCustomFields() {
    return customFields;
  }



  public void setCustomFields(CustomFieldsDto customFields) {
    this.customFields = customFields;
  }


  public AccountOperationDto paymentInfo(String paymentInfo) {
    
    this.paymentInfo = paymentInfo;
    return this;
  }

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

  public String getPaymentInfo() {
    return paymentInfo;
  }



  public void setPaymentInfo(String paymentInfo) {
    this.paymentInfo = paymentInfo;
  }


  public AccountOperationDto paymentInfo1(String paymentInfo1) {
    
    this.paymentInfo1 = paymentInfo1;
    return this;
  }

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

  public String getPaymentInfo1() {
    return paymentInfo1;
  }



  public void setPaymentInfo1(String paymentInfo1) {
    this.paymentInfo1 = paymentInfo1;
  }


  public AccountOperationDto paymentInfo2(String paymentInfo2) {
    
    this.paymentInfo2 = paymentInfo2;
    return this;
  }

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

  public String getPaymentInfo2() {
    return paymentInfo2;
  }



  public void setPaymentInfo2(String paymentInfo2) {
    this.paymentInfo2 = paymentInfo2;
  }


  public AccountOperationDto paymentInfo3(String paymentInfo3) {
    
    this.paymentInfo3 = paymentInfo3;
    return this;
  }

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

  public String getPaymentInfo3() {
    return paymentInfo3;
  }



  public void setPaymentInfo3(String paymentInfo3) {
    this.paymentInfo3 = paymentInfo3;
  }


  public AccountOperationDto paymentInfo4(String paymentInfo4) {
    
    this.paymentInfo4 = paymentInfo4;
    return this;
  }

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

  public String getPaymentInfo4() {
    return paymentInfo4;
  }



  public void setPaymentInfo4(String paymentInfo4) {
    this.paymentInfo4 = paymentInfo4;
  }


  public AccountOperationDto paymentInfo5(String paymentInfo5) {
    
    this.paymentInfo5 = paymentInfo5;
    return this;
  }

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

  public String getPaymentInfo5() {
    return paymentInfo5;
  }



  public void setPaymentInfo5(String paymentInfo5) {
    this.paymentInfo5 = paymentInfo5;
  }


  public AccountOperationDto paymentInfo6(String paymentInfo6) {
    
    this.paymentInfo6 = paymentInfo6;
    return this;
  }

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

  public String getPaymentInfo6() {
    return paymentInfo6;
  }



  public void setPaymentInfo6(String paymentInfo6) {
    this.paymentInfo6 = paymentInfo6;
  }


  public AccountOperationDto billingAccountName(String billingAccountName) {
    
    this.billingAccountName = billingAccountName;
    return this;
  }

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

  public String getBillingAccountName() {
    return billingAccountName;
  }



  public void setBillingAccountName(String billingAccountName) {
    this.billingAccountName = billingAccountName;
  }


  @Override
  public boolean equals(java.lang.Object o) {
    if (this == o) {
      return true;
    }
    if (o == null || getClass() != o.getClass()) {
      return false;
    }
    AccountOperationDto accountOperationDto = (AccountOperationDto) o;
    return Objects.equals(this.id, accountOperationDto.id) &&
        Objects.equals(this.dueDate, accountOperationDto.dueDate) &&
        Objects.equals(this.type, accountOperationDto.type) &&
        Objects.equals(this.transactionDate, accountOperationDto.transactionDate) &&
        Objects.equals(this.transactionCategory, accountOperationDto.transactionCategory) &&
        Objects.equals(this.reference, accountOperationDto.reference) &&
        Objects.equals(this.accountCode, accountOperationDto.accountCode) &&
        Objects.equals(this.accountingCode, accountOperationDto.accountingCode) &&
        Objects.equals(this.accountCodeClientSide, accountOperationDto.accountCodeClientSide) &&
        Objects.equals(this.amount, accountOperationDto.amount) &&
        Objects.equals(this.amountWithoutTax, accountOperationDto.amountWithoutTax) &&
        Objects.equals(this.taxAmount, accountOperationDto.taxAmount) &&
        Objects.equals(this.matchingAmount, accountOperationDto.matchingAmount) &&
        Objects.equals(this.unMatchingAmount, accountOperationDto.unMatchingAmount) &&
        Objects.equals(this.matchingStatus, accountOperationDto.matchingStatus) &&
        Objects.equals(this.code, accountOperationDto.code) &&
        Objects.equals(this.description, accountOperationDto.description) &&
        Objects.equals(this.customerAccount, accountOperationDto.customerAccount) &&
        Objects.equals(this.excludedFromDunning, accountOperationDto.excludedFromDunning) &&
        Objects.equals(this.orderNumber, accountOperationDto.orderNumber) &&
        Objects.equals(this.matchingAmounts, accountOperationDto.matchingAmounts) &&
        Objects.equals(this.otherCreditAndCharge, accountOperationDto.otherCreditAndCharge) &&
        Objects.equals(this.recordedInvoice, accountOperationDto.recordedInvoice) &&
        Objects.equals(this.rejectedPayment, accountOperationDto.rejectedPayment) &&
        Objects.equals(this.bankLot, accountOperationDto.bankLot) &&
        Objects.equals(this.bankReference, accountOperationDto.bankReference) &&
        Objects.equals(this.bankCollectionDate, accountOperationDto.bankCollectionDate) &&
        Objects.equals(this.depositDate, accountOperationDto.depositDate) &&
        Objects.equals(this.paymentMethod, accountOperationDto.paymentMethod) &&
        Objects.equals(this.customFields, accountOperationDto.customFields) &&
        Objects.equals(this.paymentInfo, accountOperationDto.paymentInfo) &&
        Objects.equals(this.paymentInfo1, accountOperationDto.paymentInfo1) &&
        Objects.equals(this.paymentInfo2, accountOperationDto.paymentInfo2) &&
        Objects.equals(this.paymentInfo3, accountOperationDto.paymentInfo3) &&
        Objects.equals(this.paymentInfo4, accountOperationDto.paymentInfo4) &&
        Objects.equals(this.paymentInfo5, accountOperationDto.paymentInfo5) &&
        Objects.equals(this.paymentInfo6, accountOperationDto.paymentInfo6) &&
        Objects.equals(this.billingAccountName, accountOperationDto.billingAccountName);
  }

  @Override
  public int hashCode() {
    return Objects.hash(id, dueDate, type, transactionDate, transactionCategory, reference, accountCode, accountingCode, accountCodeClientSide, amount, amountWithoutTax, taxAmount, matchingAmount, unMatchingAmount, matchingStatus, code, description, customerAccount, excludedFromDunning, orderNumber, matchingAmounts, otherCreditAndCharge, recordedInvoice, rejectedPayment, bankLot, bankReference, bankCollectionDate, depositDate, paymentMethod, customFields, paymentInfo, paymentInfo1, paymentInfo2, paymentInfo3, paymentInfo4, paymentInfo5, paymentInfo6, billingAccountName);
  }


  @Override
  public String toString() {
    StringBuilder sb = new StringBuilder();
    sb.append("class AccountOperationDto {\n");
    sb.append("    id: ").append(toIndentedString(id)).append("\n");
    sb.append("    dueDate: ").append(toIndentedString(dueDate)).append("\n");
    sb.append("    type: ").append(toIndentedString(type)).append("\n");
    sb.append("    transactionDate: ").append(toIndentedString(transactionDate)).append("\n");
    sb.append("    transactionCategory: ").append(toIndentedString(transactionCategory)).append("\n");
    sb.append("    reference: ").append(toIndentedString(reference)).append("\n");
    sb.append("    accountCode: ").append(toIndentedString(accountCode)).append("\n");
    sb.append("    accountingCode: ").append(toIndentedString(accountingCode)).append("\n");
    sb.append("    accountCodeClientSide: ").append(toIndentedString(accountCodeClientSide)).append("\n");
    sb.append("    amount: ").append(toIndentedString(amount)).append("\n");
    sb.append("    amountWithoutTax: ").append(toIndentedString(amountWithoutTax)).append("\n");
    sb.append("    taxAmount: ").append(toIndentedString(taxAmount)).append("\n");
    sb.append("    matchingAmount: ").append(toIndentedString(matchingAmount)).append("\n");
    sb.append("    unMatchingAmount: ").append(toIndentedString(unMatchingAmount)).append("\n");
    sb.append("    matchingStatus: ").append(toIndentedString(matchingStatus)).append("\n");
    sb.append("    code: ").append(toIndentedString(code)).append("\n");
    sb.append("    description: ").append(toIndentedString(description)).append("\n");
    sb.append("    customerAccount: ").append(toIndentedString(customerAccount)).append("\n");
    sb.append("    excludedFromDunning: ").append(toIndentedString(excludedFromDunning)).append("\n");
    sb.append("    orderNumber: ").append(toIndentedString(orderNumber)).append("\n");
    sb.append("    matchingAmounts: ").append(toIndentedString(matchingAmounts)).append("\n");
    sb.append("    otherCreditAndCharge: ").append(toIndentedString(otherCreditAndCharge)).append("\n");
    sb.append("    recordedInvoice: ").append(toIndentedString(recordedInvoice)).append("\n");
    sb.append("    rejectedPayment: ").append(toIndentedString(rejectedPayment)).append("\n");
    sb.append("    bankLot: ").append(toIndentedString(bankLot)).append("\n");
    sb.append("    bankReference: ").append(toIndentedString(bankReference)).append("\n");
    sb.append("    bankCollectionDate: ").append(toIndentedString(bankCollectionDate)).append("\n");
    sb.append("    depositDate: ").append(toIndentedString(depositDate)).append("\n");
    sb.append("    paymentMethod: ").append(toIndentedString(paymentMethod)).append("\n");
    sb.append("    customFields: ").append(toIndentedString(customFields)).append("\n");
    sb.append("    paymentInfo: ").append(toIndentedString(paymentInfo)).append("\n");
    sb.append("    paymentInfo1: ").append(toIndentedString(paymentInfo1)).append("\n");
    sb.append("    paymentInfo2: ").append(toIndentedString(paymentInfo2)).append("\n");
    sb.append("    paymentInfo3: ").append(toIndentedString(paymentInfo3)).append("\n");
    sb.append("    paymentInfo4: ").append(toIndentedString(paymentInfo4)).append("\n");
    sb.append("    paymentInfo5: ").append(toIndentedString(paymentInfo5)).append("\n");
    sb.append("    paymentInfo6: ").append(toIndentedString(paymentInfo6)).append("\n");
    sb.append("    billingAccountName: ").append(toIndentedString(billingAccountName)).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    ");
  }

}

