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

net.avalara.avatax.rest.client.models.TransactionModel Maven / Gradle / Ivy

package net.avalara.avatax.rest.client.models;

import net.avalara.avatax.rest.client.enums.*;
import net.avalara.avatax.rest.client.serializer.JsonSerializer;

import java.lang.Override;
import java.math.BigDecimal;
import java.util.ArrayList;
import java.util.Date;
import java.util.HashMap;

/*
 * AvaTax Software Development Kit for Java JRE based environments
 *
 * (c) 2004-2018 Avalara, Inc.
 *
 * For the full copyright and license information, please view the LICENSE
 * file that was distributed with this source code.
 *
 * @author     Dustin Welden 
 * @copyright  2004-2018 Avalara, Inc.
 * @license    https://www.apache.org/licenses/LICENSE-2.0
 * @link       https://github.com/avadev/AvaTax-REST-V2-JRE-SDK
 * Swagger name: AvaTaxClient
 */

/**
 * This object represents a single transaction; for example, a sales invoice or purchase order.
 */
public class TransactionModel {


    private Long id;

    /**
     * Getter for id
     *
     * The unique ID number of this transaction.
     */
    public Long getId() {
        return this.id;
    }

    /**
     * Setter for id
     *
     * The unique ID number of this transaction.
     */
    public void setId(Long value) {
        this.id = value;
    }

    private String code;

    /**
     * Getter for code
     *
     * A unique customer-provided code identifying this transaction.
     */
    public String getCode() {
        return this.code;
    }

    /**
     * Setter for code
     *
     * A unique customer-provided code identifying this transaction.
     */
    public void setCode(String value) {
        this.code = value;
    }

    private Integer companyId;

    /**
     * Getter for companyId
     *
     * The unique ID number of the company that recorded this transaction.
     */
    public Integer getCompanyId() {
        return this.companyId;
    }

    /**
     * Setter for companyId
     *
     * The unique ID number of the company that recorded this transaction.
     */
    public void setCompanyId(Integer value) {
        this.companyId = value;
    }

    private Date date;

    /**
     * Getter for date
     *
     * The date on which this transaction occurred.
     */
    public Date getDate() {
        return this.date;
    }

    /**
     * Setter for date
     *
     * The date on which this transaction occurred.
     */
    public void setDate(Date value) {
        this.date = value;
    }

    private Date paymentDate;

    /**
     * Getter for paymentDate
     *
     * DEPRECATED - Date: 07/25/2018, Version: 18.7, Message: This field is deprecated and will return null till its removed.
    * The date when payment was made on this transaction. By default, this should be the same as the date of the transaction.
     */
    public Date getPaymentDate() {
        return this.paymentDate;
    }

    /**
     * Setter for paymentDate
     *
     * DEPRECATED - Date: 07/25/2018, Version: 18.7, Message: This field is deprecated and will return null till its removed.
    * The date when payment was made on this transaction. By default, this should be the same as the date of the transaction.
     */
    public void setPaymentDate(Date value) {
        this.paymentDate = value;
    }

    private DocumentStatus status;

    /**
     * Getter for status
     *
     * The status of the transaction.
     */
    public DocumentStatus getStatus() {
        return this.status;
    }

    /**
     * Setter for status
     *
     * The status of the transaction.
     */
    public void setStatus(DocumentStatus value) {
        this.status = value;
    }

    private DocumentType type;

    /**
     * Getter for type
     *
     * The type of the transaction.
    *  
    * Transactions of type `SalesOrder`, `ReturnOrder`, and so on are temporary estimates and will not be saved.
    *  
    * Transactions of type `SalesInvoice, `ReturnInvoice`, and so on are permanent transactions that can be reported to tax authorities
    * if they are in status `Committed`.
    *  
    * A sales transaction represents a sale from the company to a customer. A purchase transaction represents a purchase made by the company.
    * A return transaction represents a customer who decided to request a refund after purchasing a product from the company. An inventory
    * transfer transaction represents goods that were moved from one location of the company to another location without changing ownership.
     */
    public DocumentType getType() {
        return this.type;
    }

    /**
     * Setter for type
     *
     * The type of the transaction.
    *  
    * Transactions of type `SalesOrder`, `ReturnOrder`, and so on are temporary estimates and will not be saved.
    *  
    * Transactions of type `SalesInvoice, `ReturnInvoice`, and so on are permanent transactions that can be reported to tax authorities
    * if they are in status `Committed`.
    *  
    * A sales transaction represents a sale from the company to a customer. A purchase transaction represents a purchase made by the company.
    * A return transaction represents a customer who decided to request a refund after purchasing a product from the company. An inventory
    * transfer transaction represents goods that were moved from one location of the company to another location without changing ownership.
     */
    public void setType(DocumentType value) {
        this.type = value;
    }

    private String batchCode;

    /**
     * Getter for batchCode
     *
     * If this transaction was created as part of a batch, this code indicates which batch.
     */
    public String getBatchCode() {
        return this.batchCode;
    }

    /**
     * Setter for batchCode
     *
     * If this transaction was created as part of a batch, this code indicates which batch.
     */
    public void setBatchCode(String value) {
        this.batchCode = value;
    }

    private String currencyCode;

    /**
     * Getter for currencyCode
     *
     * The three-character ISO 4217 currency code representing the ‘invoice currency’ (the currency the transaction was invoiced in). 
    * If this is different than the currency the tax liability needs to be reported in, you’ll also need to provide the 
    * `exchangeRateCurrencyCode` and the `exchangeRate` for conversion to the reporting country.
     */
    public String getCurrencyCode() {
        return this.currencyCode;
    }

    /**
     * Setter for currencyCode
     *
     * The three-character ISO 4217 currency code representing the ‘invoice currency’ (the currency the transaction was invoiced in). 
    * If this is different than the currency the tax liability needs to be reported in, you’ll also need to provide the 
    * `exchangeRateCurrencyCode` and the `exchangeRate` for conversion to the reporting country.
     */
    public void setCurrencyCode(String value) {
        this.currencyCode = value;
    }

    private String exchangeRateCurrencyCode;

    /**
     * Getter for exchangeRateCurrencyCode
     *
     * The three-character ISO 4217 currency code representing the ‘reporting currency’ (the currency the transaction’s tax liability needs to be reported in). 
    * You can leave this blank if the invoice currency provided in the `currencyCode` field is also the reporting currency.
     */
    public String getExchangeRateCurrencyCode() {
        return this.exchangeRateCurrencyCode;
    }

    /**
     * Setter for exchangeRateCurrencyCode
     *
     * The three-character ISO 4217 currency code representing the ‘reporting currency’ (the currency the transaction’s tax liability needs to be reported in). 
    * You can leave this blank if the invoice currency provided in the `currencyCode` field is also the reporting currency.
     */
    public void setExchangeRateCurrencyCode(String value) {
        this.exchangeRateCurrencyCode = value;
    }

    private String customerUsageType;

    /**
     * Getter for customerUsageType
     *
     * DEPRECATED - Date: 10/16/2017, Version: 17.11, Message: Please use entityUseCode instead.
    * The customer usage type for this transaction. Customer usage types often affect exemption or taxability rules.
     */
    public String getCustomerUsageType() {
        return this.customerUsageType;
    }

    /**
     * Setter for customerUsageType
     *
     * DEPRECATED - Date: 10/16/2017, Version: 17.11, Message: Please use entityUseCode instead.
    * The customer usage type for this transaction. Customer usage types often affect exemption or taxability rules.
     */
    public void setCustomerUsageType(String value) {
        this.customerUsageType = value;
    }

    private String entityUseCode;

    /**
     * Getter for entityUseCode
     *
     * The entity use code for this transaction. Entity use codes often affect exemption or taxability rules.
     */
    public String getEntityUseCode() {
        return this.entityUseCode;
    }

    /**
     * Setter for entityUseCode
     *
     * The entity use code for this transaction. Entity use codes often affect exemption or taxability rules.
     */
    public void setEntityUseCode(String value) {
        this.entityUseCode = value;
    }

    private String customerVendorCode;

    /**
     * Getter for customerVendorCode
     *
     * DEPRECATED - Date: 3/1/2018, Version: 18.3, Message: Please use `customerCode`
    * This field has been renamed to `customerCode` to match documentation for other APIs related to exemption customers.
     */
    public String getCustomerVendorCode() {
        return this.customerVendorCode;
    }

    /**
     * Setter for customerVendorCode
     *
     * DEPRECATED - Date: 3/1/2018, Version: 18.3, Message: Please use `customerCode`
    * This field has been renamed to `customerCode` to match documentation for other APIs related to exemption customers.
     */
    public void setCustomerVendorCode(String value) {
        this.customerVendorCode = value;
    }

    private String customerCode;

    /**
     * Getter for customerCode
     *
     * Unique code identifying the customer that requested this transaction.
    *  
    * When you specify a `customerCode`, AvaTax will look to see if a customer exists with this code in the exemption certificate system.
    * If that customer exists, and if that customer has uploaded an exemption certificate that applies to this transaction, the relevant
    * parts of this transaction that can use the exemption certificate will be treated as exempt.
     */
    public String getCustomerCode() {
        return this.customerCode;
    }

    /**
     * Setter for customerCode
     *
     * Unique code identifying the customer that requested this transaction.
    *  
    * When you specify a `customerCode`, AvaTax will look to see if a customer exists with this code in the exemption certificate system.
    * If that customer exists, and if that customer has uploaded an exemption certificate that applies to this transaction, the relevant
    * parts of this transaction that can use the exemption certificate will be treated as exempt.
     */
    public void setCustomerCode(String value) {
        this.customerCode = value;
    }

    private String exemptNo;

    /**
     * Getter for exemptNo
     *
     * The customer Tax Id Number (tax_number) associated with a certificate - Sales tax calculation requests first determine if there is an applicable
    * ECMS entry available, and will utilize it for exemption processing. If no applicable ECMS entry is available, the AvaTax service
    * will determine if an Exemption Number field is populated or an Entity/Use Code is included in the sales tax calculation request,
    * and will perform exemption processing using either of those two options.
     */
    public String getExemptNo() {
        return this.exemptNo;
    }

    /**
     * Setter for exemptNo
     *
     * The customer Tax Id Number (tax_number) associated with a certificate - Sales tax calculation requests first determine if there is an applicable
    * ECMS entry available, and will utilize it for exemption processing. If no applicable ECMS entry is available, the AvaTax service
    * will determine if an Exemption Number field is populated or an Entity/Use Code is included in the sales tax calculation request,
    * and will perform exemption processing using either of those two options.
     */
    public void setExemptNo(String value) {
        this.exemptNo = value;
    }

    private Boolean reconciled;

    /**
     * Getter for reconciled
     *
     * If this transaction has been reconciled against the company's ledger, this value is set to true.
     */
    public Boolean getReconciled() {
        return this.reconciled;
    }

    /**
     * Setter for reconciled
     *
     * If this transaction has been reconciled against the company's ledger, this value is set to true.
     */
    public void setReconciled(Boolean value) {
        this.reconciled = value;
    }

    private String locationCode;

    /**
     * Getter for locationCode
     *
     * DEPRECATED - Date: 3/1/2018, Version: 18.3, Message: In order to ensure consistency of field names, Please use reportingLocationCode instead.
    * This field has been replaced by the reportingLocationCode field
     */
    public String getLocationCode() {
        return this.locationCode;
    }

    /**
     * Setter for locationCode
     *
     * DEPRECATED - Date: 3/1/2018, Version: 18.3, Message: In order to ensure consistency of field names, Please use reportingLocationCode instead.
    * This field has been replaced by the reportingLocationCode field
     */
    public void setLocationCode(String value) {
        this.locationCode = value;
    }

    private String reportingLocationCode;

    /**
     * Getter for reportingLocationCode
     *
     * For customers who use [location-based tax reporting](https://developer.avalara.com/avatax/dev-guide/locations/location-based-reporting),
    * this field controls how this transaction will be filed for multi-location tax filings.
    *  
    * If you specify a non-null value for this field, AvaTax will ensure that this transaction is reported on the tax return associated
    * with the [LocationModel](https://developer.avalara.com/api-reference/avatax/rest/v2/models/LocationModel/) identified by this code.
    *  
    * This field does not affect any addresses for the transaction. It only controls the tax filing behavior of this transaction.
    *  
    * If you are looking for information about how to set up addresses for a transaction, please see [Using Address Types](https://developer.avalara.com/avatax/dev-guide/customizing-transaction/address-types/)
    * in the AvaTax Developer Guide.
     */
    public String getReportingLocationCode() {
        return this.reportingLocationCode;
    }

    /**
     * Setter for reportingLocationCode
     *
     * For customers who use [location-based tax reporting](https://developer.avalara.com/avatax/dev-guide/locations/location-based-reporting),
    * this field controls how this transaction will be filed for multi-location tax filings.
    *  
    * If you specify a non-null value for this field, AvaTax will ensure that this transaction is reported on the tax return associated
    * with the [LocationModel](https://developer.avalara.com/api-reference/avatax/rest/v2/models/LocationModel/) identified by this code.
    *  
    * This field does not affect any addresses for the transaction. It only controls the tax filing behavior of this transaction.
    *  
    * If you are looking for information about how to set up addresses for a transaction, please see [Using Address Types](https://developer.avalara.com/avatax/dev-guide/customizing-transaction/address-types/)
    * in the AvaTax Developer Guide.
     */
    public void setReportingLocationCode(String value) {
        this.reportingLocationCode = value;
    }

    private String purchaseOrderNo;

    /**
     * Getter for purchaseOrderNo
     *
     * The customer-supplied purchase order number of this transaction.
     */
    public String getPurchaseOrderNo() {
        return this.purchaseOrderNo;
    }

    /**
     * Setter for purchaseOrderNo
     *
     * The customer-supplied purchase order number of this transaction.
     */
    public void setPurchaseOrderNo(String value) {
        this.purchaseOrderNo = value;
    }

    private String referenceCode;

    /**
     * Getter for referenceCode
     *
     * A user-defined reference code for this transaction.
     */
    public String getReferenceCode() {
        return this.referenceCode;
    }

    /**
     * Setter for referenceCode
     *
     * A user-defined reference code for this transaction.
     */
    public void setReferenceCode(String value) {
        this.referenceCode = value;
    }

    private String salespersonCode;

    /**
     * Getter for salespersonCode
     *
     * The salesperson who provided this transaction. Not required.
     */
    public String getSalespersonCode() {
        return this.salespersonCode;
    }

    /**
     * Setter for salespersonCode
     *
     * The salesperson who provided this transaction. Not required.
     */
    public void setSalespersonCode(String value) {
        this.salespersonCode = value;
    }

    private TaxOverrideType taxOverrideType;

    /**
     * Getter for taxOverrideType
     *
     * If a tax override was applied to this transaction, indicates what type of tax override was applied.
     */
    public TaxOverrideType getTaxOverrideType() {
        return this.taxOverrideType;
    }

    /**
     * Setter for taxOverrideType
     *
     * If a tax override was applied to this transaction, indicates what type of tax override was applied.
     */
    public void setTaxOverrideType(TaxOverrideType value) {
        this.taxOverrideType = value;
    }

    private BigDecimal taxOverrideAmount;

    /**
     * Getter for taxOverrideAmount
     *
     * If a tax override was applied to this transaction, indicates the amount of tax that was requested by the customer.
     */
    public BigDecimal getTaxOverrideAmount() {
        return this.taxOverrideAmount;
    }

    /**
     * Setter for taxOverrideAmount
     *
     * If a tax override was applied to this transaction, indicates the amount of tax that was requested by the customer.
     */
    public void setTaxOverrideAmount(BigDecimal value) {
        this.taxOverrideAmount = value;
    }

    private String taxOverrideReason;

    /**
     * Getter for taxOverrideReason
     *
     * If a tax override was applied to this transaction, indicates the reason for the tax override.
     */
    public String getTaxOverrideReason() {
        return this.taxOverrideReason;
    }

    /**
     * Setter for taxOverrideReason
     *
     * If a tax override was applied to this transaction, indicates the reason for the tax override.
     */
    public void setTaxOverrideReason(String value) {
        this.taxOverrideReason = value;
    }

    private BigDecimal totalAmount;

    /**
     * Getter for totalAmount
     *
     * The total amount of this transaction.
     */
    public BigDecimal getTotalAmount() {
        return this.totalAmount;
    }

    /**
     * Setter for totalAmount
     *
     * The total amount of this transaction.
     */
    public void setTotalAmount(BigDecimal value) {
        this.totalAmount = value;
    }

    private BigDecimal totalExempt;

    /**
     * Getter for totalExempt
     *
     * The amount of this transaction that was exempt.
     */
    public BigDecimal getTotalExempt() {
        return this.totalExempt;
    }

    /**
     * Setter for totalExempt
     *
     * The amount of this transaction that was exempt.
     */
    public void setTotalExempt(BigDecimal value) {
        this.totalExempt = value;
    }

    private BigDecimal totalDiscount;

    /**
     * Getter for totalDiscount
     *
     * The total amount of discounts applied to all lines within this transaction.
     */
    public BigDecimal getTotalDiscount() {
        return this.totalDiscount;
    }

    /**
     * Setter for totalDiscount
     *
     * The total amount of discounts applied to all lines within this transaction.
     */
    public void setTotalDiscount(BigDecimal value) {
        this.totalDiscount = value;
    }

    private BigDecimal totalTax;

    /**
     * Getter for totalTax
     *
     * The total tax for all lines in this transaction.
    *  
    * If you used a `taxOverride` of type `taxAmount` for any lines in this transaction, this value
    * may be different than the amount of tax calculated by AvaTax. The amount of tax calculated by
    * AvaTax will be stored in the `totalTaxCalculated` field, whereas this field will contain the
    * total tax that was charged on the transaction.
    *  
    * You can compare the `totalTax` and `totalTaxCalculated` fields to check for any discrepancies
    * between an external tax calculation provider and the calculation performed by AvaTax.
     */
    public BigDecimal getTotalTax() {
        return this.totalTax;
    }

    /**
     * Setter for totalTax
     *
     * The total tax for all lines in this transaction.
    *  
    * If you used a `taxOverride` of type `taxAmount` for any lines in this transaction, this value
    * may be different than the amount of tax calculated by AvaTax. The amount of tax calculated by
    * AvaTax will be stored in the `totalTaxCalculated` field, whereas this field will contain the
    * total tax that was charged on the transaction.
    *  
    * You can compare the `totalTax` and `totalTaxCalculated` fields to check for any discrepancies
    * between an external tax calculation provider and the calculation performed by AvaTax.
     */
    public void setTotalTax(BigDecimal value) {
        this.totalTax = value;
    }

    private BigDecimal totalTaxable;

    /**
     * Getter for totalTaxable
     *
     * The portion of the total amount of this transaction that was taxable.
     */
    public BigDecimal getTotalTaxable() {
        return this.totalTaxable;
    }

    /**
     * Setter for totalTaxable
     *
     * The portion of the total amount of this transaction that was taxable.
     */
    public void setTotalTaxable(BigDecimal value) {
        this.totalTaxable = value;
    }

    private BigDecimal totalTaxCalculated;

    /**
     * Getter for totalTaxCalculated
     *
     * The amount of tax that AvaTax calculated for the transaction.
    *  
    * If you used a `taxOverride` of type `taxAmount` for any lines in this transaction, this value
    * will represent the amount that AvaTax calculated for this transaction without applying the override.
    * The field `totalTax` will be the total amount of tax after all overrides are applied.
    *  
    * You can compare the `totalTax` and `totalTaxCalculated` fields to check for any discrepancies
    * between an external tax calculation provider and the calculation performed by AvaTax.
     */
    public BigDecimal getTotalTaxCalculated() {
        return this.totalTaxCalculated;
    }

    /**
     * Setter for totalTaxCalculated
     *
     * The amount of tax that AvaTax calculated for the transaction.
    *  
    * If you used a `taxOverride` of type `taxAmount` for any lines in this transaction, this value
    * will represent the amount that AvaTax calculated for this transaction without applying the override.
    * The field `totalTax` will be the total amount of tax after all overrides are applied.
    *  
    * You can compare the `totalTax` and `totalTaxCalculated` fields to check for any discrepancies
    * between an external tax calculation provider and the calculation performed by AvaTax.
     */
    public void setTotalTaxCalculated(BigDecimal value) {
        this.totalTaxCalculated = value;
    }

    private AdjustmentReason adjustmentReason;

    /**
     * Getter for adjustmentReason
     *
     * If this transaction was adjusted, indicates the unique ID number of the reason why the transaction was adjusted.
     */
    public AdjustmentReason getAdjustmentReason() {
        return this.adjustmentReason;
    }

    /**
     * Setter for adjustmentReason
     *
     * If this transaction was adjusted, indicates the unique ID number of the reason why the transaction was adjusted.
     */
    public void setAdjustmentReason(AdjustmentReason value) {
        this.adjustmentReason = value;
    }

    private String adjustmentDescription;

    /**
     * Getter for adjustmentDescription
     *
     * If this transaction was adjusted, indicates a description of the reason why the transaction was adjusted.
     */
    public String getAdjustmentDescription() {
        return this.adjustmentDescription;
    }

    /**
     * Setter for adjustmentDescription
     *
     * If this transaction was adjusted, indicates a description of the reason why the transaction was adjusted.
     */
    public void setAdjustmentDescription(String value) {
        this.adjustmentDescription = value;
    }

    private Boolean locked;

    /**
     * Getter for locked
     *
     * If this transaction has been reported to a tax authority, this transaction is considered locked and may not be adjusted after reporting.
     */
    public Boolean getLocked() {
        return this.locked;
    }

    /**
     * Setter for locked
     *
     * If this transaction has been reported to a tax authority, this transaction is considered locked and may not be adjusted after reporting.
     */
    public void setLocked(Boolean value) {
        this.locked = value;
    }

    private String region;

    /**
     * Getter for region
     *
     * The two-or-three character ISO region code of the region for this transaction.
     */
    public String getRegion() {
        return this.region;
    }

    /**
     * Setter for region
     *
     * The two-or-three character ISO region code of the region for this transaction.
     */
    public void setRegion(String value) {
        this.region = value;
    }

    private String country;

    /**
     * Getter for country
     *
     * The two-character ISO 3166 code of the country for this transaction.
     */
    public String getCountry() {
        return this.country;
    }

    /**
     * Setter for country
     *
     * The two-character ISO 3166 code of the country for this transaction.
     */
    public void setCountry(String value) {
        this.country = value;
    }

    private Integer version;

    /**
     * Getter for version
     *
     * If this transaction was adjusted, this indicates the version number of this transaction. Incremented each time the transaction
    * is adjusted.
     */
    public Integer getVersion() {
        return this.version;
    }

    /**
     * Setter for version
     *
     * If this transaction was adjusted, this indicates the version number of this transaction. Incremented each time the transaction
    * is adjusted.
     */
    public void setVersion(Integer value) {
        this.version = value;
    }

    private String softwareVersion;

    /**
     * Getter for softwareVersion
     *
     * The software version used to calculate this transaction.
     */
    public String getSoftwareVersion() {
        return this.softwareVersion;
    }

    /**
     * Setter for softwareVersion
     *
     * The software version used to calculate this transaction.
     */
    public void setSoftwareVersion(String value) {
        this.softwareVersion = value;
    }

    private Long originAddressId;

    /**
     * Getter for originAddressId
     *
     * The unique ID number of the origin address for this transaction.
     */
    public Long getOriginAddressId() {
        return this.originAddressId;
    }

    /**
     * Setter for originAddressId
     *
     * The unique ID number of the origin address for this transaction.
     */
    public void setOriginAddressId(Long value) {
        this.originAddressId = value;
    }

    private Long destinationAddressId;

    /**
     * Getter for destinationAddressId
     *
     * The unique ID number of the destination address for this transaction.
     */
    public Long getDestinationAddressId() {
        return this.destinationAddressId;
    }

    /**
     * Setter for destinationAddressId
     *
     * The unique ID number of the destination address for this transaction.
     */
    public void setDestinationAddressId(Long value) {
        this.destinationAddressId = value;
    }

    private Date exchangeRateEffectiveDate;

    /**
     * Getter for exchangeRateEffectiveDate
     *
     * If this transaction included foreign currency exchange, this is the date as of which the exchange rate was calculated.
     */
    public Date getExchangeRateEffectiveDate() {
        return this.exchangeRateEffectiveDate;
    }

    /**
     * Setter for exchangeRateEffectiveDate
     *
     * If this transaction included foreign currency exchange, this is the date as of which the exchange rate was calculated.
     */
    public void setExchangeRateEffectiveDate(Date value) {
        this.exchangeRateEffectiveDate = value;
    }

    private BigDecimal exchangeRate;

    /**
     * Getter for exchangeRate
     *
     * The currency exchange rate from the invoice currency (`currencyCode`) to the reporting currency (`exchangeRateCurrencyCode`).
    * This only needs to be set if the invoice currency and the reporting currency are different. It defaults to 1.0.
     */
    public BigDecimal getExchangeRate() {
        return this.exchangeRate;
    }

    /**
     * Setter for exchangeRate
     *
     * The currency exchange rate from the invoice currency (`currencyCode`) to the reporting currency (`exchangeRateCurrencyCode`).
    * This only needs to be set if the invoice currency and the reporting currency are different. It defaults to 1.0.
     */
    public void setExchangeRate(BigDecimal value) {
        this.exchangeRate = value;
    }

    private Boolean isSellerImporterOfRecord;

    /**
     * Getter for isSellerImporterOfRecord
     *
     * By default, the value is null, when the value is null, the value can be set at nexus level and used.
    * If the value is not null, it will override the value at nexus level.
    *  
    * If true, this seller was considered the importer of record of a product shipped internationally.
    *  
    * If this transaction is not an international transaction, this field may be left blank.
    *  
    * The "importer of record" is liable to pay customs and import duties for products shipped internationally. If
    * you specify that the seller is the importer of record, then estimates of customs and import duties will be added
    * as tax details to the transaction. Otherwise, the buyer is considered the importer of record, and customs
    * and import duties will not be added to the tax details for this transaction.
     */
    public Boolean getIsSellerImporterOfRecord() {
        return this.isSellerImporterOfRecord;
    }

    /**
     * Setter for isSellerImporterOfRecord
     *
     * By default, the value is null, when the value is null, the value can be set at nexus level and used.
    * If the value is not null, it will override the value at nexus level.
    *  
    * If true, this seller was considered the importer of record of a product shipped internationally.
    *  
    * If this transaction is not an international transaction, this field may be left blank.
    *  
    * The "importer of record" is liable to pay customs and import duties for products shipped internationally. If
    * you specify that the seller is the importer of record, then estimates of customs and import duties will be added
    * as tax details to the transaction. Otherwise, the buyer is considered the importer of record, and customs
    * and import duties will not be added to the tax details for this transaction.
     */
    public void setIsSellerImporterOfRecord(Boolean value) {
        this.isSellerImporterOfRecord = value;
    }

    private String description;

    /**
     * Getter for description
     *
     * Description of this transaction. Field permits unicode values.
     */
    public String getDescription() {
        return this.description;
    }

    /**
     * Setter for description
     *
     * Description of this transaction. Field permits unicode values.
     */
    public void setDescription(String value) {
        this.description = value;
    }

    private String email;

    /**
     * Getter for email
     *
     * Email address associated with this transaction.
     */
    public String getEmail() {
        return this.email;
    }

    /**
     * Setter for email
     *
     * Email address associated with this transaction.
     */
    public void setEmail(String value) {
        this.email = value;
    }

    private String businessIdentificationNo;

    /**
     * Getter for businessIdentificationNo
     *
     * VAT business identification number used for this transaction.
     */
    public String getBusinessIdentificationNo() {
        return this.businessIdentificationNo;
    }

    /**
     * Setter for businessIdentificationNo
     *
     * VAT business identification number used for this transaction.
     */
    public void setBusinessIdentificationNo(String value) {
        this.businessIdentificationNo = value;
    }

    private Date modifiedDate;

    /**
     * Getter for modifiedDate
     *
     * The date/time when this record was last modified.
     */
    public Date getModifiedDate() {
        return this.modifiedDate;
    }

    /**
     * Setter for modifiedDate
     *
     * The date/time when this record was last modified.
     */
    public void setModifiedDate(Date value) {
        this.modifiedDate = value;
    }

    private Integer modifiedUserId;

    /**
     * Getter for modifiedUserId
     *
     * The user ID of the user who last modified this record.
     */
    public Integer getModifiedUserId() {
        return this.modifiedUserId;
    }

    /**
     * Setter for modifiedUserId
     *
     * The user ID of the user who last modified this record.
     */
    public void setModifiedUserId(Integer value) {
        this.modifiedUserId = value;
    }

    private Date taxDate;

    /**
     * Getter for taxDate
     *
     * Tax date for this transaction
     */
    public Date getTaxDate() {
        return this.taxDate;
    }

    /**
     * Setter for taxDate
     *
     * Tax date for this transaction
     */
    public void setTaxDate(Date value) {
        this.taxDate = value;
    }

    private ArrayList lines;

    /**
     * Getter for lines
     *
     * A list of line items in this transaction. To fetch this list, add the query string `?$include=Lines` or `?$include=Details` to your URL.
     */
    public ArrayList getLines() {
        return this.lines;
    }

    /**
     * Setter for lines
     *
     * A list of line items in this transaction. To fetch this list, add the query string `?$include=Lines` or `?$include=Details` to your URL.
     */
    public void setLines(ArrayList value) {
        this.lines = value;
    }

    private ArrayList addresses;

    /**
     * Getter for addresses
     *
     * A list of line items in this transaction. To fetch this list, add the query string `?$include=Addresses` to your URL.
    *  
    * For more information about transaction addresses, please see [Using Address Types](https://developer.avalara.com/avatax/dev-guide/customizing-transaction/address-types/)
    * in the AvaTax Developer Guide.
     */
    public ArrayList getAddresses() {
        return this.addresses;
    }

    /**
     * Setter for addresses
     *
     * A list of line items in this transaction. To fetch this list, add the query string `?$include=Addresses` to your URL.
    *  
    * For more information about transaction addresses, please see [Using Address Types](https://developer.avalara.com/avatax/dev-guide/customizing-transaction/address-types/)
    * in the AvaTax Developer Guide.
     */
    public void setAddresses(ArrayList value) {
        this.addresses = value;
    }

    private ArrayList locationTypes;

    /**
     * Getter for locationTypes
     *
     * A list of location types in this transaction. To fetch this list, add the query string `?$include=Addresses` to your URL.
     */
    public ArrayList getLocationTypes() {
        return this.locationTypes;
    }

    /**
     * Setter for locationTypes
     *
     * A list of location types in this transaction. To fetch this list, add the query string `?$include=Addresses` to your URL.
     */
    public void setLocationTypes(ArrayList value) {
        this.locationTypes = value;
    }

    private ArrayList summary;

    /**
     * Getter for summary
     *
     * Contains a summary of tax on this transaction.
     */
    public ArrayList getSummary() {
        return this.summary;
    }

    /**
     * Setter for summary
     *
     * Contains a summary of tax on this transaction.
     */
    public void setSummary(ArrayList value) {
        this.summary = value;
    }

    private ArrayList taxDetailsByTaxType;

    /**
     * Getter for taxDetailsByTaxType
     *
     * Contains the tax details per tax type
     */
    public ArrayList getTaxDetailsByTaxType() {
        return this.taxDetailsByTaxType;
    }

    /**
     * Setter for taxDetailsByTaxType
     *
     * Contains the tax details per tax type
     */
    public void setTaxDetailsByTaxType(ArrayList value) {
        this.taxDetailsByTaxType = value;
    }

    private ArrayList parameters;

    /**
     * Getter for parameters
     *
     * Contains a list of extra parameters that were set when the transaction was created.
     */
    public ArrayList getParameters() {
        return this.parameters;
    }

    /**
     * Setter for parameters
     *
     * Contains a list of extra parameters that were set when the transaction was created.
     */
    public void setParameters(ArrayList value) {
        this.parameters = value;
    }

    private ArrayList userDefinedFields;

    /**
     * Getter for userDefinedFields
     *
     * Custom user fields/flex fields for this transaction.
     */
    public ArrayList getUserDefinedFields() {
        return this.userDefinedFields;
    }

    /**
     * Setter for userDefinedFields
     *
     * Custom user fields/flex fields for this transaction.
     */
    public void setUserDefinedFields(ArrayList value) {
        this.userDefinedFields = value;
    }

    private ArrayList messages;

    /**
     * Getter for messages
     *
     * List of informational and warning messages regarding this API call. These messages are only relevant to the current API call.
     */
    public ArrayList getMessages() {
        return this.messages;
    }

    /**
     * Setter for messages
     *
     * List of informational and warning messages regarding this API call. These messages are only relevant to the current API call.
     */
    public void setMessages(ArrayList value) {
        this.messages = value;
    }

    private ArrayList invoiceMessages;

    /**
     * Getter for invoiceMessages
     *
     * Invoice messages associated with this document. Currently, this stores legally-required VAT messages.
     */
    public ArrayList getInvoiceMessages() {
        return this.invoiceMessages;
    }

    /**
     * Setter for invoiceMessages
     *
     * Invoice messages associated with this document. Currently, this stores legally-required VAT messages.
     */
    public void setInvoiceMessages(ArrayList value) {
        this.invoiceMessages = value;
    }

    private String customerSupplierName;

    /**
     * Getter for customerSupplierName
     *
     * The name of the supplier / exporter / seller.
    * For sales doctype this will be the name of your own company for which you are reporting.
    * For purchases doctype this will be the name of the supplier you have purchased from.
     */
    public String getCustomerSupplierName() {
        return this.customerSupplierName;
    }

    /**
     * Setter for customerSupplierName
     *
     * The name of the supplier / exporter / seller.
    * For sales doctype this will be the name of your own company for which you are reporting.
    * For purchases doctype this will be the name of the supplier you have purchased from.
     */
    public void setCustomerSupplierName(String value) {
        this.customerSupplierName = value;
    }

    private Integer dataSourceId;

    /**
     * Getter for dataSourceId
     *
     * The Id of the datasource from which this transaction originated.
    * This value will be overridden by the system to take the datasource Id from the call header.
     */
    public Integer getDataSourceId() {
        return this.dataSourceId;
    }

    /**
     * Setter for dataSourceId
     *
     * The Id of the datasource from which this transaction originated.
    * This value will be overridden by the system to take the datasource Id from the call header.
     */
    public void setDataSourceId(Integer value) {
        this.dataSourceId = value;
    }

    private DeliveryTerms deliveryTerms;

    /**
     * Getter for deliveryTerms
     *
     * Delivery Terms (or Incoterms) refer to agreed-upon conditions between a buyer and a seller for the delivery of goods. They are three-letter 
    * trade terms that describe the practical arrangements for the delivery of goods from sellers to buyers and set out the obligations, costs, and 
    * risks between the two parties.
    * The DeliveryTerms field determines who acts as the Importer of Record and who arranges the Transport of the goods when this 
    * information is not separately sent to AvaTax in the request. When used in conjunction with isSellerImporterOfRecord, this parameter can also 
    * influence whether AvaTax includes Import Duty and Tax in the transaction totals. If the fields for transport or isSellerImporterOfRecord are 
    * passed in the request and conflict with the DeliveryTerms, the values provided in the first will take priority over the DeliveryTerms 
    * parameter. If neither transport nor isSellerImporterOfRecord is passed in the request and DeliveryTerms is passed, AvaTax will determine who 
    * acts as Importer of Record and who arranges the Transport of the goods based on the specified DeliveryTerms. If none of these fields is 
    * passed, AvaTax will keep the current behavior and default transport to "Seller" for goods and isSellerImporterOfRecord to "False" (i.e., the 
    * AvaTax user does not act as Importer of record)."
    * Finally, this field is also used for reports.
    * 
    * The Delivery Terms that the user can pass are the following:
    * 1. Ex Works (EXW)
    * 2. Free Carrier (FCA)
    * 3. Carrier and Insurance Paid to (CIP)
    * 4. Carriage Paid To (CPT)
    * 5. Delivered at Place (DAP)
    * 6. Delivered at Place Unloaded (DPU)
    * 7. Delivered Duty Paid (DDP)
    * 8. Free Alongside Ship (FAS)
    * 9. Free on Board (FOB)
    * 10. Cost and Freight (CFR)
    * 11. Cost, Insurance and Freight (CIF)
    * 
    * DAP and DDP are two delivery terms that indicate that Import Duty and Tax should be included in the transaction total.
     */
    public DeliveryTerms getDeliveryTerms() {
        return this.deliveryTerms;
    }

    /**
     * Setter for deliveryTerms
     *
     * Delivery Terms (or Incoterms) refer to agreed-upon conditions between a buyer and a seller for the delivery of goods. They are three-letter 
    * trade terms that describe the practical arrangements for the delivery of goods from sellers to buyers and set out the obligations, costs, and 
    * risks between the two parties.
    * The DeliveryTerms field determines who acts as the Importer of Record and who arranges the Transport of the goods when this 
    * information is not separately sent to AvaTax in the request. When used in conjunction with isSellerImporterOfRecord, this parameter can also 
    * influence whether AvaTax includes Import Duty and Tax in the transaction totals. If the fields for transport or isSellerImporterOfRecord are 
    * passed in the request and conflict with the DeliveryTerms, the values provided in the first will take priority over the DeliveryTerms 
    * parameter. If neither transport nor isSellerImporterOfRecord is passed in the request and DeliveryTerms is passed, AvaTax will determine who 
    * acts as Importer of Record and who arranges the Transport of the goods based on the specified DeliveryTerms. If none of these fields is 
    * passed, AvaTax will keep the current behavior and default transport to "Seller" for goods and isSellerImporterOfRecord to "False" (i.e., the 
    * AvaTax user does not act as Importer of record)."
    * Finally, this field is also used for reports.
    * 
    * The Delivery Terms that the user can pass are the following:
    * 1. Ex Works (EXW)
    * 2. Free Carrier (FCA)
    * 3. Carrier and Insurance Paid to (CIP)
    * 4. Carriage Paid To (CPT)
    * 5. Delivered at Place (DAP)
    * 6. Delivered at Place Unloaded (DPU)
    * 7. Delivered Duty Paid (DDP)
    * 8. Free Alongside Ship (FAS)
    * 9. Free on Board (FOB)
    * 10. Cost and Freight (CFR)
    * 11. Cost, Insurance and Freight (CIF)
    * 
    * DAP and DDP are two delivery terms that indicate that Import Duty and Tax should be included in the transaction total.
     */
    public void setDeliveryTerms(DeliveryTerms value) {
        this.deliveryTerms = value;
    }

    private APStatus apStatusCode;

    /**
     * Getter for apStatusCode
     *
     * Users can set tolerance or threshold limits on transactions and inform users of appropriate actions to take
    * if a transaction falls outside of these values. 
    * An Accounts Payable (AP) status code indicates the action that needs to be taken when the tolerance/threshold 
    * falls above or below the tolerance/threshold limits.
    *  
    * Available AP status codes are:
    * 1. NoAccrualMatch
    * 2. NoAccrualUndercharge
    * 3. NoAccrualOvercharge
    * 4. NoAccrualAmountThresholdNotMet
    * 5. NoAccrualTrustedVendor
    * 6. NoAccrualExemptedCostCenter
    * 7. NoAccrualExemptedItem
    * 8. NoAccrualExemptedVendor
    * 9. NoAccrualRejectMatch
    * 10. NoAccrualRejectUndercharge
    * 11. NoAccrualShortPayAvalaraCalculated
    * 12. NoAccrualRejectOvercharge
    * 13. NoAccrualExemptedGLAccount
    * 14. AccruedUndercharge
    * 15. AccruedVendor
    * 16. AccruedShortPayItemsMatch
    * 17. AccruedShortPayItemsUndercharge
    * 18. AccruedShortPayItemsOvercharge
    * 19. NeedReviewUndercharge
    * 20. NeedReviewVendor
    * 21. NeedReviewMatch
    * 22. NeedReviewOvercharge
    * 23. PendingAccrualVendor
    * 24. PendingAccrualUndercharge
    * 25. PendingShortPayItemsUndercharge
    * 26. PendingShortPayItemsMatch
    * 27. PendingShortPayItemsOvercharge
     */
    public APStatus getApStatusCode() {
        return this.apStatusCode;
    }

    /**
     * Setter for apStatusCode
     *
     * Users can set tolerance or threshold limits on transactions and inform users of appropriate actions to take
    * if a transaction falls outside of these values. 
    * An Accounts Payable (AP) status code indicates the action that needs to be taken when the tolerance/threshold 
    * falls above or below the tolerance/threshold limits.
    *  
    * Available AP status codes are:
    * 1. NoAccrualMatch
    * 2. NoAccrualUndercharge
    * 3. NoAccrualOvercharge
    * 4. NoAccrualAmountThresholdNotMet
    * 5. NoAccrualTrustedVendor
    * 6. NoAccrualExemptedCostCenter
    * 7. NoAccrualExemptedItem
    * 8. NoAccrualExemptedVendor
    * 9. NoAccrualRejectMatch
    * 10. NoAccrualRejectUndercharge
    * 11. NoAccrualShortPayAvalaraCalculated
    * 12. NoAccrualRejectOvercharge
    * 13. NoAccrualExemptedGLAccount
    * 14. AccruedUndercharge
    * 15. AccruedVendor
    * 16. AccruedShortPayItemsMatch
    * 17. AccruedShortPayItemsUndercharge
    * 18. AccruedShortPayItemsOvercharge
    * 19. NeedReviewUndercharge
    * 20. NeedReviewVendor
    * 21. NeedReviewMatch
    * 22. NeedReviewOvercharge
    * 23. PendingAccrualVendor
    * 24. PendingAccrualUndercharge
    * 25. PendingShortPayItemsUndercharge
    * 26. PendingShortPayItemsMatch
    * 27. PendingShortPayItemsOvercharge
     */
    public void setApStatusCode(APStatus value) {
        this.apStatusCode = value;
    }

    private String apStatus;

    /**
     * Getter for apStatus
     *
     * An Accounts Payable (AP) status indicates an action that needs to be taken when the tolerance amount falls 
    * above or below certain threshold limits.
     */
    public String getApStatus() {
        return this.apStatus;
    }

    /**
     * Setter for apStatus
     *
     * An Accounts Payable (AP) status indicates an action that needs to be taken when the tolerance amount falls 
    * above or below certain threshold limits.
     */
    public void setApStatus(String value) {
        this.apStatus = value;
    }

    /**
     * Returns a JSON string representation of TransactionModel
     */
    @Override
    public String toString() {
        return JsonSerializer.SerializeObject(this);
    }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy