Avalara Avatax Certified Connector

account_avatax_oca
REPOSITORY
REPOSITORYOCA/account-fiscal-rule
GIT
GIThttps://github.com/OCA/account-fiscal-rule.git
GIT FOLDER
GIT FOLDERhttps://github.com/OCA/account-fiscal-rule/tree/18.0/account_avatax_oca
VERSION
VERSION 1.1.1
CATEGORY
CATEGORYAccounting
LICENSE
LICENSEAGPL-3
APPLICATION
APPLICATIONYes
AUTO-INSTALLABLE
AUTO-INSTALLABLENo
AUTHORS
AUTHORSOdoo Community Association (OCA), Open Source Integrators, Sodexis, Fabrice Henrion
MAINTAINERS
MAINTAINERSOdoo Community Association (OCA), Open Source Integrators, Sodexis, Fabrice Henrion
COMMITTERS
COMMITTERSDaniel Reis, Weblate, OCA-git-bot, Don Kendall, oca-ci, kobros-tech
WEBSITE
WEBSITEhttps://github.com/OCA/account-fiscal-rule
LAST TRACKING UPDATE
LAST TRACKING UPDATE2026-07-06 19:30:05
ODOO DEPENDENCIES
ODOO DEPENDENCIES odoo/odoo:
    - sale_stock
    - sale
    - sales_team
    - base
    - mail
    - base_setup
    - web
    - bus
    - web_tour
    - html_editor
    - account_payment
    - account
    - onboarding
    - product
    - uom
    - analytic
    - portal
    - web_editor
    - http_routing
    - auth_signup
    - digest
    - resource
    - payment
    - utm
    - stock_account
    - stock
    - barcodes_gs1_nomenclature
    - barcodes
    - base_geolocalize
PYTHON DEPENDENCIES
PYTHON DEPENDENCIES Avalara
SYSTEM DEPENDENCIES
SYSTEM DEPENDENCIES Not have
DESCRIPTION
DESCRIPTION
**AVALARA CERTIFICATION PENDING!**

Odoo provides integration with AvaTax, a tax solution software by
Avalara which includes sales tax calculation for all US states and
territories and all Canadian provinces and territories (including GST,
PST, and HST).

This module is capable of automatically detecting origin (Output
Warehouse) and destination (Client Address), then calculating and
reporting taxes to the user's Avalara account as well as a recording the
correct sales taxes for the validated addresses within Odoo ERP.

This module is compatible both with the Odoo Enterprise and Odoo
Community editions.

An Avatax account is needed. Account information to access the Avatax
dashboard can be obtained through the Avalara website here:
<https://www.avalara.com/products/calculations.html>

Once configured, the module operates in the background and performs
calculations and reporting seamlessly to the AvaTax server.

This guide includes instructions for the following elements:

- Activating your organization's AvaTax account and downloading the
  product
- Entering the AvaTax credentials into your Odoo database and
  configuring it to use AvaTax services and features within Odoo

Note: Test the module before deploying in live environment. All changes
to the AvaTax settings must be performed by a user with administrative
access rights.

**IMPORTANT - resolving name conflict with Odoo EE**

Avatax support was added to Odoo EE 14 and 15. Unfortunately the module
names used are the same as the OCA ones, and because of this name
collision the OCA modules were forced to change name.

The main module was renamed from `account_avatax` (now used by Odoo EE)
to `account_avatax_oca`.

To apply this change in your odoo database and continue using the OCA
Avalara certified connector:

> 1.  Ensure you have the latest version from the OCA, and you see `account_avatax_oca`  
>     in your Apps list.
>
> 2.  Install the new `account_avatax_oca` module
>
> 3.  Unistall the `account_avatax` module
>
> 4.  Confirm that your configurations were kept safe, in particular:  
>     Avatax API, "Avatax" default Fiscal Position, and "Avatax" default
>     Tax record.

Code Analysis

Views touched (14)
XML IDNameModelTypeStatus
exemption_code_tree_view exemption.code.tree.view exemption.code list New
view_avalara_salestax_address_validate Address Validatation avalara.salestax.address.validate form New
view_avalara_salestax_form avalara.salestax.form avalara.salestax form New
view_avalara_salestax_getcompany avalara.salestax.getcompany form New
view_avalara_salestax_ping Test Connection avalara.salestax.ping form New
view_avalara_salestax_tree avalara.salestax.tree avalara.salestax list New
view_fiscal_position_form_avatax account.fiscal.position form add Avatax account.fiscal.position field Inherits account.view_account_position_form
view_move_form_inherit_1 account.move.form.inherit account.move button Inherits account.view_move_form
view_partner_details_form_inherit1 res.partner.details.form.inherit1 res.partner xpath Inherits base.view_partner_form
view_product_category_form_avatax_inherit product.category.form.avatax.inherit product.category xpath Inherits product.product_category_form_view
view_product_normal_form_avatax_inherit product.normal.form.avatax product.template xpath Inherits product.product_template_form_view
view_product_tax_code_form product.tax.code.form product.tax.code form New
view_product_tax_code_tree product.tax.code.tree product.tax.code list New
view_tax_form_avatax account.tax.form.avatax account.tax field Inherits account.view_tax_form
Models touched (14)

New fields (1)
  • is_avatax Boolean
    string='Use Avatax API'
Public methods (0)

No public methods.

New fields (15)
  • avatax_amount Float
    copy=False string='AvaTax'
  • avatax_request_log Text
    copy=False readonly=True args: 'Avatax API Request Log'
  • avatax_response_log Text
    copy=False readonly=True args: 'Avatax API Response Log'
  • calculate_tax_on_save Boolean
  • exemption_code Char
    compute=_compute_onchange_exemption help='It show the customer exemption number' readonly=False store=True args: 'Exemption Number'
  • exemption_code_id Many2one → exemption.code
    compute=_compute_onchange_exemption help='It show the customer exemption code' readonly=False store=True args: 'exemption.code', 'Exemption Code'
  • exemption_locked Boolean
    help="Exemption code won't be automatically changed, for instance, when changing the Customer."
  • hide_exemption Boolean
    compute=_compute_hide_exemption default=<expr> help='Uncheck the this field to show exemption fields on SO/Invoice form view. Also, it will show Tax based on shipping address button' args: 'Hide Exemption & Tax Based on shipping address'
  • invoice_doc_no Char
    help='Reference of the invoice' readonly=True args: 'Source/Ref Invoice No'
  • is_avatax Boolean
    related='fiscal_position_id.is_avatax'
  • location_code Char
  • so_partner_id Many2one → res.partner
    comodel_name='res.partner' string='SO Partner'
  • tax_address_id Many2one → res.partner
    compute='_compute_tax_address_id' args: 'res.partner', 'Tax Shipping Address'
  • tax_on_shipping_address Boolean
    default=True args: 'Tax based on shipping address'
  • warehouse_id Many2one → stock.warehouse
    args: 'stock.warehouse', 'Warehouse'
Public methods (10)
  • avatax_commit_taxes(self)
  • avatax_compute_taxes(self, commit=False)
    Called from Invoice's Action menu. Forces computation of the Invoice taxes
  • button_draft(self)
    Sets invoice to Draft, either from the Posted or Cancelled states
  • create(self, vals_list)
    @api.model_create_multi
  • get_origin_tax_date(self)
  • is_avatax_calculated(self)
    Only apply Avatax for these types of documents. Can be extended to support other types.
  • onchange_avatax_calculation(self)
    @api.onchange('invoice_line_ids', 'warehouse_id', 'tax_address_id', 'tax_on_shipping_address', 'partner_id')
  • onchange_reset_avatax_amount(self)
    @api.onchange('tax_address_id', 'fiscal_position_id')
    When changing quantities or prices, reset the Avatax computed amount. The Odoo computed tax amount will then be shown, as a reference. The Avatax amount will be recomputed upon document validation.
  • onchange_warehouse_id(self)
    @api.onchange('warehouse_id')
  • write(self, vals)

New fields (1)
  • avatax_amt_line Float
    copy=False string='AvaTax Line'
Public methods (1)
  • onchange_reset_tax_amt(self)
    @api.onchange('price_unit', 'discount', 'quantity')
    When changing quantities or prices, reset the Avatax computed amount. The Odoo computed tax amount will then be shown, as a reference. The Avatax amount will be recomputed upon document validation.

New fields (1)
  • is_avatax Boolean
Public methods (2)
  • compute_all(self, price_unit, currency=None, quantity=1.0, product=None, partner=None, is_refund=False, handle_price_include=True, include_caba_tags=False, fixed_multiplicator=1)
    Adopted as the central point to inject custom tax computations. Avatax logic is triggered if the "avatax_invoice" is set in the context. To find the Avatax amount, we search an Invoice line with the same quantity, price and product.
  • get_avalara_tax(self, tax_rate, doc_type)
    @api.model

New fields (21)
  • account_number Char
    help='Account Number provided by AvaTax' name='Account ID' required=True
  • active Boolean
    default=True help='Uncheck the active field to hide the record'
  • auto_generate_customer_code Boolean
    default=True help="This will generate customer code for the customer used in the transaction, if it doesn't have one already. Each code is unique per customer. When this is disabled, you will have to manually go to each customer and manually generate their customer code. This is required for Avatax and is only generated one time." args: 'Automatically generate missing customer code'
  • company_code Char
    default='DEFAULT' help='The company code as defined in the Admin Console of AvaTax' required=True
  • company_id Many2one → res.company
    default=<expr> help='Company which has subscribed to the AvaTax service' required=True args: 'res.company', 'Company'
  • company_partner_id Many2one
    related='company_id.partner_id' string='Company Address'
  • country_ids Many2many → res.country
    default=_get_avatax_supported_countries help='Countries where address validation will be used' args: 'res.country', 'avalara_salestax_country_rel', 'avalara_salestax_id', 'country_id', 'Countries'
  • disable_address_validation Boolean
    help='Disables the ability to perform address validation'
  • disable_tax_calculation Boolean
    help='No tax calculation requests will be sent to the AvaTax web service.' args: 'Disable AvaTax Calculation'
  • disable_tax_reporting Boolean
    help='No transactions will be recorded (commited) to the Avatax service.' args: 'Disable Document Recording/Commiting'
  • force_address_validation Boolean
    help='Only compute taxes if addresses were validated by the Avatax service' args: 'Require Validated Addresses'
  • hide_exemption Boolean
    default=False help='Uncheck the this field to show exemption fields on SO/Invoice form view. Also, it will show Tax based on shipping address button' args: 'Hide Exemption & Tax Based on shipping address'
  • invoice_calculate_tax Boolean
    help="Automatically triggers API to calculate tax If changes made onInvoice's warehouse_id, tax_on_shipping_address, Invoice line's price_unit, discount, quantity" args: 'Auto Calculate Tax on Invoice Save'
  • license_key Char
    help='License Key provided by AvaTax' required=True
  • logging Boolean
    help='Enables detailed AvaTax transaction logging within application' args: 'Log API Requests'
  • request_timeout Integer
    default=300 help='Defines AvaTax request time out length, AvaTax best practices prescribes default setting of 300 seconds'
  • result_in_uppercase Boolean
    help='The address validation results are returned in in upper case' args: 'Return validation results in upper case'
  • service_url Selection
    default='https://rest.avatax.com/api/v2' help='The url to connect with' string='Service URL' args: [('https://rest.avatax.com/api/v2', 'Production (REST API)'), ('https://sandbox-rest.avatax.com/api/v2', 'Sandbox (REST API)')]
  • upc_enable Boolean
    help='Allows ean13 to be reported in place of Item Reference as upc identifier.' args: 'Enable UPC Taxability'
  • use_so_partner_id Boolean
    help="Use Sales Order's Customer field to determine Taxable Status on the Customer Invoice. If no Sales Order exists, Customer field on the invoice form view will be used instead" string='Use Sale Customer Code on Invoice'
  • validation_on_save Boolean
    help='Automatically validates addresses when they are created or modified' args: 'Automatic Address Validation'
Public methods (6)
  • commit_transaction(self, doc_code, doc_type)
  • create_transaction(self, doc_date, doc_code, doc_type, partner, ship_from_address, shipping_address, lines, user=None, exemption_number=None, exemption_code_name=None, commit=False, invoice_date=None, reference_code=None, location_code=None, is_override=None, currency_id=None, ignore_error=None, log_to_record=False)
  • get_avatax_rest_service(self)
  • ping(self)
  • unvoid_transaction(self, doc_code, doc_type)
  • void_transaction(self, doc_code, doc_type)

New fields (16)
  • city Char
  • country Char
  • date_validation Date
  • original_city Char
    readonly=True
  • original_country Char
    readonly=True
  • original_state Char
    readonly=True
  • original_street Char
    readonly=True
  • original_street2 Char
    readonly=True
  • original_zip Char
    readonly=True
  • partner_latitude Float
    args: 'Latitude'
  • partner_longitude Float
    args: 'Longitude'
  • state Char
  • street Char
  • street2 Char
  • validation_method Char
  • zip Char
Public methods (2)
  • accept_valid_address(self)
    Updates the existing address with the valid address returned by the service.
  • default_get(self, fields)
    @api.model
    Returns the default values for the fields.

New fields (1)
  • company_code Selection
    selection=_get_company_codes string='Select a Company'
Public methods (1)
  • action_set_code(self)

New fields (1)
  • name Char
Public methods (2)
  • default_get(self, fields)
    @api.model
  • ping(self)
    @api.model
    Call the AvaTax's Ping Service to test the connection.

New fields (2)
  • code Char
  • name Char
    required=True
Public methods (0)

No public methods.

New fields (2)
  • applicable_tax_code_id Many2one → product.tax.code
    compute=_compute_applicable_tax_code args: 'product.tax.code', 'Applicable AvaTax Code'
  • tax_code_id Many2one → product.tax.code
    args: 'product.tax.code', 'AvaTax Code'
Public methods (0)

No public methods.

New fields (3)
  • description Char
  • name Char
    required=True args: 'Code'
  • type Selection
    help='Type of tax code as defined in AvaTax' required=True args: [('product', 'Product'), ('freight', 'Freight'), ('service', 'Service'), ('digital', 'Digital'), ('other', 'Other')]
Public methods (0)

No public methods.

New fields (2)
  • applicable_tax_code_id Many2one → product.tax.code
    compute=_compute_applicable_tax_code args: 'product.tax.code', 'Applicable AvaTax Code'
  • tax_code_id Many2one → product.tax.code
    help='AvaTax Product Tax Code' args: 'product.tax.code', 'Product AvaTax Code'
Public methods (0)

No public methods.

New fields (0)

No new fields.

Public methods (1)
  • get_avatax_config_company(self)
    Returns the AvaTax configuration for the Company

New fields (11)
  • customer_code Char
    copy=False
  • date_validation Date
    copy=False help='The date the address was last validated by AvaTax and accepted' readonly=True args: 'Last Validation Date'
  • exemption_code_id Many2one → exemption.code
    args: 'exemption.code', 'Exemption Code (Deprecated)'
  • exemption_number Char
    args: 'Exemption Number (Deprecated)'
  • property_exemption_code_id Many2one → exemption.code
    company_dependent=True help='The type of exemption granted' args: 'exemption.code', 'Exemption Code'
  • property_exemption_country_wide Boolean
    help='When enabled, the delivery address State is irrelevant when looking up the exemption status, meaning that the exemption is considered applicable for all states' args: 'Exemption Applies Country Wide'
  • property_exemption_number Char
    company_dependent=True help='The State identification number relevant fot the exemption' args: 'Exemption Number'
  • property_tax_exempt Boolean
    company_dependent=True help='This company or address can claim for tax exemption' args: 'Is Tax Exempt'
  • tax_exempt Boolean
    args: 'Is Tax Exempt (Deprecated))'
  • validated_on_save Boolean
    help='Indicates if the address is already validated on save before calling the wizard'
  • validation_method Selection
    copy=False help='It gets populated when the address is validated by the method' readonly=True args: [('avatax', 'Avalara'), ('other', 'Other')], 'Address Validation Method'
Public methods (10)
  • button_avatax_validate_address(self)
    Method is used to verify of state and country
  • check_exemption_number(self)
    @api.depends('property_tax_exempt', 'property_exemption_code_id', 'property_exemption_number')
    When tax exempt check then at least exemption number or exemption code should be filled
  • create(self, vals_list)
    @api.model_create_multi
  • generate_cust_code(self)
    Auto populate customer code
  • get_country_from_code(self, code)
    Returns the country from the code.
  • get_state_from_code(self, state_code, country_code)
    Returns the state from the code.
  • get_valid_address_vals(self, validation_on_save=False)
  • multi_address_validation(self, validation_on_save=False)
  • onchange_tax_exemption(self)
    @api.onchange('tax_exempt')
  • write(self, vals)
REPOSITORY
REPOSITORYOCA/account-fiscal-rule
GIT
GIThttps://github.com/OCA/account-fiscal-rule.git
GIT FOLDER
GIT FOLDERhttps://github.com/OCA/account-fiscal-rule/tree/17.0/account_avatax_oca
VERSION
VERSION 1.4.1
CATEGORY
CATEGORYAccounting
LICENSE
LICENSEAGPL-3
APPLICATION
APPLICATIONYes
AUTO-INSTALLABLE
AUTO-INSTALLABLENo
AUTHORS
AUTHORSOdoo Community Association (OCA), Open Source Integrators, Sodexis, Fabrice Henrion
MAINTAINERS
MAINTAINERSOdoo Community Association (OCA), Open Source Integrators, Sodexis, Fabrice Henrion
COMMITTERS
COMMITTERSPedro M. Baeza, Daniel Reis, Weblate, OCA-git-bot, oca-ci, kobros-tech, Nikul-OSI
WEBSITE
WEBSITEhttps://github.com/OCA/account-fiscal-rule
LAST TRACKING UPDATE
LAST TRACKING UPDATE2026-07-06 19:19:58
ODOO DEPENDENCIES
ODOO DEPENDENCIES odoo/odoo:
    - sale_stock
    - sale
    - sales_team
    - base
    - mail
    - base_setup
    - web
    - bus
    - web_tour
    - account_payment
    - account
    - onboarding
    - product
    - uom
    - analytic
    - portal
    - web_editor
    - http_routing
    - auth_signup
    - digest
    - resource
    - payment
    - utm
    - stock_account
    - stock
    - barcodes_gs1_nomenclature
    - barcodes
    - base_geolocalize
PYTHON DEPENDENCIES
PYTHON DEPENDENCIES Avalara
SYSTEM DEPENDENCIES
SYSTEM DEPENDENCIES Not have
DESCRIPTION
DESCRIPTION
**AVALARA CERTIFICATION PENDING!**

Odoo provides integration with AvaTax, a tax solution software by
Avalara which includes sales tax calculation for all US states and
territories and all Canadian provinces and territories (including GST,
PST, and HST).

This module is capable of automatically detecting origin (Output
Warehouse) and destination (Client Address), then calculating and
reporting taxes to the user's Avalara account as well as a recording the
correct sales taxes for the validated addresses within Odoo ERP.

This module is compatible both with the Odoo Enterprise and Odoo
Community editions.

An Avatax account is needed. Account information to access the Avatax
dashboard can be obtained through the Avalara website here:
<https://www.avalara.com/products/calculations.html>

Once configured, the module operates in the background and performs
calculations and reporting seamlessly to the AvaTax server.

This guide includes instructions for the following elements:

- Activating your organization's AvaTax account and downloading the
  product
- Entering the AvaTax credentials into your Odoo database and
  configuring it to use AvaTax services and features within Odoo

Note: Test the module before deploying in live environment. All changes
to the AvaTax settings must be performed by a user with administrative
access rights.

**IMPORTANT - resolving name conflict with Odoo EE**

Avatax support was added to Odoo EE 14 and 15. Unfortunately the module
names used are the same as the OCA ones, and because of this name
collision the OCA modules were forced to change name.

The main module was renamed from `account_avatax` (now used by Odoo EE)
to `account_avatax_oca`.

To apply this change in your odoo database and continue using the OCA
Avalara certified connector:

> 1.  Ensure you have the latest version from the OCA, and you see `account_avatax_oca`  
>     in your Apps list.
>
> 2.  Install the new `account_avatax_oca` module
>
> 3.  Unistall the `account_avatax` module
>
> 4.  Confirm that your configurations were kept safe, in particular:  
>     Avatax API, "Avatax" default Fiscal Position, and "Avatax" default
>     Tax record.

Code Analysis

Views touched (14)
XML IDNameModelTypeStatus
exemption_code_tree_view exemption.code.tree.view exemption.code tree New
view_avalara_salestax_address_validate Address Validatation avalara.salestax.address.validate form New
view_avalara_salestax_form avalara.salestax.form avalara.salestax form New
view_avalara_salestax_getcompany avalara.salestax.getcompany form New
view_avalara_salestax_ping Test Connection avalara.salestax.ping form New
view_avalara_salestax_tree avalara.salestax.tree avalara.salestax tree New
view_fiscal_position_form_avatax account.fiscal.position form add Avatax account.fiscal.position field Inherits account.view_account_position_form
view_move_form_inherit_1 account.move.form.inherit account.move button Inherits account.view_move_form
view_partner_details_form_inherit1 res.partner.details.form.inherit1 res.partner xpath Inherits base.view_partner_form
view_product_category_form_avatax_inherit product.category.form.avatax.inherit product.category xpath Inherits product.product_category_form_view
view_product_normal_form_avatax_inherit product.normal.form.avatax product.template xpath Inherits product.product_template_form_view
view_product_tax_code_form product.tax.code.form product.tax.code form New
view_product_tax_code_tree product.tax.code.tree product.tax.code tree New
view_tax_form_avatax account.tax.form.avatax account.tax field Inherits account.view_tax_form
Models touched (14)

New fields (1)
  • is_avatax Boolean
    string='Use Avatax API'
Public methods (0)

No public methods.

New fields (15)
  • avatax_amount Float
    copy=False string='AvaTax'
  • avatax_request_log Text
    copy=False readonly=True args: 'Avatax API Request Log'
  • avatax_response_log Text
    copy=False readonly=True args: 'Avatax API Response Log'
  • calculate_tax_on_save Boolean
  • exemption_code Char
    compute=_compute_onchange_exemption help='It show the customer exemption number' readonly=False store=True args: 'Exemption Number'
  • exemption_code_id Many2one → exemption.code
    compute=_compute_onchange_exemption help='It show the customer exemption code' readonly=False store=True args: 'exemption.code', 'Exemption Code'
  • exemption_locked Boolean
    help="Exemption code won't be automatically changed, for instance, when changing the Customer."
  • hide_exemption Boolean
    compute=_compute_hide_exemption default=<expr> help='Uncheck the this field to show exemption fields on SO/Invoice form view. Also, it will show Tax based on shipping address button' args: 'Hide Exemption & Tax Based on shipping address'
  • invoice_doc_no Char
    help='Reference of the invoice' readonly=True args: 'Source/Ref Invoice No'
  • is_avatax Boolean
    related='fiscal_position_id.is_avatax'
  • location_code Char
  • so_partner_id Many2one → res.partner
    comodel_name='res.partner' string='SO Partner'
  • tax_address_id Many2one → res.partner
    compute='_compute_tax_address_id' args: 'res.partner', 'Tax Shipping Address'
  • tax_on_shipping_address Boolean
    default=True args: 'Tax based on shipping address'
  • warehouse_id Many2one → stock.warehouse
    args: 'stock.warehouse', 'Warehouse'
Public methods (10)
  • avatax_commit_taxes(self)
  • avatax_compute_taxes(self, commit=False)
    Called from Invoice's Action menu. Forces computation of the Invoice taxes
  • button_draft(self)
    Sets invoice to Draft, either from the Posted or Cancelled states
  • create(self, vals_list)
    @api.model_create_multi
  • get_origin_tax_date(self)
  • is_avatax_calculated(self)
    Only apply Avatax for these types of documents. Can be extended to support other types.
  • onchange_avatax_calculation(self)
    @api.onchange('invoice_line_ids', 'warehouse_id', 'tax_address_id', 'tax_on_shipping_address', 'partner_id')
  • onchange_reset_avatax_amount(self)
    @api.onchange('tax_address_id', 'fiscal_position_id')
    When changing quantities or prices, reset the Avatax computed amount. The Odoo computed tax amount will then be shown, as a reference. The Avatax amount will be recomputed upon document validation.
  • onchange_warehouse_id(self)
    @api.onchange('warehouse_id')
  • write(self, vals)

New fields (1)
  • avatax_amt_line Float
    copy=False string='AvaTax Line'
Public methods (1)
  • onchange_reset_tax_amt(self)
    @api.onchange('price_unit', 'discount', 'quantity')
    When changing quantities or prices, reset the Avatax computed amount. The Odoo computed tax amount will then be shown, as a reference. The Avatax amount will be recomputed upon document validation.

New fields (1)
  • is_avatax Boolean
Public methods (2)
  • compute_all(self, price_unit, currency=None, quantity=1.0, product=None, partner=None, is_refund=False, handle_price_include=True, include_caba_tags=False, fixed_multiplicator=1)
    Adopted as the central point to inject custom tax computations. Avatax logic is triggered if the "avatax_invoice" is set in the context. To find the Avatax amount, we search an Invoice line with the same quantity, price and product.
  • get_avalara_tax(self, tax_rate, doc_type)
    @api.model

New fields (21)
  • account_number Char
    help='Account Number provided by AvaTax' name='Account ID' required=True
  • active Boolean
    default=True help='Uncheck the active field to hide the record'
  • auto_generate_customer_code Boolean
    default=True help="This will generate customer code for the customer used in the transaction, if it doesn't have one already. Each code is unique per customer. When this is disabled, you will have to manually go to each customer and manually generate their customer code. This is required for Avatax and is only generated one time." args: 'Automatically generate missing customer code'
  • company_code Char
    default='DEFAULT' help='The company code as defined in the Admin Console of AvaTax' required=True
  • company_id Many2one → res.company
    default=<expr> help='Company which has subscribed to the AvaTax service' required=True args: 'res.company', 'Company'
  • company_partner_id Many2one
    related='company_id.partner_id' string='Company Address'
  • country_ids Many2many → res.country
    default=_get_avatax_supported_countries help='Countries where address validation will be used' args: 'res.country', 'avalara_salestax_country_rel', 'avalara_salestax_id', 'country_id', 'Countries'
  • disable_address_validation Boolean
    help='Disables the ability to perform address validation'
  • disable_tax_calculation Boolean
    help='No tax calculation requests will be sent to the AvaTax web service.' args: 'Disable AvaTax Calculation'
  • disable_tax_reporting Boolean
    help='No transactions will be recorded (commited) to the Avatax service.' args: 'Disable Document Recording/Commiting'
  • force_address_validation Boolean
    help='Only compute taxes if addresses were validated by the Avatax service' args: 'Require Validated Addresses'
  • hide_exemption Boolean
    default=False help='Uncheck the this field to show exemption fields on SO/Invoice form view. Also, it will show Tax based on shipping address button' args: 'Hide Exemption & Tax Based on shipping address'
  • invoice_calculate_tax Boolean
    help="Automatically triggers API to calculate tax If changes made onInvoice's warehouse_id, tax_on_shipping_address, Invoice line's price_unit, discount, quantity" args: 'Auto Calculate Tax on Invoice Save'
  • license_key Char
    help='License Key provided by AvaTax' required=True
  • logging Boolean
    help='Enables detailed AvaTax transaction logging within application' args: 'Log API Requests'
  • request_timeout Integer
    default=300 help='Defines AvaTax request time out length, AvaTax best practices prescribes default setting of 300 seconds'
  • result_in_uppercase Boolean
    help='The address validation results are returned in in upper case' args: 'Return validation results in upper case'
  • service_url Selection
    default='https://rest.avatax.com/api/v2' help='The url to connect with' string='Service URL' args: [('https://rest.avatax.com/api/v2', 'Production (REST API)'), ('https://sandbox-rest.avatax.com/api/v2', 'Sandbox (REST API)')]
  • upc_enable Boolean
    help='Allows ean13 to be reported in place of Item Reference as upc identifier.' args: 'Enable UPC Taxability'
  • use_so_partner_id Boolean
    help="Use Sales Order's Customer field to determine Taxable Status on the Customer Invoice. If no Sales Order exists, Customer field on the invoice form view will be used instead" string='Use Sale Customer Code on Invoice'
  • validation_on_save Boolean
    help='Automatically validates addresses when they are created or modified' args: 'Automatic Address Validation'
Public methods (6)
  • commit_transaction(self, doc_code, doc_type)
  • create_transaction(self, doc_date, doc_code, doc_type, partner, ship_from_address, shipping_address, lines, user=None, exemption_number=None, exemption_code_name=None, commit=False, invoice_date=None, reference_code=None, location_code=None, is_override=None, currency_id=None, ignore_error=None, log_to_record=False)
  • get_avatax_rest_service(self)
  • ping(self)
  • unvoid_transaction(self, doc_code, doc_type)
  • void_transaction(self, doc_code, doc_type)

New fields (16)
  • city Char
  • country Char
  • date_validation Date
  • original_city Char
    readonly=True
  • original_country Char
    readonly=True
  • original_state Char
    readonly=True
  • original_street Char
    readonly=True
  • original_street2 Char
    readonly=True
  • original_zip Char
    readonly=True
  • partner_latitude Float
    args: 'Latitude'
  • partner_longitude Float
    args: 'Longitude'
  • state Char
  • street Char
  • street2 Char
  • validation_method Char
  • zip Char
Public methods (2)
  • accept_valid_address(self)
    Updates the existing address with the valid address returned by the service.
  • default_get(self, fields)
    @api.model
    Returns the default values for the fields.

New fields (1)
  • company_code Selection
    selection=_get_company_codes string='Select a Company'
Public methods (1)
  • action_set_code(self)

New fields (1)
  • name Char
Public methods (2)
  • default_get(self, fields)
    @api.model
  • ping(self)
    @api.model
    Call the AvaTax's Ping Service to test the connection.

New fields (2)
  • code Char
  • name Char
    required=True
Public methods (0)

No public methods.

New fields (2)
  • applicable_tax_code_id Many2one → product.tax.code
    compute=_compute_applicable_tax_code args: 'product.tax.code', 'Applicable AvaTax Code'
  • tax_code_id Many2one → product.tax.code
    args: 'product.tax.code', 'AvaTax Code'
Public methods (0)

No public methods.

New fields (3)
  • description Char
  • name Char
    required=True args: 'Code'
  • type Selection
    help='Type of tax code as defined in AvaTax' required=True args: [('product', 'Product'), ('freight', 'Freight'), ('service', 'Service'), ('digital', 'Digital'), ('other', 'Other')]
Public methods (0)

No public methods.

New fields (2)
  • applicable_tax_code_id Many2one → product.tax.code
    compute=_compute_applicable_tax_code args: 'product.tax.code', 'Applicable AvaTax Code'
  • tax_code_id Many2one → product.tax.code
    help='AvaTax Product Tax Code' args: 'product.tax.code', 'Product AvaTax Code'
Public methods (0)

No public methods.

New fields (0)

No new fields.

Public methods (1)
  • get_avatax_config_company(self)
    Returns the AvaTax configuration for the Company

New fields (11)
  • customer_code Char
    copy=False
  • date_validation Date
    copy=False help='The date the address was last validated by AvaTax and accepted' readonly=True args: 'Last Validation Date'
  • exemption_code_id Many2one → exemption.code
    args: 'exemption.code', 'Exemption Code (Deprecated)'
  • exemption_number Char
    args: 'Exemption Number (Deprecated)'
  • property_exemption_code_id Many2one → exemption.code
    company_dependent=True help='The type of exemption granted' args: 'exemption.code', 'Exemption Code'
  • property_exemption_country_wide Boolean
    help='When enabled, the delivery address State is irrelevant when looking up the exemption status, meaning that the exemption is considered applicable for all states' args: 'Exemption Applies Country Wide'
  • property_exemption_number Char
    company_dependent=True help='The State identification number relevant fot the exemption' args: 'Exemption Number'
  • property_tax_exempt Boolean
    company_dependent=True help='This company or address can claim for tax exemption' args: 'Is Tax Exempt'
  • tax_exempt Boolean
    args: 'Is Tax Exempt (Deprecated))'
  • validated_on_save Boolean
    help='Indicates if the address is already validated on save before calling the wizard'
  • validation_method Selection
    copy=False help='It gets populated when the address is validated by the method' readonly=True args: [('avatax', 'Avalara'), ('other', 'Other')], 'Address Validation Method'
Public methods (10)
  • button_avatax_validate_address(self)
    Method is used to verify of state and country
  • check_exemption_number(self)
    @api.depends('property_tax_exempt', 'property_exemption_code_id', 'property_exemption_number')
    When tax exempt check then atleast exemption number or exemption code should be filled
  • create(self, vals_list)
    @api.model_create_multi
  • generate_cust_code(self)
    Auto populate customer code
  • get_country_from_code(self, code)
    Returns the country from the code.
  • get_state_from_code(self, state_code, country_code)
    Returns the state from the code.
  • get_valid_address_vals(self, validation_on_save=False)
  • multi_address_validation(self, validation_on_save=False)
  • onchange_tax_exemption(self)
    @api.onchange('tax_exempt')
  • write(self, vals)
REPOSITORY
REPOSITORYOCA/account-fiscal-rule
GIT
GIThttps://github.com/OCA/account-fiscal-rule.git
GIT FOLDER
GIT FOLDERhttps://github.com/OCA/account-fiscal-rule/tree/16.0/account_avatax_oca
VERSION
VERSION 1.7.0
CATEGORY
CATEGORYAccounting
LICENSE
LICENSEAGPL-3
APPLICATION
APPLICATIONYes
AUTO-INSTALLABLE
AUTO-INSTALLABLENo
AUTHORS
AUTHORSOdoo Community Association (OCA), Open Source Integrators, Sodexis, Fabrice Henrion
MAINTAINERS
MAINTAINERSOdoo Community Association (OCA), Open Source Integrators, Sodexis, Fabrice Henrion
COMMITTERS
COMMITTERSDaniel Reis, Weblate, OCA-git-bot, Don Kendall, oca-ci, Christopher Ormaza, BernatPForgeFlow, Nikul-OSI, Guillaume MASSON, ArnauCForgeFlow, AlexPForgeFlow, JasminSForgeFlow, PauBForgeFlow, tirth-osi
WEBSITE
WEBSITEhttps://github.com/OCA/account-fiscal-rule
LAST TRACKING UPDATE
LAST TRACKING UPDATE2026-07-06 00:53:43
ODOO DEPENDENCIES
ODOO DEPENDENCIES odoo/odoo:
    - sale_stock
    - sale
    - sales_team
    - base
    - mail
    - base_setup
    - web
    - bus
    - web_tour
    - account_payment
    - account
    - product
    - uom
    - analytic
    - portal
    - web_editor
    - http_routing
    - auth_signup
    - digest
    - resource
    - payment
    - utm
    - stock_account
    - stock
    - barcodes_gs1_nomenclature
    - barcodes
    - base_geolocalize
PYTHON DEPENDENCIES
PYTHON DEPENDENCIES Avalara
SYSTEM DEPENDENCIES
SYSTEM DEPENDENCIES Not have
DESCRIPTION
DESCRIPTION

Code Analysis

Views touched (14)
XML IDNameModelTypeStatus
exemption_code_tree_view exemption.code.tree.view exemption.code tree New
view_avalara_salestax_address_validate Address Validatation avalara.salestax.address.validate form New
view_avalara_salestax_form avalara.salestax.form avalara.salestax form New
view_avalara_salestax_getcompany avalara.salestax.getcompany form New
view_avalara_salestax_ping Test Connection avalara.salestax.ping form New
view_avalara_salestax_tree avalara.salestax.tree avalara.salestax tree New
view_fiscal_position_form_avatax account.fiscal.position form add Avatax account.fiscal.position field Inherits account.view_account_position_form
view_move_form_inherit_1 account.move.form.inherit account.move button Inherits account.view_move_form
view_partner_details_form_inherit1 res.partner.details.form.inherit1 res.partner xpath Inherits base.view_partner_form
view_product_category_form_avatax_inherit product.category.form.avatax.inherit product.category xpath Inherits product.product_category_form_view
view_product_normal_form_avatax_inherit product.normal.form.avatax product.template xpath Inherits product.product_template_form_view
view_product_tax_code_form product.tax.code.form product.tax.code form New
view_product_tax_code_tree product.tax.code.tree product.tax.code tree New
view_tax_form_avatax account.tax.form.avatax account.tax field Inherits account.view_tax_form
Models touched (14)

New fields (1)
  • is_avatax Boolean
    string='Use Avatax API'
Public methods (0)

No public methods.

New fields (15)
  • avatax_amount Float
    copy=False string='AvaTax'
  • avatax_request_log Text
    copy=False readonly=True args: 'Avatax API Request Log'
  • avatax_response_log Text
    copy=False readonly=True args: 'Avatax API Response Log'
  • calculate_tax_on_save Boolean
  • exemption_code Char
    compute=_compute_onchange_exemption help='It show the customer exemption number' readonly=False store=True args: 'Exemption Number'
  • exemption_code_id Many2one → exemption.code
    compute=_compute_onchange_exemption help='It show the customer exemption code' readonly=False store=True args: 'exemption.code', 'Exemption Code'
  • exemption_locked Boolean
    help="Exemption code won't be automatically changed, for instance, when changing the Customer."
  • hide_exemption Boolean
    compute=_compute_hide_exemption default=<expr> help='Uncheck the this field to show exemption fields on SO/Invoice form view. Also, it will show Tax based on shipping address button' args: 'Hide Exemption & Tax Based on shipping address'
  • invoice_doc_no Char
    help='Reference of the invoice' readonly=True states={'draft': [('readonly', False)]} args: 'Source/Ref Invoice No'
  • is_avatax Boolean
    related='fiscal_position_id.is_avatax'
  • location_code Char
    readonly=True states={'draft': [('readonly', False)]}
  • so_partner_id Many2one → res.partner
    comodel_name='res.partner' string='SO Partner'
  • tax_address_id Many2one → res.partner
    compute='_compute_tax_address_id' args: 'res.partner', 'Tax Shipping Address'
  • tax_on_shipping_address Boolean
    default=True args: 'Tax based on shipping address'
  • warehouse_id Many2one → stock.warehouse
    args: 'stock.warehouse', 'Warehouse'
Public methods (11)
  • avatax_commit_taxes(self)
  • avatax_compute_taxes(self, commit=False)
    Called from Invoice's Action menu. Forces computation of the Invoice taxes
  • button_draft(self)
    Sets invoice to Draft, either from the Posted or Cancelled states
  • create(self, vals_list)
    @api.model_create_multi
  • get_origin_tax_date(self)
  • is_avatax_calculated(self)
    Only apply Avatax for these types of documents. Can be extended to support other types.
  • onchange_avatax_calculation(self)
    @api.onchange('invoice_line_ids', 'warehouse_id', 'tax_address_id', 'tax_on_shipping_address', 'partner_id')
  • onchange_reset_avatax_amount(self)
    @api.onchange('tax_address_id', 'fiscal_position_id')
    When changing quantities or prices, reset the Avatax computed amount. The Odoo computed tax amount will then be shown, as a reference. The Avatax amount will be recomputed upon document validation.
  • onchange_warehouse_id(self)
    @api.onchange('warehouse_id')
  • update_tax_details(self, tax, line, tax_result_line)
    Method to update details in tax
  • write(self, vals)

New fields (1)
  • avatax_amt_line Float
    copy=False string='AvaTax Line'
Public methods (1)
  • onchange_reset_tax_amt(self)
    @api.onchange('price_unit', 'discount', 'quantity')
    When changing quantities or prices, reset the Avatax computed amount. The Odoo computed tax amount will then be shown, as a reference. The Avatax amount will be recomputed upon document validation.

New fields (1)
  • is_avatax Boolean
Public methods (2)
  • compute_all(self, price_unit, currency=None, quantity=1.0, product=None, partner=None, is_refund=False, handle_price_include=True, include_caba_tags=False, fixed_multiplicator=1)
    Adopted as the central point to inject custom tax computations. Avatax logic is triggered if the "avatax_invoice" is set in the context. To find the Avatax amount, we search an Invoice line with the same quantity, price and product.
  • get_avalara_tax(self, tax_rate, doc_type)
    @api.model

New fields (21)
  • account_number Char
    help='Account Number provided by AvaTax' name='Account ID' required=True
  • active Boolean
    default=True help='Uncheck the active field to hide the record'
  • auto_generate_customer_code Boolean
    default=True help="This will generate customer code for the customer used in the transaction, if it doesn't have one already. Each code is unique per customer. When this is disabled, you will have to manually go to each customer and manually generate their customer code. This is required for Avatax and is only generated one time." args: 'Automatically generate missing customer code'
  • company_code Char
    default='DEFAULT' help='The company code as defined in the Admin Console of AvaTax' required=True
  • company_id Many2one → res.company
    default=<expr> help='Company which has subscribed to the AvaTax service' required=True args: 'res.company', 'Company'
  • company_partner_id Many2one
    related='company_id.partner_id' string='Company Address'
  • country_ids Many2many → res.country
    default=_get_avatax_supported_countries help='Countries where address validation will be used' args: 'res.country', 'avalara_salestax_country_rel', 'avalara_salestax_id', 'country_id', 'Countries'
  • disable_address_validation Boolean
    help='Disables the ability to perform address validation'
  • disable_tax_calculation Boolean
    help='No tax calculation requests will be sent to the AvaTax web service.' args: 'Disable AvaTax Calculation'
  • disable_tax_reporting Boolean
    help='No transactions will be recorded (commited) to the Avatax service.' args: 'Disable Document Recording/Commiting'
  • force_address_validation Boolean
    help='Only compute taxes if addresses were validated by the Avatax service' args: 'Require Validated Addresses'
  • hide_exemption Boolean
    default=False help='Uncheck the this field to show exemption fields on SO/Invoice form view. Also, it will show Tax based on shipping address button' args: 'Hide Exemption & Tax Based on shipping address'
  • invoice_calculate_tax Boolean
    help="Automatically triggers API to calculate tax If changes made onInvoice's warehouse_id, tax_on_shipping_address, Invoice line's price_unit, discount, quantity" args: 'Auto Calculate Tax on Invoice Save'
  • license_key Char
    help='License Key provided by AvaTax' required=True
  • logging Boolean
    help='Enables detailed AvaTax transaction logging within application' args: 'Log API Requests'
  • request_timeout Integer
    default=300 help='Defines AvaTax request time out length, AvaTax best practices prescribes default setting of 300 seconds'
  • result_in_uppercase Boolean
    help='The address validation results are returned in in upper case' args: 'Return validation results in upper case'
  • service_url Selection
    default='https://rest.avatax.com/api/v2' help='The url to connect with' string='Service URL' args: [('https://rest.avatax.com/api/v2', 'Production (REST API)'), ('https://sandbox-rest.avatax.com/api/v2', 'Sandbox (REST API)')]
  • upc_enable Boolean
    help='Allows ean13 to be reported in place of Item Reference as upc identifier.' args: 'Enable UPC Taxability'
  • use_so_partner_id Boolean
    help="Use Sales Order's Customer field to determine Taxable Status on the Customer Invoice. If no Sales Order exists, Customer field on the invoice form view will be used instead" string='Use Sale Customer Code on Invoice'
  • validation_on_save Boolean
    help='Automatically validates addresses when they are created or modified' args: 'Automatic Address Validation'
Public methods (6)
  • commit_transaction(self, doc_code, doc_type)
  • create_transaction(self, doc_date, doc_code, doc_type, partner, ship_from_address, shipping_address, lines, user=None, exemption_number=None, exemption_code_name=None, commit=False, invoice_date=None, reference_code=None, location_code=None, is_override=None, currency_id=None, ignore_error=None, log_to_record=False)
  • get_avatax_rest_service(self)
  • ping(self)
  • unvoid_transaction(self, doc_code, doc_type)
  • void_transaction(self, doc_code, doc_type)

New fields (16)
  • city Char
  • country Char
  • date_validation Date
  • original_city Char
    readonly=True
  • original_country Char
    readonly=True
  • original_state Char
    readonly=True
  • original_street Char
    readonly=True
  • original_street2 Char
    readonly=True
  • original_zip Char
    readonly=True
  • partner_latitude Float
    args: 'Latitude'
  • partner_longitude Float
    args: 'Longitude'
  • state Char
  • street Char
  • street2 Char
  • validation_method Char
  • zip Char
Public methods (2)
  • accept_valid_address(self)
    Updates the existing address with the valid address returned by the service.
  • default_get(self, fields)
    @api.model
    Returns the default values for the fields.

New fields (1)
  • company_code Selection
    selection=_get_company_codes string='Select a Company'
Public methods (1)
  • action_set_code(self)

New fields (1)
  • name Char
Public methods (2)
  • default_get(self, fields)
    @api.model
  • ping(self)
    @api.model
    Call the AvaTax's Ping Service to test the connection.

New fields (2)
  • code Char
  • name Char
    required=True
Public methods (1)
  • name_get(self)
    @api.depends('name', 'code')

New fields (2)
  • applicable_tax_code_id Many2one → product.tax.code
    compute=_compute_applicable_tax_code args: 'product.tax.code', 'Applicable AvaTax Code'
  • tax_code_id Many2one → product.tax.code
    args: 'product.tax.code', 'AvaTax Code'
Public methods (0)

No public methods.

New fields (3)
  • description Char
  • name Char
    required=True args: 'Code'
  • type Selection
    help='Type of tax code as defined in AvaTax' required=True args: [('product', 'Product'), ('freight', 'Freight'), ('service', 'Service'), ('digital', 'Digital'), ('other', 'Other')]
Public methods (0)

No public methods.

New fields (2)
  • applicable_tax_code_id Many2one → product.tax.code
    compute=_compute_applicable_tax_code args: 'product.tax.code', 'Applicable AvaTax Code'
  • tax_code_id Many2one → product.tax.code
    help='AvaTax Product Tax Code' args: 'product.tax.code', 'Product AvaTax Code'
Public methods (0)

No public methods.

New fields (0)

No new fields.

Public methods (1)
  • get_avatax_config_company(self)
    Returns the AvaTax configuration for the Company

New fields (10)
  • customer_code Char
    copy=False
  • date_validation Date
    copy=False help='The date the address was last validated by AvaTax and accepted' readonly=True args: 'Last Validation Date'
  • exemption_code_id Many2one → exemption.code
    args: 'exemption.code', 'Exemption Code (Deprecated)'
  • exemption_number Char
    args: 'Exemption Number (Deprecated)'
  • property_exemption_code_id Many2one → exemption.code
    company_dependent=True help='The type of exemption granted' args: 'exemption.code', 'Exemption Code'
  • property_exemption_number Char
    company_dependent=True help='The State identification number relevant fot the exemption' args: 'Exemption Number'
  • property_tax_exempt Boolean
    company_dependent=True help='This company or address can claim for tax exemption' args: 'Is Tax Exempt'
  • tax_exempt Boolean
    args: 'Is Tax Exempt (Deprecated))'
  • validated_on_save Boolean
    help='Indicates if the address is already validated on save before calling the wizard'
  • validation_method Selection
    copy=False help='It gets populated when the address is validated by the method' readonly=True args: [('avatax', 'AVALARA'), ('usps', 'USPS'), ('other', 'Other')], 'Address Validation Method'
Public methods (10)
  • button_avatax_validate_address(self)
    Method is used to verify of state and country
  • check_exemption_number(self)
    @api.depends('property_tax_exempt', 'property_exemption_code_id', 'property_exemption_number')
    When tax exempt check then atleast exemption number or exemption code should be filled
  • create(self, vals_list)
    @api.model_create_multi
  • generate_cust_code(self)
    Auto populate customer code
  • get_country_from_code(self, code)
    Returns the country from the code.
  • get_state_from_code(self, state_code, country_code)
    Returns the state from the code.
  • get_valid_address_vals(self, validation_on_save=False)
  • multi_address_validation(self, validation_on_save=False)
  • onchange_tax_exemption(self)
    @api.onchange('tax_exempt')
  • write(self, vals)
REPOSITORY
REPOSITORYOCA/account-fiscal-rule
GIT
GIThttps://github.com/OCA/account-fiscal-rule.git
GIT FOLDER
GIT FOLDERhttps://github.com/OCA/account-fiscal-rule/tree/15.0/account_avatax_oca
VERSION
VERSION 2.0.4
CATEGORY
CATEGORYAccounting
LICENSE
LICENSEAGPL-3
APPLICATION
APPLICATIONYes
AUTO-INSTALLABLE
AUTO-INSTALLABLENo
AUTHORS
AUTHORSOdoo Community Association (OCA), Open Source Integrators, Sodexis, Fabrice Henrion
MAINTAINERS
MAINTAINERSOdoo Community Association (OCA), Open Source Integrators, Sodexis, Fabrice Henrion
COMMITTERS
COMMITTERSDaniel Reis, Weblate, OCA-git-bot, oca-ci, John Wilson, Atchuthan Ubendran
WEBSITE
WEBSITEhttps://github.com/OCA/account-fiscal-rule
LAST TRACKING UPDATE
LAST TRACKING UPDATE2026-07-06 00:46:32
ODOO DEPENDENCIES
ODOO DEPENDENCIES odoo/odoo:
    - account
    - base_setup
    - base
    - web
    - product
    - mail
    - bus
    - web_tour
    - uom
    - analytic
    - portal
    - web_editor
    - http_routing
    - auth_signup
    - digest
    - resource
    - sale
    - sales_team
    - payment
    - utm
    - base_geolocalize
PYTHON DEPENDENCIES
PYTHON DEPENDENCIES Avalara
SYSTEM DEPENDENCIES
SYSTEM DEPENDENCIES Not have
DESCRIPTION
DESCRIPTION

Code Analysis

Views touched (15)
XML IDNameModelTypeStatus
exemption_code_tree_view exemption.code.tree.view exemption.code tree New
invoice_form_view_editable_field invoice.form.view.editable account.move field Inherits view_move_form_inherit_1
view_avalara_salestax_address_validate Address Validatation avalara.salestax.address.validate form New
view_avalara_salestax_form avalara.salestax.form avalara.salestax form New
view_avalara_salestax_getcompany avalara.salestax.getcompany form New
view_avalara_salestax_ping Test Connection avalara.salestax.ping form New
view_avalara_salestax_tree avalara.salestax.tree avalara.salestax tree New
view_fiscal_position_form_avatax account.fiscal.position form add Avatax account.fiscal.position field Inherits account.view_account_position_form
view_move_form_inherit_1 account.move.form.inherit account.move button Inherits account.view_move_form
view_partner_details_form_inherit1 res.partner.details.form.inherit1 res.partner xpath Inherits base.view_partner_form
view_product_category_form_avatax_inherit product.category.form.avatax.inherit product.category xpath Inherits product.product_category_form_view
view_product_normal_form_avatax_inherit product.normal.form.avatax product.template xpath Inherits product.product_template_form_view
view_product_tax_code_form product.tax.code.form product.tax.code form New
view_product_tax_code_tree product.tax.code.tree product.tax.code tree New
view_tax_form_avatax account.tax.form.avatax account.tax field Inherits account.view_tax_form
Models touched (14)

New fields (1)
  • is_avatax Boolean
    string='Use Avatax API'
Public methods (0)

No public methods.

New fields (15)
  • avatax_amount Float
    copy=False string='AvaTax'
  • avatax_request_log Text
    copy=False readonly=True args: 'Avatax API Request Log'
  • avatax_response_log Text
    copy=False readonly=True args: 'Avatax API Response Log'
  • calculate_tax_on_save Boolean
  • exemption_code Char
    compute=_compute_onchange_exemption help='It show the customer exemption number' readonly=False store=True args: 'Exemption Number'
  • exemption_code_id Many2one → exemption.code
    compute=_compute_onchange_exemption help='It show the customer exemption code' readonly=False store=True args: 'exemption.code', 'Exemption Code'
  • exemption_locked Boolean
    help="Exemption code won't be automatically changed, for instance, when changing the Customer."
  • hide_exemption Boolean
    compute=_compute_hide_exemption default=<expr> help='Uncheck the this field to show exemption fields on SO/Invoice form view. Also, it will show Tax based on shipping address button' args: 'Hide Exemption & Tax Based on shipping address'
  • invoice_doc_no Char
    help='Reference of the invoice' readonly=True states={'draft': [('readonly', False)]} args: 'Source/Ref Invoice No'
  • is_avatax Boolean
    related='fiscal_position_id.is_avatax'
  • location_code Char
    readonly=True states={'draft': [('readonly', False)]}
  • so_partner_id Many2one → res.partner
    comodel_name='res.partner' string='SO Partner'
  • tax_address_id Many2one → res.partner
    compute='_compute_tax_address_id' args: 'res.partner', 'Tax Shipping Address'
  • tax_on_shipping_address Boolean
    default=True args: 'Tax based on shipping address'
  • warehouse_id Many2one → stock.warehouse
    args: 'stock.warehouse', 'Warehouse'
Public methods (10)
  • avatax_commit_taxes(self)
  • avatax_compute_taxes(self, commit=False)
    Called from Invoice's Action menu. Forces computation of the Invoice taxes
  • button_draft(self)
    Sets invoice to Draft, either from the Posted or Cancelled states
  • create(self, vals)
    @api.model
  • get_origin_tax_date(self)
  • is_avatax_calculated(self)
    Only apply Avatax for these types of documents. Can be extended to support other types.
  • onchange_avatax_calculation(self)
    @api.onchange('invoice_line_ids', 'warehouse_id', 'tax_address_id', 'tax_on_shipping_address', 'partner_id')
  • onchange_reset_avatax_amount(self)
    @api.onchange('tax_address_id', 'fiscal_position_id')
    When changing quantities or prices, reset the Avatax computed amount. The Odoo computed tax amount will then be shown, as a reference. The Avatax amount will be recomputed upon document validation.
  • onchange_warehouse_id(self)
    @api.onchange('warehouse_id')
  • write(self, vals)

New fields (1)
  • avatax_amt_line Float
    copy=False string='AvaTax Line'
Public methods (1)
  • onchange_reset_tax_amt(self)
    @api.onchange('price_unit', 'discount', 'quantity')
    When changing quantities or prices, reset the Avatax computed amount. The Odoo computed tax amount will then be shown, as a reference. The Avatax amount will be recomputed upon document validation.

New fields (1)
  • is_avatax Boolean
Public methods (2)
  • compute_all(self, price_unit, currency=None, quantity=1.0, product=None, partner=None, is_refund=False, handle_price_include=True, include_caba_tags=False)
    Adopted as the central point to inject custom tax computations. Avatax logic is triggered if the "avatax_invoice" is set in the context. To find the Avatax amount, we search an Invoice line with the same quantity, price and product.
  • get_avalara_tax(self, tax_rate, doc_type)
    @api.model

New fields (21)
  • account_number Char
    help='Account Number provided by AvaTax' name='Account ID' required=True
  • active Boolean
    default=True help='Uncheck the active field to hide the record'
  • auto_generate_customer_code Boolean
    default=True help="This will generate customer code for the customer used in the transaction, if it doesn't have one already. Each code is unique per customer. When this is disabled, you will have to manually go to each customer and manually generate their customer code. This is required for Avatax and is only generated one time." args: 'Automatically generate missing customer code'
  • company_code Char
    default='DEFAULT' help='The company code as defined in the Admin Console of AvaTax' required=True
  • company_id Many2one → res.company
    default=<expr> help='Company which has subscribed to the AvaTax service' required=True args: 'res.company', 'Company'
  • company_partner_id Many2one
    related='company_id.partner_id' string='Company Address'
  • country_ids Many2many → res.country
    default=_get_avatax_supported_countries help='Countries where address validation will be used' args: 'res.country', 'avalara_salestax_country_rel', 'avalara_salestax_id', 'country_id', 'Countries'
  • disable_address_validation Boolean
    help='Disables the ability to perform address validation'
  • disable_tax_calculation Boolean
    help='No tax calculation requests will be sent to the AvaTax web service.' args: 'Disable AvaTax Calculation'
  • disable_tax_reporting Boolean
    help='No transactions will be recorded (commited) to the Avatax service.' args: 'Disable Document Recording/Commiting'
  • force_address_validation Boolean
    help='Only compute taxes if addresses were validated by the Avatax service' args: 'Require Validated Addresses'
  • hide_exemption Boolean
    default=False help='Uncheck the this field to show exemption fields on SO/Invoice form view. Also, it will show Tax based on shipping address button' args: 'Hide Exemption & Tax Based on shipping address'
  • invoice_calculate_tax Boolean
    help="Automatically triggers API to calculate tax If changes made onInvoice's warehouse_id, tax_on_shipping_address, Invoice line's price_unit, discount, quantity" args: 'Auto Calculate Tax on Invoice Save'
  • license_key Char
    help='License Key provided by AvaTax' required=True
  • logging Boolean
    help='Enables detailed AvaTax transaction logging within application' args: 'Log API Requests'
  • request_timeout Integer
    default=300 help='Defines AvaTax request time out length, AvaTax best practices prescribes default setting of 300 seconds'
  • result_in_uppercase Boolean
    help='The address validation results are returned in in upper case' args: 'Return validation results in upper case'
  • service_url Selection
    default='https://rest.avatax.com/api/v2' help='The url to connect with' string='Service URL' args: [('https://rest.avatax.com/api/v2', 'Production (REST API)'), ('https://sandbox-rest.avatax.com/api/v2', 'Sandbox (REST API)')]
  • upc_enable Boolean
    help='Allows ean13 to be reported in place of Item Reference as upc identifier.' args: 'Enable UPC Taxability'
  • use_so_partner_id Boolean
    help="Use Sales Order's Customer field to determine Taxable Status on the Customer Invoice. If no Sales Order exists, Customer field on the invoice form view will be used instead" string='Use Sale Customer Code on Invoice'
  • validation_on_save Boolean
    help='Automatically validates addresses when they are created or modified' args: 'Automatic Address Validation'
Public methods (6)
  • commit_transaction(self, doc_code, doc_type)
  • create_transaction(self, doc_date, doc_code, doc_type, partner, ship_from_address, shipping_address, lines, user=None, exemption_number=None, exemption_code_name=None, commit=False, invoice_date=None, reference_code=None, location_code=None, is_override=None, currency_id=None, ignore_error=None, log_to_record=False)
  • get_avatax_rest_service(self)
  • ping(self)
  • unvoid_transaction(self, doc_code, doc_type)
  • void_transaction(self, doc_code, doc_type)

New fields (16)
  • city Char
  • country Char
  • date_validation Date
  • original_city Char
    readonly=True
  • original_country Char
    readonly=True
  • original_state Char
    readonly=True
  • original_street Char
    readonly=True
  • original_street2 Char
    readonly=True
  • original_zip Char
    readonly=True
  • partner_latitude Float
    args: 'Latitude'
  • partner_longitude Float
    args: 'Longitude'
  • state Char
  • street Char
  • street2 Char
  • validation_method Char
  • zip Char
Public methods (2)
  • accept_valid_address(self)
    Updates the existing address with the valid address returned by the service.
  • default_get(self, fields)
    @api.model
    Returns the default values for the fields.

New fields (1)
  • company_code Selection
    selection=_get_company_codes string='Select a Company'
Public methods (1)
  • action_set_code(self)

New fields (1)
  • name Char
Public methods (2)
  • default_get(self, fields)
    @api.model
  • ping(self)
    @api.model
    Call the AvaTax's Ping Service to test the connection.

New fields (2)
  • code Char
  • name Char
    required=True
Public methods (1)
  • name_get(self)
    @api.depends('name', 'code')

New fields (2)
  • applicable_tax_code_id Many2one → product.tax.code
    compute=_compute_applicable_tax_code args: 'product.tax.code', 'Applicable AvaTax Code'
  • tax_code_id Many2one → product.tax.code
    args: 'product.tax.code', 'AvaTax Code'
Public methods (0)

No public methods.

New fields (3)
  • description Char
  • name Char
    required=True args: 'Code'
  • type Selection
    help='Type of tax code as defined in AvaTax' required=True args: [('product', 'Product'), ('freight', 'Freight'), ('service', 'Service'), ('digital', 'Digital'), ('other', 'Other')]
Public methods (0)

No public methods.

New fields (2)
  • applicable_tax_code_id Many2one → product.tax.code
    compute=_compute_applicable_tax_code args: 'product.tax.code', 'Applicable AvaTax Code'
  • tax_code_id Many2one → product.tax.code
    help='AvaTax Product Tax Code' args: 'product.tax.code', 'Product AvaTax Code'
Public methods (0)

No public methods.

New fields (0)

No new fields.

Public methods (1)
  • get_avatax_config_company(self)
    Returns the AvaTax configuration for the Company

New fields (10)
  • customer_code Char
    copy=False
  • date_validation Date
    copy=False help='The date the address was last validated by AvaTax and accepted' readonly=True args: 'Last Validation Date'
  • exemption_code_id Many2one → exemption.code
    deprecated=True args: 'exemption.code', 'Exemption Code (Deprecated)'
  • exemption_number Char
    deprecated=True args: 'Exemption Number (Deprecated)'
  • property_exemption_code_id Many2one → exemption.code
    company_dependent=True help='The type of exemption granted' args: 'exemption.code', 'Exemption Code'
  • property_exemption_number Char
    company_dependent=True help='The State identification number relevant fot the exemption' args: 'Exemption Number'
  • property_tax_exempt Boolean
    company_dependent=True help='This company or address can claim for tax exemption' args: 'Is Tax Exempt'
  • tax_exempt Boolean
    deprecated=True args: 'Is Tax Exempt (Deprecated))'
  • validated_on_save Boolean
    help='Indicates if the address is already validated on save before calling the wizard'
  • validation_method Selection
    copy=False help='It gets populated when the address is validated by the method' readonly=True args: [('avatax', 'AVALARA'), ('usps', 'USPS'), ('other', 'Other')], 'Address Validation Method'
Public methods (10)
  • button_avatax_validate_address(self)
    Method is used to verify of state and country
  • check_exemption_number(self)
    @api.depends('property_tax_exempt', 'property_exemption_code_id', 'property_exemption_number')
    When tax exempt check then atleast exemption number or exemption code should be filled
  • create(self, vals)
    @api.model
  • generate_cust_code(self)
    Auto populate customer code
  • get_country_from_code(self, code)
    Returns the country from the code.
  • get_state_from_code(self, state_code, country_code)
    Returns the state from the code.
  • get_valid_address_vals(self, validation_on_save=False)
  • multi_address_validation(self, validation_on_save=False)
  • onchange_tax_exemption(self)
    @api.onchange('tax_exempt')
  • write(self, vals)
REPOSITORY
REPOSITORYOCA/account-fiscal-rule
GIT
GIThttps://github.com/OCA/account-fiscal-rule.git
GIT FOLDER
GIT FOLDERhttps://github.com/OCA/account-fiscal-rule/tree/14.0/account_avatax_oca
VERSION
VERSION 4.0.4
CATEGORY
CATEGORYAccounting
LICENSE
LICENSEAGPL-3
APPLICATION
APPLICATIONYes
AUTO-INSTALLABLE
AUTO-INSTALLABLENo
AUTHORS
AUTHORSOdoo Community Association (OCA), Open Source Integrators, Sodexis, Fabrice Henrion
MAINTAINERS
MAINTAINERSOdoo Community Association (OCA), Open Source Integrators, Sodexis, Fabrice Henrion
COMMITTERS
COMMITTERSDaniel Reis, oca-travis, Weblate, OCA-git-bot, oca-ci, Atchuthan Ubendran, Juany Davila
WEBSITE
WEBSITEhttps://github.com/OCA/account-fiscal-rule
LAST TRACKING UPDATE
LAST TRACKING UPDATE2026-07-06 00:40:54
ODOO DEPENDENCIES
ODOO DEPENDENCIES odoo/odoo:
    - account
    - base_setup
    - base
    - web
    - product
    - mail
    - bus
    - web_tour
    - uom
    - analytic
    - portal
    - web_editor
    - http_routing
    - auth_signup
    - digest
    - resource
    - sale_stock
    - sale
    - sales_team
    - payment
    - utm
    - stock_account
    - stock
    - barcodes
    - base_geolocalize
PYTHON DEPENDENCIES
PYTHON DEPENDENCIES Avalara
SYSTEM DEPENDENCIES
SYSTEM DEPENDENCIES Not have
DESCRIPTION
DESCRIPTION

Code Analysis

Views touched (15)
XML IDNameModelTypeStatus
exemption_code_tree_view exemption.code.tree.view exemption.code tree New
invoice_form_view_editable_field invoice.form.view.editable account.move field Inherits view_move_form_inherit_1
view_account_move_reversal account.move.reversal.form account.move.reversal xpath Inherits account.view_account_move_reversal
view_avalara_salestax_address_validate Address Validatation avalara.salestax.address.validate form New
view_avalara_salestax_form avalara.salestax.form avalara.salestax form New
view_avalara_salestax_ping Test Connection avalara.salestax.ping form New
view_avalara_salestax_tree avalara.salestax.tree avalara.salestax tree New
view_fiscal_position_form_avatax account.fiscal.position form add Avatax account.fiscal.position field Inherits account.view_account_position_form
view_move_form_inherit_1 account.move.form.inherit account.move button Inherits account.view_move_form
view_partner_details_form_inherit1 res.partner.details.form.inherit1 res.partner xpath Inherits base.view_partner_form
view_product_category_form_avatax_inherit product.category.form.avatax.inherit product.category xpath Inherits product.product_category_form_view
view_product_normal_form_avatax_inherit product.normal.form.avatax product.template xpath Inherits product.product_template_form_view
view_product_tax_code_form product.tax.code.form product.tax.code form New
view_product_tax_code_tree product.tax.code.tree product.tax.code tree New
view_tax_form_avatax account.tax.form.avatax account.tax field Inherits account.view_tax_form
Models touched (14)

New fields (1)
  • is_avatax Boolean
    string='Use Avatax API'
Public methods (0)

No public methods.

New fields (16)
  • avatax_amount Float
    copy=False string='AvaTax'
  • avatax_amt_line_override Boolean
    default=False help='The Odoo tax will be uploaded to Avatax' string='Use Odoo Tax'
  • avatax_request_log Text
    copy=False readonly=True args: 'Avatax API Request Log'
  • avatax_response_log Text
    copy=False readonly=True args: 'Avatax API Response Log'
  • calculate_tax_on_save Boolean
  • exemption_code Char
    compute=_compute_onchange_exemption help='It show the customer exemption number' readonly=False store=True args: 'Exemption Number'
  • exemption_code_id Many2one → exemption.code
    compute=_compute_onchange_exemption help='It show the customer exemption code' readonly=False store=True args: 'exemption.code', 'Exemption Code'
  • exemption_locked Boolean
    help="Exemption code won't be automatically changed, for instance, when changing the Customer."
  • hide_exemption Boolean
    compute=_compute_hide_exemption default=<expr> help='Uncheck the this field to show exemption fields on SO/Invoice form view. Also, it will show Tax based on shipping address button' args: 'Hide Exemption & Tax Based on shipping address'
  • invoice_doc_no Char
    help='Reference of the invoice' readonly=True states={'draft': [('readonly', False)]} args: 'Source/Ref Invoice No'
  • is_avatax Boolean
    related='fiscal_position_id.is_avatax'
  • location_code Char
    readonly=True states={'draft': [('readonly', False)]} args: 'Location Code'
  • so_partner_id Many2one → res.partner
    comodel_name='res.partner' string='SO Partner'
  • tax_address_id Many2one → res.partner
    compute='_compute_tax_address_id' args: 'res.partner', 'Tax Shipping Address'
  • tax_on_shipping_address Boolean
    default=True args: 'Tax based on shipping address'
  • warehouse_id Many2one → stock.warehouse
    args: 'stock.warehouse', 'Warehouse'
Public methods (11)
  • action_reverse(self)
  • avatax_commit_taxes(self)
  • avatax_compute_taxes(self, commit=False)
    Called from Invoice's Action menu. Forces computation of the Invoice taxes
  • button_draft(self)
    Sets invoice to Draft, either from the Posted or Cancelled states
  • create(self, vals)
    @api.model
  • get_origin_tax_date(self)
  • is_avatax_calculated(self)
    Only apply Avatax for these types of documents. Can be extended to support other types.
  • onchange_avatax_calculation(self)
    @api.onchange('invoice_line_ids', 'warehouse_id', 'tax_address_id', 'tax_on_shipping_address', 'partner_id')
  • onchange_reset_avatax_amount(self)
    @api.onchange('tax_address_id', 'fiscal_position_id')
    When changing quantities or prices, reset the Avatax computed amount. The Odoo computed tax amount will then be shown, as a reference. The Avatax amount will be recomputed upon document validation.
  • onchange_warehouse_id(self)
    @api.onchange('warehouse_id')
  • write(self, vals)

New fields (2)
  • avatax_amt_line Float
    copy=False string='AvaTax Line'
  • avatax_tax_type Char
Public methods (1)
  • onchange_reset_tax_amt(self)
    @api.onchange('price_unit', 'discount', 'quantity')
    When changing quantities or prices, reset the Avatax computed amount. The Odoo computed tax amount will then be shown, as a reference. The Avatax amount will be recomputed upon document validation.

New fields (1)
  • avatax_amt_line_override Boolean
    default=False help='The Odoo tax will be uploaded to Avatax' string='Use Odoo Tax'
Public methods (0)

No public methods.

New fields (1)
  • is_avatax Boolean
    args: 'Is Avatax'
Public methods (2)
  • compute_all(self, price_unit, currency=None, quantity=1.0, product=None, partner=None, is_refund=False, handle_price_include=True)
    Adopted as the central point to inject custom tax computations. Avatax logic is triggered if the "avatax_invoice" is set in the context. To find the Avatax amount, we search an Invoice line with the same quantity, price and product.
  • get_avalara_tax(self, tax_rate, doc_type)
    @api.model

New fields (22)
  • account_number Char
    help='Account Number provided by AvaTax' required=True args: 'Account Number'
  • active Boolean
    default=True help='Uncheck the active field to hide the record' args: 'Active'
  • auto_generate_customer_code Boolean
    default=True help="This will generate customer code for the customer used in the transaction, if it doesn't have one already. Each code is unique per customer. When this is disabled, you will have to manually go to each customer and manually generate their customer code. This is required for Avatax and is only generated one time." args: 'Automatically generate missing customer code'
  • company_code Char
    help='The company code as defined in the Admin Console of AvaTax' required=True args: 'Company Code'
  • company_id Many2one → res.company
    default=<expr> help='Company which has subscribed to the AvaTax service' required=True args: 'res.company', 'Company'
  • country_ids Many2many → res.country
    default=_get_avatax_supported_countries help='Countries where address validation will be used' args: 'res.country', 'avalara_salestax_country_rel', 'avalara_salestax_id', 'country_id', 'Countries'
  • default_shipping_code_id Many2one → product.tax.code
    help='The default shipping code which will be passed to Avalara' args: 'product.tax.code', 'Default Shipping Code'
  • disable_address_validation Boolean
    help='Check to disable address validation' args: 'Disable Address Validation'
  • disable_tax_calculation Boolean
    default=True help='No tax calculation requests will be sent to the AvaTax web service.' args: 'Disable AvaTax Calculation'
  • disable_tax_reporting Boolean
    help='No transactions will be recorded in the Avatax service.' args: 'Disable Document Recording/Commiting'
  • enable_immediate_calculation Boolean
    help='Tax is computed immediately, as document lines are being added. Warning: will cause heavy traffic on the Avatax service.' args: 'Immediate AvaTax Calculation'
  • force_address_validation Boolean
    help='Only compute taxes if addresses were validated by the Avatax service' args: 'Require Validated Addresses'
  • hide_exemption Boolean
    default=False help='Uncheck the this field to show exemption fields on SO/Invoice form view. Also, it will show Tax based on shipping address button' args: 'Hide Exemption & Tax Based on shipping address'
  • invoice_calculate_tax Boolean
    help="Automatically triggers API to calculate tax If changes made onInvoice's warehouse_id, tax_on_shipping_address, Invoice line's price_unit, discount, quantity" args: 'Auto Calculate Tax on Invoice Save'
  • license_key Char
    help='License Key provided by AvaTax' required=True args: 'License Key'
  • logging Boolean
    help='Enables detailed AvaTax transaction logging within application' args: 'Log API Requests'
  • request_timeout Integer
    default=300 help='Defines AvaTax request time out length, AvaTax best practices prescribes default setting of 300 seconds' args: 'Request Timeout'
  • result_in_uppercase Boolean
    help='Check is address validation results desired to be in upper case' args: 'Return validation results in upper case'
  • service_url Selection
    default='https://rest.avatax.com/api/v2' help='The url to connect with' string='Service URL' args: [('https://sandbox-rest.avatax.com/api/v2', 'REST API Test'), ('https://rest.avatax.com/api/v2', 'REST API Production')]
  • upc_enable Boolean
    help='Allows ean13 to be reported in place of Item Reference as upc identifier.' args: 'Enable UPC Taxability'
  • use_so_partner_id Boolean
    help="Use Sales Order's Customer field to determine Taxable Status on the Customer Invoice. If no Sales Order exists, Customer field on the invoice form view will be used instead" string='Use Sale Customer Code on Invoice'
  • validation_on_save Boolean
    help='Automatically validates addresses when they are created or modified when Customer profile is saved.' args: 'Automatic Address Validation'
Public methods (6)
  • commit_transaction(self, doc_code, doc_type)
  • create_transaction(self, doc_date, doc_code, doc_type, partner, ship_from_address, shipping_address, lines, user=None, exemption_number=None, exemption_code_name=None, commit=False, invoice_date=None, reference_code=None, location_code=None, avatax_line_override=None, is_override=None, currency_id=None, ignore_error=None, log_to_record=False)
  • get_avatax_rest_service(self)
  • ping(self)
  • unvoid_transaction(self, doc_code, doc_type)
  • void_transaction(self, doc_code, doc_type)

New fields (16)
  • city Char
    args: 'City'
  • country Char
    args: 'Country'
  • date_validation Date
  • original_city Char
    readonly=True args: 'Original City'
  • original_country Char
    readonly=True args: 'Original Country'
  • original_state Char
    readonly=True args: 'Original State'
  • original_street Char
    readonly=True args: 'Original Street'
  • original_street2 Char
    readonly=True args: 'Original Street2'
  • original_zip Char
    readonly=True args: 'Original Zip'
  • partner_latitude Float
    args: 'Latitude'
  • partner_longitude Float
    args: 'Longitude'
  • state Char
    args: 'State'
  • street Char
    args: 'Street'
  • street2 Char
    args: 'Street2'
  • validation_method Char
  • zip Char
    args: 'Zip'
Public methods (2)
  • accept_valid_address(self)
    Updates the existing address with the valid address returned by the service.
  • default_get(self, fields)
    @api.model
    Returns the default values for the fields.

New fields (1)
  • name Char
    args: 'Name'
Public methods (2)
  • default_get(self, fields)
    @api.model
  • ping(self)
    @api.model
    Call the AvaTax's Ping Service to test the connection.

New fields (2)
  • code Char
    args: 'Code'
  • name Char
    required=True args: 'Name'
Public methods (1)
  • name_get(self)
    @api.depends('name', 'code')

New fields (2)
  • applicable_tax_code_id Many2one → product.tax.code
    compute=_compute_applicable_tax_code args: 'product.tax.code', 'Applicable AvaTax Code'
  • tax_code_id Many2one → product.tax.code
    args: 'product.tax.code', 'AvaTax Code'
Public methods (0)

No public methods.

New fields (3)
  • description Char
    args: 'Description'
  • name Char
    required=True args: 'Code'
  • type Selection
    help='Type of tax code as defined in AvaTax' required=True args: [('product', 'Product'), ('freight', 'Freight'), ('service', 'Service'), ('digital', 'Digital'), ('other', 'Other')], 'Type'
Public methods (0)

No public methods.

New fields (2)
  • applicable_tax_code_id Many2one → product.tax.code
    compute=_compute_applicable_tax_code args: 'product.tax.code', 'Applicable AvaTax Code'
  • tax_code_id Many2one → product.tax.code
    help='AvaTax Product Tax Code' args: 'product.tax.code', 'Product AvaTax Code'
Public methods (0)

No public methods.

New fields (0)

No new fields.

Public methods (1)
  • get_avatax_config_company(self)
    Returns the AvaTax configuration for the Company

New fields (11)
  • customer_code Char
    copy=False args: 'Customer Code'
  • date_validation Date
    copy=False help='The date the address was last validated by AvaTax and accepted' readonly=True args: 'Last Validation Date'
  • exemption_code_id Many2one → exemption.code
    deprecated=True args: 'exemption.code', 'Exemption Code (Deprecated)'
  • exemption_number Char
    deprecated=True args: 'Exemption Number (Deprecated)'
  • property_exemption_code_id Many2one → exemption.code
    company_dependent=True help='The type of exemption granted' args: 'exemption.code', 'Exemption Code'
  • property_exemption_number Char
    company_dependent=True help='The State identification number relevant fot the exemption' args: 'Exemption Number'
  • property_tax_exempt Boolean
    company_dependent=True help='This company or address can claim for tax exemption' args: 'Is Tax Exempt'
  • tax_exempt Boolean
    deprecated=True args: 'Is Tax Exempt (Deprecated))'
  • use_commercial_entity Boolean
    compute='_compute_use_commercial_entity'
  • validated_on_save Boolean
    help='Indicates if the address is already validated on save before calling the wizard' args: 'Validated On Save'
  • validation_method Selection
    copy=False help='It gets populated when the address is validated by the method' readonly=True args: [('avatax', 'AVALARA'), ('usps', 'USPS'), ('other', 'Other')], 'Address Validation Method'
Public methods (10)
  • button_avatax_validate_address(self)
    Method is used to verify of state and country
  • check_exemption_number(self)
    @api.depends('property_tax_exempt', 'property_exemption_code_id', 'property_exemption_number')
    When tax exempt check then atleast exemption number or exemption code should be filled
  • create(self, vals)
    @api.model
  • generate_cust_code(self)
    Auto populate customer code
  • get_country_from_code(self, code)
    Returns the country from the code.
  • get_state_from_code(self, state_code, country_code)
    Returns the state from the code.
  • get_valid_address_vals(self, validation_on_save=False)
  • multi_address_validation(self, validation_on_save=False)
  • onchange_tax_exemption(self)
    @api.onchange('tax_exempt')
  • write(self, vals)
STATUS
STATUSOpen migration PR - not merged yet for this version
REPOSITORY
REPOSITORYOCA/account-fiscal-rule
PULL REQUEST
PULL REQUEST[19.0][MIG] account_avatax_oca: Migration to 19.0 (#591)