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

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

  public static final String SERIALIZED_NAME_SELLER_CODE = "sellerCode";
  @SerializedName(SERIALIZED_NAME_SELLER_CODE)
  private String sellerCode;

  public static final String SERIALIZED_NAME_CUSTOMER_CODE = "customerCode";
  @SerializedName(SERIALIZED_NAME_CUSTOMER_CODE)
  private String customerCode;

  public static final String SERIALIZED_NAME_CUSTOMER_ACCOUNT_NAME = "customerAccountName";
  @SerializedName(SERIALIZED_NAME_CUSTOMER_ACCOUNT_NAME)
  private String customerAccountName;

  public static final String SERIALIZED_NAME_OPERATION_DATE = "operationDate";
  @SerializedName(SERIALIZED_NAME_OPERATION_DATE)
  private OffsetDateTime operationDate;

  public static final String SERIALIZED_NAME_UPDATED_STATUS_DATE = "updatedStatusDate";
  @SerializedName(SERIALIZED_NAME_UPDATED_STATUS_DATE)
  private OffsetDateTime updatedStatusDate;

  public static final String SERIALIZED_NAME_LAST_UPDATE_DATE = "lastUpdateDate";
  @SerializedName(SERIALIZED_NAME_LAST_UPDATE_DATE)
  private OffsetDateTime lastUpdateDate;

  public static final String SERIALIZED_NAME_AMOUNT_CTS = "amountCts";
  @SerializedName(SERIALIZED_NAME_AMOUNT_CTS)
  private Long amountCts;

  /**
   * Gets or Sets syncStatus
   */
  @JsonAdapter(SyncStatusEnum.Adapter.class)
  public enum SyncStatusEnum {
    ACCEPTED("ACCEPTED"),
    
    PENDING("PENDING"),
    
    REJECTED("REJECTED"),
    
    ERROR("ERROR"),
    
    NOT_PROCESSED("NOT_PROCESSED");

    private String value;

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

    public String getValue() {
      return value;
    }

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

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

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

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

  public static final String SERIALIZED_NAME_SYNC_STATUS = "syncStatus";
  @SerializedName(SERIALIZED_NAME_SYNC_STATUS)
  private SyncStatusEnum syncStatus;

  /**
   * Gets or Sets asyncStatus
   */
  @JsonAdapter(AsyncStatusEnum.Adapter.class)
  public enum AsyncStatusEnum {
    ACCEPTED("ACCEPTED"),
    
    PENDING("PENDING"),
    
    REJECTED("REJECTED"),
    
    ERROR("ERROR"),
    
    NOT_PROCESSED("NOT_PROCESSED");

    private String value;

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

    public String getValue() {
      return value;
    }

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

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

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

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

  public static final String SERIALIZED_NAME_ASYNC_STATUS = "asyncStatus";
  @SerializedName(SERIALIZED_NAME_ASYNC_STATUS)
  private AsyncStatusEnum asyncStatus;

  /**
   * Gets or Sets status
   */
  @JsonAdapter(StatusEnum.Adapter.class)
  public enum StatusEnum {
    ACCEPTED("ACCEPTED"),
    
    PENDING("PENDING"),
    
    REJECTED("REJECTED"),
    
    ERROR("ERROR"),
    
    NOT_PROCESSED("NOT_PROCESSED");

    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_EXTERNAL_PAYMENT_ID = "externalPaymentId";
  @SerializedName(SERIALIZED_NAME_EXTERNAL_PAYMENT_ID)
  private String externalPaymentId;

  public static final String SERIALIZED_NAME_ERROR_CODE = "errorCode";
  @SerializedName(SERIALIZED_NAME_ERROR_CODE)
  private String errorCode;

  public static final String SERIALIZED_NAME_ERROR_MESSAGE = "errorMessage";
  @SerializedName(SERIALIZED_NAME_ERROR_MESSAGE)
  private String errorMessage;

  /**
   * Gets or Sets errorType
   */
  @JsonAdapter(ErrorTypeEnum.Adapter.class)
  public enum ErrorTypeEnum {
    ERROR("ERROR"),
    
    REJECT("REJECT");

    private String value;

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

    public String getValue() {
      return value;
    }

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

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

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

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

  public static final String SERIALIZED_NAME_ERROR_TYPE = "errorType";
  @SerializedName(SERIALIZED_NAME_ERROR_TYPE)
  private ErrorTypeEnum errorType;

  public static final String SERIALIZED_NAME_PAYMENT_GATEWAY_CODE = "paymentGatewayCode";
  @SerializedName(SERIALIZED_NAME_PAYMENT_GATEWAY_CODE)
  private String paymentGatewayCode;

  /**
   * Gets or Sets paymentMethodType
   */
  @JsonAdapter(PaymentMethodTypeEnum.Adapter.class)
  public enum PaymentMethodTypeEnum {
    CHECK("CHECK"),
    
    DIRECTDEBIT("DIRECTDEBIT"),
    
    WIRETRANSFER("WIRETRANSFER"),
    
    CARD("CARD");

    private String value;

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

    public String getValue() {
      return value;
    }

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

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

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

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

  public static final String SERIALIZED_NAME_PAYMENT_METHOD_TYPE = "paymentMethodType";
  @SerializedName(SERIALIZED_NAME_PAYMENT_METHOD_TYPE)
  private PaymentMethodTypeEnum paymentMethodType;

  public static final String SERIALIZED_NAME_PAYMENT_METHOD_NAME = "paymentMethodName";
  @SerializedName(SERIALIZED_NAME_PAYMENT_METHOD_NAME)
  private String paymentMethodName;

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

    private String value;

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

    public String getValue() {
      return value;
    }

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

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

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

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

  public static final String SERIALIZED_NAME_OPERATION_CATEGORY = "operationCategory";
  @SerializedName(SERIALIZED_NAME_OPERATION_CATEGORY)
  private OperationCategoryEnum operationCategory;

  public static final String SERIALIZED_NAME_PAYMENT = "payment";
  @SerializedName(SERIALIZED_NAME_PAYMENT)
  private AccountOperationDto payment;

  public static final String SERIALIZED_NAME_REFUND = "refund";
  @SerializedName(SERIALIZED_NAME_REFUND)
  private AccountOperationDto refund;

  public static final String SERIALIZED_NAME_LIST_AO_PAID = "listAoPaid";
  @SerializedName(SERIALIZED_NAME_LIST_AO_PAID)
  private AccountOperationsDto listAoPaid;


  public PaymentHistoryDto customerAccountCode(String customerAccountCode) {
    
    this.customerAccountCode = customerAccountCode;
    return this;
  }

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

  public String getCustomerAccountCode() {
    return customerAccountCode;
  }



  public void setCustomerAccountCode(String customerAccountCode) {
    this.customerAccountCode = customerAccountCode;
  }


  public PaymentHistoryDto sellerCode(String sellerCode) {
    
    this.sellerCode = sellerCode;
    return this;
  }

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

  public String getSellerCode() {
    return sellerCode;
  }



  public void setSellerCode(String sellerCode) {
    this.sellerCode = sellerCode;
  }


  public PaymentHistoryDto customerCode(String customerCode) {
    
    this.customerCode = customerCode;
    return this;
  }

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

  public String getCustomerCode() {
    return customerCode;
  }



  public void setCustomerCode(String customerCode) {
    this.customerCode = customerCode;
  }


  public PaymentHistoryDto customerAccountName(String customerAccountName) {
    
    this.customerAccountName = customerAccountName;
    return this;
  }

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

  public String getCustomerAccountName() {
    return customerAccountName;
  }



  public void setCustomerAccountName(String customerAccountName) {
    this.customerAccountName = customerAccountName;
  }


  public PaymentHistoryDto operationDate(OffsetDateTime operationDate) {
    
    this.operationDate = operationDate;
    return this;
  }

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

  public OffsetDateTime getOperationDate() {
    return operationDate;
  }



  public void setOperationDate(OffsetDateTime operationDate) {
    this.operationDate = operationDate;
  }


  public PaymentHistoryDto updatedStatusDate(OffsetDateTime updatedStatusDate) {
    
    this.updatedStatusDate = updatedStatusDate;
    return this;
  }

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

  public OffsetDateTime getUpdatedStatusDate() {
    return updatedStatusDate;
  }



  public void setUpdatedStatusDate(OffsetDateTime updatedStatusDate) {
    this.updatedStatusDate = updatedStatusDate;
  }


  public PaymentHistoryDto lastUpdateDate(OffsetDateTime lastUpdateDate) {
    
    this.lastUpdateDate = lastUpdateDate;
    return this;
  }

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

  public OffsetDateTime getLastUpdateDate() {
    return lastUpdateDate;
  }



  public void setLastUpdateDate(OffsetDateTime lastUpdateDate) {
    this.lastUpdateDate = lastUpdateDate;
  }


  public PaymentHistoryDto amountCts(Long amountCts) {
    
    this.amountCts = amountCts;
    return this;
  }

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

  public Long getAmountCts() {
    return amountCts;
  }



  public void setAmountCts(Long amountCts) {
    this.amountCts = amountCts;
  }


  public PaymentHistoryDto syncStatus(SyncStatusEnum syncStatus) {
    
    this.syncStatus = syncStatus;
    return this;
  }

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

  public SyncStatusEnum getSyncStatus() {
    return syncStatus;
  }



  public void setSyncStatus(SyncStatusEnum syncStatus) {
    this.syncStatus = syncStatus;
  }


  public PaymentHistoryDto asyncStatus(AsyncStatusEnum asyncStatus) {
    
    this.asyncStatus = asyncStatus;
    return this;
  }

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

  public AsyncStatusEnum getAsyncStatus() {
    return asyncStatus;
  }



  public void setAsyncStatus(AsyncStatusEnum asyncStatus) {
    this.asyncStatus = asyncStatus;
  }


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

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

  public String getExternalPaymentId() {
    return externalPaymentId;
  }



  public void setExternalPaymentId(String externalPaymentId) {
    this.externalPaymentId = externalPaymentId;
  }


  public PaymentHistoryDto errorCode(String errorCode) {
    
    this.errorCode = errorCode;
    return this;
  }

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

  public String getErrorCode() {
    return errorCode;
  }



  public void setErrorCode(String errorCode) {
    this.errorCode = errorCode;
  }


  public PaymentHistoryDto errorMessage(String errorMessage) {
    
    this.errorMessage = errorMessage;
    return this;
  }

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

  public String getErrorMessage() {
    return errorMessage;
  }



  public void setErrorMessage(String errorMessage) {
    this.errorMessage = errorMessage;
  }


  public PaymentHistoryDto errorType(ErrorTypeEnum errorType) {
    
    this.errorType = errorType;
    return this;
  }

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

  public ErrorTypeEnum getErrorType() {
    return errorType;
  }



  public void setErrorType(ErrorTypeEnum errorType) {
    this.errorType = errorType;
  }


  public PaymentHistoryDto paymentGatewayCode(String paymentGatewayCode) {
    
    this.paymentGatewayCode = paymentGatewayCode;
    return this;
  }

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

  public String getPaymentGatewayCode() {
    return paymentGatewayCode;
  }



  public void setPaymentGatewayCode(String paymentGatewayCode) {
    this.paymentGatewayCode = paymentGatewayCode;
  }


  public PaymentHistoryDto paymentMethodType(PaymentMethodTypeEnum paymentMethodType) {
    
    this.paymentMethodType = paymentMethodType;
    return this;
  }

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

  public PaymentMethodTypeEnum getPaymentMethodType() {
    return paymentMethodType;
  }



  public void setPaymentMethodType(PaymentMethodTypeEnum paymentMethodType) {
    this.paymentMethodType = paymentMethodType;
  }


  public PaymentHistoryDto paymentMethodName(String paymentMethodName) {
    
    this.paymentMethodName = paymentMethodName;
    return this;
  }

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

  public String getPaymentMethodName() {
    return paymentMethodName;
  }



  public void setPaymentMethodName(String paymentMethodName) {
    this.paymentMethodName = paymentMethodName;
  }


  public PaymentHistoryDto operationCategory(OperationCategoryEnum operationCategory) {
    
    this.operationCategory = operationCategory;
    return this;
  }

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

  public OperationCategoryEnum getOperationCategory() {
    return operationCategory;
  }



  public void setOperationCategory(OperationCategoryEnum operationCategory) {
    this.operationCategory = operationCategory;
  }


  public PaymentHistoryDto payment(AccountOperationDto payment) {
    
    this.payment = payment;
    return this;
  }

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

  public AccountOperationDto getPayment() {
    return payment;
  }



  public void setPayment(AccountOperationDto payment) {
    this.payment = payment;
  }


  public PaymentHistoryDto refund(AccountOperationDto refund) {
    
    this.refund = refund;
    return this;
  }

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

  public AccountOperationDto getRefund() {
    return refund;
  }



  public void setRefund(AccountOperationDto refund) {
    this.refund = refund;
  }


  public PaymentHistoryDto listAoPaid(AccountOperationsDto listAoPaid) {
    
    this.listAoPaid = listAoPaid;
    return this;
  }

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

  public AccountOperationsDto getListAoPaid() {
    return listAoPaid;
  }



  public void setListAoPaid(AccountOperationsDto listAoPaid) {
    this.listAoPaid = listAoPaid;
  }


  @Override
  public boolean equals(java.lang.Object o) {
    if (this == o) {
      return true;
    }
    if (o == null || getClass() != o.getClass()) {
      return false;
    }
    PaymentHistoryDto paymentHistoryDto = (PaymentHistoryDto) o;
    return Objects.equals(this.customerAccountCode, paymentHistoryDto.customerAccountCode) &&
        Objects.equals(this.sellerCode, paymentHistoryDto.sellerCode) &&
        Objects.equals(this.customerCode, paymentHistoryDto.customerCode) &&
        Objects.equals(this.customerAccountName, paymentHistoryDto.customerAccountName) &&
        Objects.equals(this.operationDate, paymentHistoryDto.operationDate) &&
        Objects.equals(this.updatedStatusDate, paymentHistoryDto.updatedStatusDate) &&
        Objects.equals(this.lastUpdateDate, paymentHistoryDto.lastUpdateDate) &&
        Objects.equals(this.amountCts, paymentHistoryDto.amountCts) &&
        Objects.equals(this.syncStatus, paymentHistoryDto.syncStatus) &&
        Objects.equals(this.asyncStatus, paymentHistoryDto.asyncStatus) &&
        Objects.equals(this.status, paymentHistoryDto.status) &&
        Objects.equals(this.externalPaymentId, paymentHistoryDto.externalPaymentId) &&
        Objects.equals(this.errorCode, paymentHistoryDto.errorCode) &&
        Objects.equals(this.errorMessage, paymentHistoryDto.errorMessage) &&
        Objects.equals(this.errorType, paymentHistoryDto.errorType) &&
        Objects.equals(this.paymentGatewayCode, paymentHistoryDto.paymentGatewayCode) &&
        Objects.equals(this.paymentMethodType, paymentHistoryDto.paymentMethodType) &&
        Objects.equals(this.paymentMethodName, paymentHistoryDto.paymentMethodName) &&
        Objects.equals(this.operationCategory, paymentHistoryDto.operationCategory) &&
        Objects.equals(this.payment, paymentHistoryDto.payment) &&
        Objects.equals(this.refund, paymentHistoryDto.refund) &&
        Objects.equals(this.listAoPaid, paymentHistoryDto.listAoPaid);
  }

  @Override
  public int hashCode() {
    return Objects.hash(customerAccountCode, sellerCode, customerCode, customerAccountName, operationDate, updatedStatusDate, lastUpdateDate, amountCts, syncStatus, asyncStatus, status, externalPaymentId, errorCode, errorMessage, errorType, paymentGatewayCode, paymentMethodType, paymentMethodName, operationCategory, payment, refund, listAoPaid);
  }


  @Override
  public String toString() {
    StringBuilder sb = new StringBuilder();
    sb.append("class PaymentHistoryDto {\n");
    sb.append("    customerAccountCode: ").append(toIndentedString(customerAccountCode)).append("\n");
    sb.append("    sellerCode: ").append(toIndentedString(sellerCode)).append("\n");
    sb.append("    customerCode: ").append(toIndentedString(customerCode)).append("\n");
    sb.append("    customerAccountName: ").append(toIndentedString(customerAccountName)).append("\n");
    sb.append("    operationDate: ").append(toIndentedString(operationDate)).append("\n");
    sb.append("    updatedStatusDate: ").append(toIndentedString(updatedStatusDate)).append("\n");
    sb.append("    lastUpdateDate: ").append(toIndentedString(lastUpdateDate)).append("\n");
    sb.append("    amountCts: ").append(toIndentedString(amountCts)).append("\n");
    sb.append("    syncStatus: ").append(toIndentedString(syncStatus)).append("\n");
    sb.append("    asyncStatus: ").append(toIndentedString(asyncStatus)).append("\n");
    sb.append("    status: ").append(toIndentedString(status)).append("\n");
    sb.append("    externalPaymentId: ").append(toIndentedString(externalPaymentId)).append("\n");
    sb.append("    errorCode: ").append(toIndentedString(errorCode)).append("\n");
    sb.append("    errorMessage: ").append(toIndentedString(errorMessage)).append("\n");
    sb.append("    errorType: ").append(toIndentedString(errorType)).append("\n");
    sb.append("    paymentGatewayCode: ").append(toIndentedString(paymentGatewayCode)).append("\n");
    sb.append("    paymentMethodType: ").append(toIndentedString(paymentMethodType)).append("\n");
    sb.append("    paymentMethodName: ").append(toIndentedString(paymentMethodName)).append("\n");
    sb.append("    operationCategory: ").append(toIndentedString(operationCategory)).append("\n");
    sb.append("    payment: ").append(toIndentedString(payment)).append("\n");
    sb.append("    refund: ").append(toIndentedString(refund)).append("\n");
    sb.append("    listAoPaid: ").append(toIndentedString(listAoPaid)).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    ");
  }

}

