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


package org.openapitools.client.model;

import java.util.Objects;
import java.util.Arrays;
import com.google.gson.TypeAdapter;
import com.google.gson.annotations.JsonAdapter;
import com.google.gson.annotations.SerializedName;
import com.google.gson.stream.JsonReader;
import com.google.gson.stream.JsonWriter;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import java.io.IOException;
import java.math.BigDecimal;
import java.util.ArrayList;
import java.util.List;
import org.openapitools.client.model.ActionStatus;
import org.threeten.bp.OffsetDateTime;

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

  public static final String SERIALIZED_NAME_INVOICE_ID = "invoiceId";
  @SerializedName(SERIALIZED_NAME_INVOICE_ID)
  private Long invoiceId;

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

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

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

  public static final String SERIALIZED_NAME_AMOUNT_WITHOUT_TAX = "amountWithoutTax";
  @SerializedName(SERIALIZED_NAME_AMOUNT_WITHOUT_TAX)
  private BigDecimal amountWithoutTax;

  public static final String SERIALIZED_NAME_AMOUNT_TAX = "amountTax";
  @SerializedName(SERIALIZED_NAME_AMOUNT_TAX)
  private BigDecimal amountTax;

  public static final String SERIALIZED_NAME_AMOUNT_WITH_TAX = "amountWithTax";
  @SerializedName(SERIALIZED_NAME_AMOUNT_WITH_TAX)
  private BigDecimal amountWithTax;

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

  public static final String SERIALIZED_NAME_XML_FILENAME = "xmlFilename";
  @SerializedName(SERIALIZED_NAME_XML_FILENAME)
  private String xmlFilename;

  public static final String SERIALIZED_NAME_XML_INVOICE = "xmlInvoice";
  @SerializedName(SERIALIZED_NAME_XML_INVOICE)
  private String xmlInvoice;

  public static final String SERIALIZED_NAME_PDF_FILENAME = "pdfFilename";
  @SerializedName(SERIALIZED_NAME_PDF_FILENAME)
  private String pdfFilename;

  public static final String SERIALIZED_NAME_PDF_INVOICE = "pdfInvoice";
  @SerializedName(SERIALIZED_NAME_PDF_INVOICE)
  private List<byte[]> pdfInvoice = null;

  public static final String SERIALIZED_NAME_SENT_BY_EMAIL = "sentByEmail";
  @SerializedName(SERIALIZED_NAME_SENT_BY_EMAIL)
  private Boolean sentByEmail;


  public CreateInvoiceResponseDto actionStatus(ActionStatus actionStatus) {
    
    this.actionStatus = actionStatus;
    return this;
  }

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

  public ActionStatus getActionStatus() {
    return actionStatus;
  }



  public void setActionStatus(ActionStatus actionStatus) {
    this.actionStatus = actionStatus;
  }


  public CreateInvoiceResponseDto invoiceId(Long invoiceId) {
    
    this.invoiceId = invoiceId;
    return this;
  }

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

  public Long getInvoiceId() {
    return invoiceId;
  }



  public void setInvoiceId(Long invoiceId) {
    this.invoiceId = invoiceId;
  }


  public CreateInvoiceResponseDto invoiceNumber(String invoiceNumber) {
    
    this.invoiceNumber = invoiceNumber;
    return this;
  }

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

  public String getInvoiceNumber() {
    return invoiceNumber;
  }



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


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

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

  public BigDecimal getAmountTax() {
    return amountTax;
  }



  public void setAmountTax(BigDecimal amountTax) {
    this.amountTax = amountTax;
  }


  public CreateInvoiceResponseDto amountWithTax(BigDecimal amountWithTax) {
    
    this.amountWithTax = amountWithTax;
    return this;
  }

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

  public BigDecimal getAmountWithTax() {
    return amountWithTax;
  }



  public void setAmountWithTax(BigDecimal amountWithTax) {
    this.amountWithTax = amountWithTax;
  }


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


  public CreateInvoiceResponseDto xmlFilename(String xmlFilename) {
    
    this.xmlFilename = xmlFilename;
    return this;
  }

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

  public String getXmlFilename() {
    return xmlFilename;
  }



  public void setXmlFilename(String xmlFilename) {
    this.xmlFilename = xmlFilename;
  }


  public CreateInvoiceResponseDto xmlInvoice(String xmlInvoice) {
    
    this.xmlInvoice = xmlInvoice;
    return this;
  }

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

  public String getXmlInvoice() {
    return xmlInvoice;
  }



  public void setXmlInvoice(String xmlInvoice) {
    this.xmlInvoice = xmlInvoice;
  }


  public CreateInvoiceResponseDto pdfFilename(String pdfFilename) {
    
    this.pdfFilename = pdfFilename;
    return this;
  }

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

  public String getPdfFilename() {
    return pdfFilename;
  }



  public void setPdfFilename(String pdfFilename) {
    this.pdfFilename = pdfFilename;
  }


  public CreateInvoiceResponseDto pdfInvoice(List<byte[]> pdfInvoice) {
    
    this.pdfInvoice = pdfInvoice;
    return this;
  }

  public CreateInvoiceResponseDto addPdfInvoiceItem(byte[] pdfInvoiceItem) {
    if (this.pdfInvoice == null) {
      this.pdfInvoice = new ArrayList<byte[]>();
    }
    this.pdfInvoice.add(pdfInvoiceItem);
    return this;
  }

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

  public List<byte[]> getPdfInvoice() {
    return pdfInvoice;
  }



  public void setPdfInvoice(List<byte[]> pdfInvoice) {
    this.pdfInvoice = pdfInvoice;
  }


  public CreateInvoiceResponseDto sentByEmail(Boolean sentByEmail) {
    
    this.sentByEmail = sentByEmail;
    return this;
  }

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

  public Boolean getSentByEmail() {
    return sentByEmail;
  }



  public void setSentByEmail(Boolean sentByEmail) {
    this.sentByEmail = sentByEmail;
  }


  @Override
  public boolean equals(java.lang.Object o) {
    if (this == o) {
      return true;
    }
    if (o == null || getClass() != o.getClass()) {
      return false;
    }
    CreateInvoiceResponseDto createInvoiceResponseDto = (CreateInvoiceResponseDto) o;
    return Objects.equals(this.actionStatus, createInvoiceResponseDto.actionStatus) &&
        Objects.equals(this.invoiceId, createInvoiceResponseDto.invoiceId) &&
        Objects.equals(this.invoiceNumber, createInvoiceResponseDto.invoiceNumber) &&
        Objects.equals(this.invoiceDate, createInvoiceResponseDto.invoiceDate) &&
        Objects.equals(this.dueDate, createInvoiceResponseDto.dueDate) &&
        Objects.equals(this.amountWithoutTax, createInvoiceResponseDto.amountWithoutTax) &&
        Objects.equals(this.amountTax, createInvoiceResponseDto.amountTax) &&
        Objects.equals(this.amountWithTax, createInvoiceResponseDto.amountWithTax) &&
        Objects.equals(this.netToPay, createInvoiceResponseDto.netToPay) &&
        Objects.equals(this.xmlFilename, createInvoiceResponseDto.xmlFilename) &&
        Objects.equals(this.xmlInvoice, createInvoiceResponseDto.xmlInvoice) &&
        Objects.equals(this.pdfFilename, createInvoiceResponseDto.pdfFilename) &&
        Objects.equals(this.pdfInvoice, createInvoiceResponseDto.pdfInvoice) &&
        Objects.equals(this.sentByEmail, createInvoiceResponseDto.sentByEmail);
  }

  @Override
  public int hashCode() {
    return Objects.hash(actionStatus, invoiceId, invoiceNumber, invoiceDate, dueDate, amountWithoutTax, amountTax, amountWithTax, netToPay, xmlFilename, xmlInvoice, pdfFilename, pdfInvoice, sentByEmail);
  }


  @Override
  public String toString() {
    StringBuilder sb = new StringBuilder();
    sb.append("class CreateInvoiceResponseDto {\n");
    sb.append("    actionStatus: ").append(toIndentedString(actionStatus)).append("\n");
    sb.append("    invoiceId: ").append(toIndentedString(invoiceId)).append("\n");
    sb.append("    invoiceNumber: ").append(toIndentedString(invoiceNumber)).append("\n");
    sb.append("    invoiceDate: ").append(toIndentedString(invoiceDate)).append("\n");
    sb.append("    dueDate: ").append(toIndentedString(dueDate)).append("\n");
    sb.append("    amountWithoutTax: ").append(toIndentedString(amountWithoutTax)).append("\n");
    sb.append("    amountTax: ").append(toIndentedString(amountTax)).append("\n");
    sb.append("    amountWithTax: ").append(toIndentedString(amountWithTax)).append("\n");
    sb.append("    netToPay: ").append(toIndentedString(netToPay)).append("\n");
    sb.append("    xmlFilename: ").append(toIndentedString(xmlFilename)).append("\n");
    sb.append("    xmlInvoice: ").append(toIndentedString(xmlInvoice)).append("\n");
    sb.append("    pdfFilename: ").append(toIndentedString(pdfFilename)).append("\n");
    sb.append("    pdfInvoice: ").append(toIndentedString(pdfInvoice)).append("\n");
    sb.append("    sentByEmail: ").append(toIndentedString(sentByEmail)).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    ");
  }

}

