All Downloads are FREE. Search and download functionalities are using the official Maven repository.

com.mindee.product.receipt.ReceiptV4Document Maven / Gradle / Ivy

The newest version!
package com.mindee.product.receipt;

import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
import com.fasterxml.jackson.annotation.JsonProperty;
import com.fasterxml.jackson.databind.annotation.JsonDeserialize;
import com.mindee.parsing.SummaryHelper;
import com.mindee.parsing.common.Prediction;
import com.mindee.parsing.standard.AmountField;
import com.mindee.parsing.standard.ClassificationField;
import com.mindee.parsing.standard.DateField;
import com.mindee.parsing.standard.LocaleField;
import com.mindee.parsing.standard.StringField;
import com.mindee.parsing.standard.TaxField;
import com.mindee.parsing.standard.TaxesDeserializer;
import java.util.List;
import lombok.EqualsAndHashCode;
import lombok.Getter;

/**
 * Document data for Receipt, API version 4.
 */
@Getter
@EqualsAndHashCode(callSuper = false)
@JsonIgnoreProperties(ignoreUnknown = true)
public class ReceiptV4Document extends Prediction {

  /**
   * Where the purchase was made, the language, and the currency.
   */
  @JsonProperty("locale")
  private LocaleField localeField;
  /**
   * The purchase date.
   */
  @JsonProperty("date")
  private DateField date;
  /**
   * The time of the purchase.
   */
  @JsonProperty("time")
  private StringField time;
  /**
   * The type of purchase among a certain list of it (see official documentation for the list).
   */
  @JsonProperty("category")
  private ClassificationField category;
  /**
   * The subcategory of purchase among a certain list of it (see official documentation for the list).
   */
  @JsonProperty("subcategory")
  private ClassificationField subCategory;
  /**
   * The type of the parsed document (see official documentation for the list).
   */
  @JsonProperty("document_type")
  private ClassificationField documentType;
  /**
   * Merchant's name as seen on the receipt.
   */
  @JsonProperty("supplier")
  private StringField supplierName;
  /**
   * List of taxes detected on the receipt.
   */
  @JsonProperty("taxes")
  @JsonDeserialize(using = TaxesDeserializer.class)
  private List taxes;
  /**
   * total spent including taxes, discounts, fees, tips, and gratuity.
   */
  @JsonProperty("total_amount")
  private AmountField totalAmount;
  /**
   * Total amount of the purchase excluding taxes.
   */
  @JsonProperty("total_net")
  private AmountField totalNet;
  /**
   * Total tax amount of the purchase.
   */
  @JsonProperty("total_tax")
  private AmountField totalTax;
  /**
   * Total amount of tip and gratuity.
   */
  @JsonProperty("tip")
  private AmountField tip;

  @Override
  public String toString() {

    String summary =
        String.format(":Locale: %s%n", this.getLocaleField())
        + String.format(":Date: %s%n", this.getDate())
        + String.format(":Category: %s%n", this.getCategory())
        + String.format(":Subcategory: %s%n", this.getSubCategory())
        + String.format(":Document type: %s%n", this.getDocumentType())
        + String.format(":Time: %s%n", this.getTime())
        + String.format(":Supplier name: %s%n", this.getSupplierName())
        + String.format(":Taxes: %s%n", this.taxes.toString())
        + String.format(":Total net: %s%n", this.getTotalNet())
        + String.format(":Total tax: %s%n", this.getTotalTax())
        + String.format(":Tip: %s%n", this.getTip())
        + String.format(":Total amount: %s%n", this.getTotalAmount());

    return SummaryHelper.cleanSummary(summary);
  }

  @Override
  public boolean isEmpty() {
    return (
      this.localeField == null
      && this.category == null
      && this.subCategory == null
      && this.documentType == null
      && this.date == null
      && this.time == null
      && this.totalAmount == null
      && this.totalNet == null
      && this.totalTax == null
      && this.tip == null
      && (this.taxes == null || this.taxes.isEmpty())
      && this.supplierName == null
      );
  }
}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy