/*
 * 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.RejectedPaymentDto;
import org.threeten.bp.OffsetDateTime;

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

  public static final String SERIALIZED_NAME_INVOICE_DATE = "invoiceDate";
  @SerializedName(SERIALIZED_NAME_INVOICE_DATE)
  private OffsetDateTime invoiceDate;

  public static final String SERIALIZED_NAME_NET_TO_PAY = "netToPay";
  @SerializedName(SERIALIZED_NAME_NET_TO_PAY)
  private BigDecimal netToPay;


  public RecordedInvoiceDto 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 RecordedInvoiceDto 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 RecordedInvoiceDto 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 RecordedInvoiceDto 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 RecordedInvoiceDto 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 RecordedInvoiceDto 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 RecordedInvoiceDto 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 RecordedInvoiceDto 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 RecordedInvoiceDto 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 RecordedInvoiceDto 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 RecordedInvoiceDto 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 RecordedInvoiceDto 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 RecordedInvoiceDto 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 RecordedInvoiceDto 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 RecordedInvoiceDto 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 RecordedInvoiceDto 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 RecordedInvoiceDto 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 RecordedInvoiceDto 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 RecordedInvoiceDto 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 RecordedInvoiceDto 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 RecordedInvoiceDto 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 RecordedInvoiceDto 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 RecordedInvoiceDto 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 RecordedInvoiceDto 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 RecordedInvoiceDto 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 RecordedInvoiceDto 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 RecordedInvoiceDto 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 RecordedInvoiceDto 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 RecordedInvoiceDto 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 RecordedInvoiceDto 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 RecordedInvoiceDto 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 RecordedInvoiceDto 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 RecordedInvoiceDto 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 RecordedInvoiceDto 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 RecordedInvoiceDto 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 RecordedInvoiceDto 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 RecordedInvoiceDto 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 RecordedInvoiceDto 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;
  }


  public RecordedInvoiceDto productionDate(OffsetDateTime productionDate) {
    
    this.productionDate = productionDate;
    return this;
  }

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

  public OffsetDateTime getProductionDate() {
    return productionDate;
  }



  public void setProductionDate(OffsetDateTime productionDate) {
    this.productionDate = productionDate;
  }


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

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

  public BigDecimal getNetToPay() {
    return netToPay;
  }



  public void setNetToPay(BigDecimal netToPay) {
    this.netToPay = netToPay;
  }


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

  @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, productionDate, invoiceDate, netToPay);
  }


  @Override
  public String toString() {
    StringBuilder sb = new StringBuilder();
    sb.append("class RecordedInvoiceDto {\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("    productionDate: ").append(toIndentedString(productionDate)).append("\n");
    sb.append("    invoiceDate: ").append(toIndentedString(invoiceDate)).append("\n");
    sb.append("    netToPay: ").append(toIndentedString(netToPay)).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    ");
  }

}

