Account Product - Fiscal Classification

account_product_fiscal_classification
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_product_fiscal_classification
VERSION
VERSION 1.0.0
CATEGORY
CATEGORYAccounting
LICENSE
LICENSEAGPL-3
APPLICATION
APPLICATIONNo
AUTO-INSTALLABLE
AUTO-INSTALLABLENo
AUTHORS
AUTHORSOdoo Community Association (OCA), Akretion, GRAP, La Louve
MAINTAINERS
MAINTAINERSOdoo Community Association (OCA), Akretion, GRAP, La Louve
COMMITTERS
COMMITTERSWeblate, OCA-git-bot, oca-ci, phucph
WEBSITE
WEBSITEhttps://github.com/OCA/account-fiscal-rule
LAST TRACKING UPDATE
LAST TRACKING UPDATE2026-07-06 19:30:05
ODOO DEPENDENCIES
ODOO DEPENDENCIES OCA/account-financial-tools:
    - account_usability
odoo/odoo:
    - account
    - base_setup
    - base
    - web
    - onboarding
    - product
    - mail
    - bus
    - web_tour
    - html_editor
    - uom
    - analytic
    - portal
    - web_editor
    - http_routing
    - auth_signup
    - digest
    - resource
PYTHON DEPENDENCIES
PYTHON DEPENDENCIES Not have
SYSTEM DEPENDENCIES
SYSTEM DEPENDENCIES Not have
DESCRIPTION
DESCRIPTION
This module extends the Odoo Account module to introduce Fiscal
Classifications.

A fiscal classification is an association of purchase and sale taxes
that have to be set on your products.

![product template form](../static/description/product_template_form.png)

This new design provides the following improvments.

- It is more simple (less clicks quantity) to configure correctly a
  product. (You only have to set a fiscal classification, instead of
  setting one or many sale taxes, then click on purchase tab and set one
  or many purchase taxes.)
- Prevent users to select incompatible purchase and sale taxes. French
  Exemple: A product can not be configured with:
  - Purchase Taxes: 5.5%
  - Sale Taxes: 20%
- Optionaly, you can restrict the usage of some fiscal classifications
  to some product categories. French Exemple : A product set in the
  category "Beer and wine" can not have a sale tax 5,5%. (20% is
  mandatory)

Code Analysis

Views touched (8)
XML IDNameModelTypeStatus
view_account_product_fiscal_classification_form account.product.fiscal.classification form New
view_account_product_fiscal_classification_search account.product.fiscal.classification search New
view_account_product_fiscal_classification_tree account.product.fiscal.classification list New
view_account_product_fiscal_rule_tree account.product.fiscal.rule list New
view_product_template_form_account product.template label Inherits account.product_template_form_view
view_product_template_search product.template field Inherits product.product_template_search_view
view_product_template_tree_account product.template field Inherits account.product_template_view_tree
view_wizard_change_fiscal_classification wizard.change.fiscal.classification form New
Models touched (4)

New fields (8)
  • active Boolean
    default=True help='If unchecked, it will allow you to hide the Fiscal Classification without removing it.'
  • company_id Many2one → res.company
    comodel_name='res.company' help='Specify a company if you want to define this Fiscal Classification only for specific company. Otherwise, this Fiscal Classification will be available for all companies.' string='Company'
  • description Text
  • name Char
    required=True
  • product_tmpl_ids One2many → product.template
    comodel_name='product.template' compute='_compute_product_tmpl_info' string='Products'
  • product_tmpl_qty Integer
    compute='_compute_product_tmpl_info' string='Products Quantity'
  • purchase_tax_ids Many2many → account.tax
    column1='fiscal_classification_id' column2='tax_id' comodel_name='account.tax' domain="[('type_tax_use', 'in', ['purchase', 'none'])]" relation='fiscal_classification_purchase_tax_rel' string='Purchase Taxes'
  • sale_tax_ids Many2many → account.tax
    column1='fiscal_classification_id' column2='tax_id' comodel_name='account.tax' domain="[('type_tax_use', 'in', ['sale', 'none'])]" relation='fiscal_classification_sale_tax_rel' string='Sale Taxes'
Public methods (2)
  • unlink(self)
  • write(self, vals)

New fields (6)
  • action Selection
    default='forbid' required=True selection=[('forbid', 'Forbid'), ('allow', 'Allow')]
  • category_ids Many2many → product.category
    comodel_name='product.category'
  • company_id Many2one → res.company
    comodel_name='res.company' default=<expr> string='Company'
  • fiscal_classification_ids Many2many → account.product.fiscal.classification
    comodel_name='account.product.fiscal.classification' relation='fiscal_rule_fiscal_classification_rel'
  • message Text
  • sequence Integer
    default=10
Public methods (1)
  • check_product_templates_integrity(self, templates)
    @api.model

New fields (3)
  • fiscal_classification_id Many2one → account.product.fiscal.classification
    comodel_name='account.product.fiscal.classification' help="Specify the combination of taxes for this product. This field is required. If you dont find the correct Fiscal Classification, Please create a new one or ask to your account manager if you don't have the access right." string='Fiscal Classification' tracking=True
  • supplier_taxes_id Many2many
    default=False
  • taxes_id Many2many
    default=False
Public methods (3)
  • create(self, vals_list)
    @api.model_create_multi
  • get_view(self, view_id=None, view_type='form', **options)
    @api.model
    Set fiscal_classification_id required on all views. We don't set the field required by field definition to avoid incompatibility with other modules, errors on import, etc...
  • write(self, vals)

New fields (2)
  • new_fiscal_classification_id Many2one → account.product.fiscal.classification
    comodel_name='account.product.fiscal.classification' domain="[('id', '!=', old_fiscal_classification_id)]" required=True string='New Classification'
  • old_fiscal_classification_id Many2one → account.product.fiscal.classification
    comodel_name='account.product.fiscal.classification' default=_default_old_fiscal_classification_id readonly=True string='Old Classification'
Public methods (1)
  • button_change_fiscal_classification(self)
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_product_fiscal_classification
VERSION
VERSION 1.2.0
CATEGORY
CATEGORYAccounting
LICENSE
LICENSEAGPL-3
APPLICATION
APPLICATIONNo
AUTO-INSTALLABLE
AUTO-INSTALLABLENo
AUTHORS
AUTHORSOdoo Community Association (OCA), Akretion, GRAP, La Louve
MAINTAINERS
MAINTAINERSOdoo Community Association (OCA), Akretion, GRAP, La Louve
COMMITTERS
COMMITTERSAlexis de Lattre, Sylvain LE GAL, Daniel Reis, David Beal, Weblate, OCA-git-bot, oca-ci
WEBSITE
WEBSITEhttps://github.com/OCA/account-fiscal-rule
LAST TRACKING UPDATE
LAST TRACKING UPDATE2026-07-06 00:53:43
ODOO DEPENDENCIES
ODOO DEPENDENCIES OCA/account-financial-tools:
    - account_usability
odoo/odoo:
    - account
    - base_setup
    - base
    - web
    - product
    - mail
    - bus
    - web_tour
    - uom
    - analytic
    - portal
    - web_editor
    - http_routing
    - auth_signup
    - digest
    - resource
PYTHON DEPENDENCIES
PYTHON DEPENDENCIES Not have
SYSTEM DEPENDENCIES
SYSTEM DEPENDENCIES Not have
DESCRIPTION
DESCRIPTION

Code Analysis

Views touched (8)
XML IDNameModelTypeStatus
view_account_product_fiscal_classification_form account.product.fiscal.classification form New
view_account_product_fiscal_classification_search account.product.fiscal.classification search New
view_account_product_fiscal_classification_template_form account.product.fiscal.classification.template form New
view_account_product_fiscal_classification_template_tree account.product.fiscal.classification.template tree New
view_account_product_fiscal_classification_tree account.product.fiscal.classification tree New
view_account_product_fiscal_rule_tree account.product.fiscal.rule tree New
view_product_template_search product.template field Inherits product.product_template_search_view
view_wizard_change_fiscal_classification wizard.change.fiscal.classification form New
Models touched (7)

New fields (1)
  • classification_template_ids One2many → account.product.fiscal.classification.template
    comodel_name='account.product.fiscal.classification.template' inverse_name='chart_template_id' string='Fiscal Classification Templates'
Public methods (0)

No public methods.

New fields (8)
  • active Boolean
    default=True help='If unchecked, it will allow you to hide the Fiscal Classification without removing it.' tracking=True
  • company_id Many2one → res.company
    comodel_name='res.company' help='Specify a company if you want to define this Fiscal Classification only for specific company. Otherwise, this Fiscal Classification will be available for all companies.' string='Company' tracking=True
  • description Text
  • name Char
    required=True tracking=True
  • product_tmpl_ids One2many → product.template
    comodel_name='product.template' compute='_compute_product_tmpl_info' string='Products'
  • product_tmpl_qty Integer
    compute='_compute_product_tmpl_info' string='Products Quantity'
  • purchase_tax_ids Many2many → account.tax
    column1='fiscal_classification_id' column2='tax_id' comodel_name='account.tax' domain="[\n ('type_tax_use', 'in', ['purchase', 'all'])]" relation='fiscal_classification_purchase_tax_rel' string='Purchase Taxes' tracking=True
  • sale_tax_ids Many2many → account.tax
    column1='fiscal_classification_id' column2='tax_id' comodel_name='account.tax' domain="[\n ('type_tax_use', 'in', ['sale', 'all'])]" relation='fiscal_classification_sale_tax_rel' string='Sale Taxes' tracking=True
Public methods (2)
  • unlink(self)
  • write(self, vals)

New fields (6)
  • active Boolean
    default=True help='If unchecked, it will allow you to hide the Fiscal Classification Template without removing it.'
  • chart_template_id Many2one → account.chart.template
    comodel_name='account.chart.template' required=True string='Chart Template'
  • description Text
  • name Char
    required=True translate=True
  • purchase_tax_ids Many2many → account.tax.template
    column1='fiscal_classification_id' column2='tax_id' comodel_name='account.tax.template' domain="[('type_tax_use', 'in', ['purchase', 'all']),('chart_template_id', '=', chart_template_id),]" relation='fiscal_classification_template_purchase_tax_rel' string='Purchase Taxes'
  • sale_tax_ids Many2many → account.tax.template
    column1='fiscal_classification_id' column2='tax_id' comodel_name='account.tax.template' domain="[('type_tax_use', 'in', ['sale', 'all']),('chart_template_id', '=', chart_template_id),]" relation='fiscal_classification_template_sale_tax_rel' string='Sale Taxes'
Public methods (0)

No public methods.

New fields (6)
  • action Selection
    default='forbid' required=True selection=[('forbid', 'Forbid'), ('allow', 'Allow')]
  • category_ids Many2many → product.category
    comodel_name='product.category'
  • company_id Many2one → res.company
    comodel_name='res.company' default=<expr> string='Company'
  • fiscal_classification_ids Many2many → account.product.fiscal.classification
    comodel_name='account.product.fiscal.classification' relation='fiscal_rule_fiscal_classification_rel'
  • message Text
  • sequence Integer
    default=10
Public methods (1)
  • check_product_templates_integrity(self, templates)
    @api.model

New fields (0)

No new fields.

Public methods (0)

No public methods.

New fields (3)
  • fiscal_classification_id Many2one → account.product.fiscal.classification
    comodel_name='account.product.fiscal.classification' help="Specify the combination of taxes for this product. This field is required. If you dont find the correct Fiscal Classification, Please create a new one or ask to your account manager if you don't have the access right." string='Fiscal Classification' tracking=True
  • supplier_taxes_id Many2many
    default=False readonly=True
  • taxes_id Many2many
    default=False readonly=True
Public methods (2)
  • create(self, vals_list)
    @api.model_create_multi
  • write(self, vals)

New fields (2)
  • new_fiscal_classification_id Many2one → account.product.fiscal.classification
    comodel_name='account.product.fiscal.classification' domain="[('id', '!=', old_fiscal_classification_id)]" required=True string='New Classification'
  • old_fiscal_classification_id Many2one → account.product.fiscal.classification
    comodel_name='account.product.fiscal.classification' default=_default_old_fiscal_classification_id readonly=True string='Old Classification'
Public methods (1)
  • button_change_fiscal_classification(self)
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_product_fiscal_classification
VERSION
VERSION 1.1.0
CATEGORY
CATEGORYAccounting
LICENSE
LICENSEAGPL-3
APPLICATION
APPLICATIONNo
AUTO-INSTALLABLE
AUTO-INSTALLABLENo
AUTHORS
AUTHORSOdoo Community Association (OCA), Akretion, GRAP, La Louve
MAINTAINERS
MAINTAINERSOdoo Community Association (OCA), Akretion, GRAP, La Louve
COMMITTERS
COMMITTERSSylvain LE GAL, Daniel Reis, oca-travis, Weblate, OCA-git-bot, Pierrick Brun, Florian Mounier
WEBSITE
WEBSITEhttps://github.com/OCA/account-fiscal-rule
LAST TRACKING UPDATE
LAST TRACKING UPDATE2026-07-06 00:40:54
ODOO DEPENDENCIES
ODOO DEPENDENCIES OCA/account-financial-tools:
    - account_menu
odoo/odoo:
    - account
    - base_setup
    - base
    - web
    - product
    - mail
    - bus
    - web_tour
    - uom
    - analytic
    - portal
    - web_editor
    - http_routing
    - auth_signup
    - digest
    - resource
PYTHON DEPENDENCIES
PYTHON DEPENDENCIES Not have
SYSTEM DEPENDENCIES
SYSTEM DEPENDENCIES Not have
DESCRIPTION
DESCRIPTION

Code Analysis

Views touched (9)
XML IDNameModelTypeStatus
view_account_product_fiscal_classification_form account.product.fiscal.classification form New
view_account_product_fiscal_classification_template_form account.product.fiscal.classification.template form New
view_account_product_fiscal_classification_template_tree account.product.fiscal.classification.template tree New
view_account_product_fiscal_classification_tree account.product.fiscal.classification tree New
view_product_category_form product.category xpath Inherits account.view_category_property_form
view_product_category_tree product.category field Inherits product.product_category_list_view
view_product_template_form product.template field Inherits account.product_template_form_view
view_product_template_search product.template field Inherits product.product_template_search_view
view_wizard_change_fiscal_classification wizard.change.fiscal.classification form New
Models touched (6)

New fields (1)
  • classification_template_ids One2many → account.product.fiscal.classification.template
    comodel_name='account.product.fiscal.classification.template' inverse_name='chart_template_id' string='Fiscal Classification Templates'
Public methods (0)

No public methods.

New fields (9)
  • active Boolean
    default=True help='If unchecked, it will allow you to hide the Fiscal Classification without removing it.'
  • company_id Many2one → res.company
    comodel_name='res.company' default=_default_company_id help='Specify a company if you want to define this Fiscal Classification only for specific company. Otherwise, this Fiscal Classification will be available for all companies.' string='Company'
  • description Text
  • name Char
    required=True translate=True
  • product_tmpl_ids One2many → product.template
    comodel_name='product.template' compute='_compute_product_tmpl_info' string='Products'
  • product_tmpl_qty Integer
    compute='_compute_product_tmpl_info' string='Products Quantity'
  • purchase_tax_ids Many2many → account.tax
    column1='fiscal_classification_id' column2='tax_id' comodel_name='account.tax' domain="[\n ('type_tax_use', 'in', ['purchase', 'all'])]" relation='fiscal_classification_purchase_tax_rel' string='Purchase Taxes'
  • sale_tax_ids Many2many → account.tax
    column1='fiscal_classification_id' column2='tax_id' comodel_name='account.tax' domain="[\n ('type_tax_use', 'in', ['sale', 'all'])]" relation='fiscal_classification_sale_tax_rel' string='Sale Taxes'
  • usage_group_id Many2one → res.groups
    comodel_name='res.groups' help='If defined, the user should be member to this group, to use this fiscal classification when creating or updating products' string='Usage Group'
Public methods (3)
  • find_or_create(self, company_id, sale_tax_ids, purchase_tax_ids)
    @api.model
  • unlink(self)
  • write(self, vals)

New fields (7)
  • active Boolean
    default=True help='If unchecked, it will allow you to hide the Fiscal Classification Template without removing it.'
  • chart_template_id Many2one → account.chart.template
    comodel_name='account.chart.template' required=True string='Chart Template'
  • description Text
  • name Char
    required=True translate=True
  • purchase_tax_ids Many2many → account.tax.template
    column1='fiscal_classification_id' column2='tax_id' comodel_name='account.tax.template' domain="[('type_tax_use', 'in', ['purchase', 'all']),('chart_template_id', '=', chart_template_id),]" relation='fiscal_classification_template_purchase_tax_rel' string='Purchase Taxes'
  • sale_tax_ids Many2many → account.tax.template
    column1='fiscal_classification_id' column2='tax_id' comodel_name='account.tax.template' domain="[('type_tax_use', 'in', ['sale', 'all']),('chart_template_id', '=', chart_template_id),]" relation='fiscal_classification_template_sale_tax_rel' string='Sale Taxes'
  • usage_group_id Many2one → res.groups
    comodel_name='res.groups' help='If defined, the user should be member to this group, to use this fiscal classification when creating or updating products' string='Usage Group'
Public methods (0)

No public methods.

New fields (4)
  • fiscal_classification_ids Many2many → account.product.fiscal.classification
    column1='product_category_id' column2='fiscal_classification_id' comodel_name='account.product.fiscal.classification' help='Specify Fiscal Classifications that will be allowed for products that belong to this Product Category.' relation='product_category_fiscal_classification_rel' string='Allowed Fiscal Classifications'
  • fiscal_restriction Boolean
    default=False help='Check this box if you want to enable Restriction on Fiscal Classifications.' string='Restriction on Fiscal Classifications'
  • forbidden_classification_template_ids Many2many → product.template
    comodel_name='product.template' compute='_compute_forbidden_classification' string='Products with Forbidden Classification'
  • forbidden_classification_template_qty Integer
    compute='_compute_forbidden_classification' string='Quantity of Products with Forbidden Classification'
Public methods (1)
  • apply_classification_to_childs(self)

New fields (1)
  • fiscal_classification_id Many2one → account.product.fiscal.classification
    comodel_name='account.product.fiscal.classification' help="Specify the combination of taxes for this product. This field is required. If you dont find the correct Fiscal Classification, Please create a new one or ask to your account manager if you don't have the access right." string='Fiscal Classification' tracking=True
Public methods (4)
  • create(self, vals)
    @api.model
  • fields_view_get(self, view_id=None, view_type='form', toolbar=False, submenu=False)
    @api.model
    Set 'fiscal_classification_id' as required by fields_view_get: We don't set it by fields declaration in python file, to avoid incompatibility with other modules that could have demo data without fiscal_classification_id (the bugs will occur depending of the order in which the modules are loaded); We don't set it by view inheritance in xml file to impact all views (form / tree) that could define the model 'product.template';
  • write(self, vals)
  • write_taxes_setting(self, vals)
    If Fiscal Classification is defined, set the according taxes to the product(s); Otherwise, find the correct Fiscal classification, depending of the taxes, or create a new one, if no one are found.

New fields (2)
  • new_fiscal_classification_id Many2one → account.product.fiscal.classification
    comodel_name='account.product.fiscal.classification' domain="[('id', '!=', old_fiscal_classification_id)]" required=True string='New Classification'
  • old_fiscal_classification_id Many2one → account.product.fiscal.classification
    comodel_name='account.product.fiscal.classification' default=_default_old_fiscal_classification_id readonly=True string='Old Classification'
Public methods (1)
  • button_change_fiscal_classification(self)
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/13.0/account_product_fiscal_classification
VERSION
VERSION 1.0.0
CATEGORY
CATEGORYAccounting
LICENSE
LICENSEAGPL-3
APPLICATION
APPLICATIONNo
AUTO-INSTALLABLE
AUTO-INSTALLABLENo
AUTHORS
AUTHORSOdoo Community Association (OCA), Akretion, GRAP, La Louve
MAINTAINERS
MAINTAINERSOdoo Community Association (OCA), Akretion, GRAP, La Louve
COMMITTERS
COMMITTERSoca-travis, Weblate, OCA-git-bot, Pierrick Brun
WEBSITE
WEBSITEhttps://github.com/OCA/account-fiscal-rule
LAST TRACKING UPDATE
LAST TRACKING UPDATE2026-07-06 00:34:11
ODOO DEPENDENCIES
ODOO DEPENDENCIES OCA/account-financial-tools:
    - account_menu
odoo/odoo:
    - account
    - base_setup
    - base
    - web
    - product
    - mail
    - bus
    - web_tour
    - uom
    - analytic
    - portal
    - web_editor
    - http_routing
    - auth_signup
    - digest
    - resource
PYTHON DEPENDENCIES
PYTHON DEPENDENCIES Not have
SYSTEM DEPENDENCIES
SYSTEM DEPENDENCIES Not have
DESCRIPTION
DESCRIPTION

Code Analysis

Views touched (9)
XML IDNameModelTypeStatus
view_account_product_fiscal_classification_form account.product.fiscal.classification form New
view_account_product_fiscal_classification_template_form account.product.fiscal.classification.template form New
view_account_product_fiscal_classification_template_tree account.product.fiscal.classification.template tree New
view_account_product_fiscal_classification_tree account.product.fiscal.classification tree New
view_product_category_form product.category xpath Inherits account.view_category_property_form
view_product_category_tree product.category field Inherits product.product_category_list_view
view_product_template_form product.template field Inherits account.product_template_form_view
view_product_template_search product.template field Inherits product.product_template_search_view
view_wizard_change_fiscal_classification wizard.change.fiscal.classification form New
Models touched (6)

New fields (1)
  • classification_template_ids One2many → account.product.fiscal.classification.template
    comodel_name='account.product.fiscal.classification.template' inverse_name='chart_template_id' string='Fiscal Classification Templates'
Public methods (0)

No public methods.

New fields (9)
  • active Boolean
    default=True help='If unchecked, it will allow you to hide the Fiscal Classification without removing it.'
  • company_id Many2one → res.company
    comodel_name='res.company' default=_default_company_id help='Specify a company if you want to define this Fiscal Classification only for specific company. Otherwise, this Fiscal Classification will be available for all companies.' string='Company'
  • description Text
  • name Char
    required=True translate=True
  • product_tmpl_ids One2many → product.template
    comodel_name='product.template' compute='_compute_product_tmpl_info' string='Products'
  • product_tmpl_qty Integer
    compute='_compute_product_tmpl_info' string='Products Quantity'
  • purchase_tax_ids Many2many → account.tax
    column1='fiscal_classification_id' column2='tax_id' comodel_name='account.tax' domain="[\n ('type_tax_use', 'in', ['purchase', 'all'])]" relation='fiscal_classification_purchase_tax_rel' string='Purchase Taxes'
  • sale_tax_ids Many2many → account.tax
    column1='fiscal_classification_id' column2='tax_id' comodel_name='account.tax' domain="[\n ('type_tax_use', 'in', ['sale', 'all'])]" relation='fiscal_classification_sale_tax_rel' string='Sale Taxes'
  • usage_group_id Many2one → res.groups
    comodel_name='res.groups' help='If defined, the user should be member to this group, to use this fiscal classification when creating or updating products' string='Usage Group'
Public methods (3)
  • find_or_create(self, company_id, sale_tax_ids, purchase_tax_ids)
    @api.model
  • unlink(self)
  • write(self, vals)

New fields (7)
  • active Boolean
    default=True help='If unchecked, it will allow you to hide the Fiscal Classification Template without removing it.'
  • chart_template_id Many2one → account.chart.template
    comodel_name='account.chart.template' required=True string='Chart Template'
  • description Text
  • name Char
    required=True translate=True
  • purchase_tax_ids Many2many → account.tax.template
    column1='fiscal_classification_id' column2='tax_id' comodel_name='account.tax.template' domain="[('type_tax_use', 'in', ['purchase', 'all']),('chart_template_id', '=', chart_template_id),]" relation='fiscal_classification_template_purchase_tax_rel' string='Purchase Taxes'
  • sale_tax_ids Many2many → account.tax.template
    column1='fiscal_classification_id' column2='tax_id' comodel_name='account.tax.template' domain="[('type_tax_use', 'in', ['sale', 'all']),('chart_template_id', '=', chart_template_id),]" relation='fiscal_classification_template_sale_tax_rel' string='Sale Taxes'
  • usage_group_id Many2one → res.groups
    comodel_name='res.groups' help='If defined, the user should be member to this group, to use this fiscal classification when creating or updating products' string='Usage Group'
Public methods (0)

No public methods.

New fields (4)
  • fiscal_classification_ids Many2many → account.product.fiscal.classification
    column1='product_category_id' column2='fiscal_classification_id' comodel_name='account.product.fiscal.classification' help='Specify Fiscal Classifications that will be allowed for products that belong to this Product Category.' relation='product_category_fiscal_classification_rel' string='Allowed Fiscal Classifications'
  • fiscal_restriction Boolean
    default=False help='Check this box if you want to enable Restriction on Fiscal Classifications.' string='Restriction on Fiscal Classifications'
  • forbidden_classification_template_ids Many2many → product.template
    comodel_name='product.template' compute='_compute_forbidden_classification' string='Products with Forbidden Classification'
  • forbidden_classification_template_qty Integer
    compute='_compute_forbidden_classification' string='Quantity of Products with Forbidden Classification'
Public methods (1)
  • apply_classification_to_childs(self)

New fields (1)
  • fiscal_classification_id Many2one → account.product.fiscal.classification
    comodel_name='account.product.fiscal.classification' help="Specify the combination of taxes for this product. This field is required. If you dont find the correct Fiscal Classification, Please create a new one or ask to your account manager if you don't have the access right." string='Fiscal Classification' tracking=True
Public methods (4)
  • create(self, vals)
    @api.model
  • fields_view_get(self, view_id=None, view_type='form', toolbar=False, submenu=False)
    @api.model
    Set 'fiscal_classification_id' as required by fields_view_get: We don't set it by fields declaration in python file, to avoid incompatibility with other modules that could have demo data without fiscal_classification_id (the bugs will occur depending of the order in which the modules are loaded); We don't set it by view inheritance in xml file to impact all views (form / tree) that could define the model 'product.template';
  • write(self, vals)
  • write_taxes_setting(self, vals)
    If Fiscal Classification is defined, set the according taxes to the product(s); Otherwise, find the correct Fiscal classification, depending of the taxes, or create a new one, if no one are found.

New fields (2)
  • new_fiscal_classification_id Many2one → account.product.fiscal.classification
    comodel_name='account.product.fiscal.classification' domain="[('id', '!=', old_fiscal_classification_id)]" required=True string='New Classification'
  • old_fiscal_classification_id Many2one → account.product.fiscal.classification
    comodel_name='account.product.fiscal.classification' default=_default_old_fiscal_classification_id readonly=True string='Old Classification'
Public methods (1)
  • button_change_fiscal_classification(self)
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/12.0/account_product_fiscal_classification
VERSION
VERSION 1.3.3
CATEGORY
CATEGORYAccounting
LICENSE
LICENSEAGPL-3
APPLICATION
APPLICATIONNo
AUTO-INSTALLABLE
AUTO-INSTALLABLENo
AUTHORS
AUTHORSOdoo Community Association (OCA), Akretion, GRAP, La Louve
MAINTAINERS
MAINTAINERSOdoo Community Association (OCA), Akretion, GRAP, La Louve
COMMITTERS
COMMITTERSSylvain LE GAL, GitHub, Daniel Reis, OCA Transbot, David Beal, oca-travis, Weblate, OCA-git-bot, Pierrick Brun
WEBSITE
WEBSITEhttps://github.com/OCA/account-fiscal-rule
LAST TRACKING UPDATE
LAST TRACKING UPDATE2026-07-06 00:29:15
ODOO DEPENDENCIES
ODOO DEPENDENCIES OCA/account-financial-tools:
    - account_coa_menu
odoo/odoo:
    - account
    - base_setup
    - base
    - web
    - product
    - decimal_precision
    - mail
    - bus
    - web_tour
    - uom
    - analytic
    - portal
    - http_routing
    - digest
PYTHON DEPENDENCIES
PYTHON DEPENDENCIES Not have
SYSTEM DEPENDENCIES
SYSTEM DEPENDENCIES Not have
DESCRIPTION
DESCRIPTION

Code Analysis

Views touched (9)
XML IDNameModelTypeStatus
view_account_product_fiscal_classification_form account.product.fiscal.classification form New
view_account_product_fiscal_classification_template_form account.product.fiscal.classification.template form New
view_account_product_fiscal_classification_template_tree account.product.fiscal.classification.template tree New
view_account_product_fiscal_classification_tree account.product.fiscal.classification tree New
view_product_category_form product.category xpath Inherits account.view_category_property_form
view_product_category_tree product.category field Inherits product.product_category_list_view
view_product_template_form product.template field Inherits account.product_template_form_view
view_product_template_search product.template field Inherits product.product_template_search_view
view_wizard_change_fiscal_classification wizard.change.fiscal.classification form New
Models touched (7)

New fields (1)
  • classification_template_ids One2many → account.product.fiscal.classification.template
    comodel_name='account.product.fiscal.classification.template' inverse_name='chart_template_id' string='Fiscal Classification Templates'
Public methods (0)

No public methods.

New fields (9)
  • active Boolean
    default=True help='If unchecked, it will allow you to hide the Fiscal Classification without removing it.'
  • company_id Many2one → res.company
    comodel_name='res.company' default=_default_company_id help='Specify a company if you want to define this Fiscal Classification only for specific company. Otherwise, this Fiscal Classification will be available for all companies.' string='Company'
  • description Text
  • name Char
    required=True translate=True
  • product_tmpl_ids One2many → product.template
    comodel_name='product.template' compute='_compute_product_tmpl_info' string='Products'
  • product_tmpl_qty Integer
    compute='_compute_product_tmpl_info' string='Products Quantity'
  • purchase_tax_ids Many2many → account.tax
    column1='fiscal_classification_id' column2='tax_id' comodel_name='account.tax' domain="[\n ('type_tax_use', 'in', ['purchase', 'all'])]" oldname='purchase_base_tax_ids' relation='fiscal_classification_purchase_tax_rel' string='Purchase Taxes'
  • sale_tax_ids Many2many → account.tax
    column1='fiscal_classification_id' column2='tax_id' comodel_name='account.tax' domain="[\n ('type_tax_use', 'in', ['sale', 'all'])]" oldname='sale_base_tax_ids' relation='fiscal_classification_sale_tax_rel' string='Sale Taxes'
  • usage_group_id Many2one → res.groups
    comodel_name='res.groups' help='If defined, the user should be member to this group, to use this fiscal classification when creating or updating products' string='Usage Group'
Public methods (3)
  • find_or_create(self, company_id, sale_tax_ids, purchase_tax_ids)
    @api.model
  • unlink(self)
    @api.multi
  • write(self, vals)
    @api.multi

New fields (7)
  • active Boolean
    default=True help='If unchecked, it will allow you to hide the Fiscal Classification Template without removing it.'
  • chart_template_id Many2one → account.chart.template
    comodel_name='account.chart.template' required=True string='Chart Template'
  • description Text
  • name Char
    required=True translate=True
  • purchase_tax_ids Many2many → account.tax.template
    column1='fiscal_classification_id' column2='tax_id' comodel_name='account.tax.template' domain="[('type_tax_use', 'in', ['purchase', 'all']),('chart_template_id', '=', chart_template_id),]" oldname='purchase_base_tax_ids' relation='fiscal_classification_template_purchase_tax_rel' string='Purchase Taxes'
  • sale_tax_ids Many2many → account.tax.template
    column1='fiscal_classification_id' column2='tax_id' comodel_name='account.tax.template' domain="[('type_tax_use', 'in', ['sale', 'all']),('chart_template_id', '=', chart_template_id),]" oldname='sale_base_tax_ids' relation='fiscal_classification_template_sale_tax_rel' string='Sale Taxes'
  • usage_group_id Many2one → res.groups
    comodel_name='res.groups' help='If defined, the user should be member to this group, to use this fiscal classification when creating or updating products' string='Usage Group'
Public methods (0)

No public methods.

New fields (4)
  • fiscal_classification_ids Many2many → account.product.fiscal.classification
    column1='product_category_id' column2='fiscal_classification_id' comodel_name='account.product.fiscal.classification' help='Specify Fiscal Classifications that will be allowed for products that belong to this Product Category.' relation='product_category_fiscal_classification_rel' string='Allowed Fiscal Classifications'
  • fiscal_restriction Boolean
    default=False help='Check this box if you want to enable Restriction on Fiscal Classifications.' string='Restriction on Fiscal Classifications'
  • forbidden_classification_template_ids Many2many → product.template
    comodel_name='product.template' compute='_compute_forbidden_classification' string='Products with Forbidden Classification'
  • forbidden_classification_template_qty Integer
    compute='_compute_forbidden_classification' string='Quantity of Products with Forbidden Classification'
Public methods (1)
  • apply_classification_to_childs(self)
    @api.multi

New fields (0)

No new fields.

Public methods (0)

No public methods.

New fields (1)
  • fiscal_classification_id Many2one → account.product.fiscal.classification
    comodel_name='account.product.fiscal.classification' help="Specify the combination of taxes for this product. This field is required. If you dont find the correct Fiscal Classification, Please create a new one or ask to your account manager if you don't have the access right." string='Fiscal Classification' track_visibility='onchange'
Public methods (4)
  • create(self, vals)
    @api.model
  • fields_view_get(self, view_id=None, view_type='form', toolbar=False, submenu=False)
    @api.model
    Set 'fiscal_classification_id' as required by fields_view_get: We don't set it by fields declaration in python file, to avoid incompatibility with other modules that could have demo data without fiscal_classification_id (the bugs will occur depending of the order in which the modules are loaded); We don't set it by view inheritance in xml file to impact all views (form / tree) that could define the model 'product.template';
  • write(self, vals)
    @api.multi
  • write_taxes_setting(self, vals)
    @api.multi
    If Fiscal Classification is defined, set the according taxes to the product(s); Otherwise, find the correct Fiscal classification, depending of the taxes, or create a new one, if no one are found.

New fields (2)
  • new_fiscal_classification_id Many2one → account.product.fiscal.classification
    comodel_name='account.product.fiscal.classification' domain="[('id', '!=', old_fiscal_classification_id)]" required=True string='New Classification'
  • old_fiscal_classification_id Many2one → account.product.fiscal.classification
    comodel_name='account.product.fiscal.classification' default=_default_old_fiscal_classification_id readonly=True string='Old Classification'
Public methods (1)
  • button_change_fiscal_classification(self)
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/10.0/account_product_fiscal_classification
VERSION
VERSION 1.0.0
CATEGORY
CATEGORYAccounting
LICENSE
LICENSEAGPL-3
APPLICATION
APPLICATIONNo
AUTO-INSTALLABLE
AUTO-INSTALLABLENo
AUTHORS
AUTHORSOdoo Community Association (OCA), Akretion, GRAP, La Louve
MAINTAINERS
MAINTAINERSOdoo Community Association (OCA), Akretion, GRAP, La Louve
COMMITTERS
COMMITTERSRaphaël Valyi, Sylvain LE GAL, GitHub, Stéphane Bidoul (ACSONE), Tonow-c2c, OCA Transbot, oca-travis, Weblate, OCA-git-bot
WEBSITE
WEBSITEhttps://odoo-community.org/
LAST TRACKING UPDATE
LAST TRACKING UPDATE2026-07-06 00:19:54
ODOO DEPENDENCIES
ODOO DEPENDENCIES odoo/odoo:
    - account
    - base_setup
    - base
    - web_kanban
    - web
    - product
    - decimal_precision
    - mail
    - bus
    - web_tour
    - report
    - analytic
    - web_planner
    - l10n_generic_coa
PYTHON DEPENDENCIES
PYTHON DEPENDENCIES Not have
SYSTEM DEPENDENCIES
SYSTEM DEPENDENCIES Not have
DESCRIPTION
DESCRIPTION

Code Analysis

Views touched (11)
XML IDNameModelTypeStatus
view_account_product_fiscal_classification_form account.product.fiscal.classification form New
view_account_product_fiscal_classification_template_form account.product.fiscal.classification.template form New
view_account_product_fiscal_classification_template_tree account.product.fiscal.classification.template tree New
view_account_product_fiscal_classification_tree account.product.fiscal.classification tree New
view_product_category_form product.category xpath Inherits account.view_category_property_form
view_product_category_tree product.category field Inherits product.product_category_list_view
view_product_template_form product.template field Inherits account.product_template_form_view
view_product_template_search product.template field Inherits product.product_template_search_view
view_product_template_tree product.template tree New
view_wizard_account_product_fiscal_classification Generate Product Fiscal Classification from Templates wizard.account.product.fiscal.classification form New
view_wizard_change_fiscal_classification wizard.change.fiscal.classification form New
Models touched (7)

New fields (5)
  • company_id Many2one → res.company
    comodel_name='res.company' default=_default_company_id help='Specify a company if you want to define this Fiscal Classification only for specific company. Otherwise, this Fiscal Classification will be available for all companies.' string='Company'
  • product_tmpl_ids One2many → product.template
    comodel_name='product.template' compute='_compute_product_tmpl_info' string='Products'
  • product_tmpl_qty Integer
    compute='_compute_product_tmpl_info' string='Products Quantity'
  • purchase_tax_ids Many2many → account.tax
    column1='fiscal_classification_id' column2='tax_id' comodel_name='account.tax' domain="[\n ('type_tax_use', 'in', ['purchase', 'all'])]" oldname='purchase_base_tax_ids' relation='fiscal_classification_purchase_tax_rel' string='Purchase Taxes'
  • sale_tax_ids Many2many → account.tax
    column1='fiscal_classification_id' column2='tax_id' comodel_name='account.tax' domain="[\n ('type_tax_use', 'in', ['sale', 'all'])]" oldname='sale_base_tax_ids' relation='fiscal_classification_sale_tax_rel' string='Sale Taxes'
Public methods (3)
  • find_or_create(self, company_id, sale_tax_ids, purchase_tax_ids)
    @api.model
  • unlink(self)
    @api.multi
  • write(self, vals)
    @api.multi

New fields (4)
  • active Boolean
    default=True help='If unchecked, it will allow you to hide the Fiscal Classification without removing it.'
  • code Char
  • description Text
  • name Char
    index=True required=True size=_MAX_LENGTH_NAME translate=True
Public methods (0)

No public methods.

New fields (2)
  • purchase_tax_ids Many2many → account.tax.template
    column1='fiscal_classification_id' column2='tax_id' comodel_name='account.tax.template' domain="[('type_tax_use', 'in', ['purchase', 'all'])]" oldname='purchase_base_tax_ids' relation='fiscal_classification_template_purchase_tax_rel' string='Purchase Taxes'
  • sale_tax_ids Many2many → account.tax.template
    column1='fiscal_classification_id' column2='tax_id' comodel_name='account.tax.template' domain="[('type_tax_use', 'in', ['sale', 'all'])]" oldname='sale_base_tax_ids' relation='fiscal_classification_template_sale_tax_rel' string='Sale Taxes'
Public methods (0)

No public methods.

New fields (4)
  • fiscal_classification_ids Many2many → account.product.fiscal.classification
    column1='product_category_id' column2='fiscal_classification_id' comodel_name='account.product.fiscal.classification' help='Specify Fiscal Classifications that will be allowed for products that belong to this Product Category.' relation='product_category_fiscal_classification_rel' string='Allowed Fiscal Classifications'
  • fiscal_restriction Boolean
    default=False help='Check this box if you want to enable Restriction on Fiscal Classifications.' string='Restriction on Fiscal Classifications'
  • forbidden_classification_template_ids Many2many → product.template
    comodel_name='product.template' compute='_compute_forbidden_classification' string='Products with Forbidden Classification'
  • forbidden_classification_template_qty Integer
    compute='_compute_forbidden_classification' string='Quantity of Products with Forbidden Classification'
Public methods (1)
  • apply_classification_to_childs(self)
    @api.multi

New fields (1)
  • fiscal_classification_id Many2one → account.product.fiscal.classification
    comodel_name='account.product.fiscal.classification' help="Specify the combination of taxes for this product. This field is required. If you dont find the correct Fiscal Classification, Please create a new one or ask to your account manager if you don't have the access right." string='Fiscal Classification'
Public methods (4)
  • create(self, vals)
    @api.model
  • fields_view_get(self, view_id=None, view_type='form', toolbar=False, submenu=False)
    @api.model
    Set 'fiscal_classification_id' as required by fields_view_get: We don't set it by fields declaration in python file, to avoid incompatibility with other modules that could have demo data without fiscal_classification_id (the bugs will occur depending of the order in which the modules are loaded); We don't set it by view inheritance in xml file to impact all views (form / tree) that could define the model 'product.template';
  • write(self, vals)
    @api.multi
  • write_taxes_setting(self, vals)
    @api.multi
    If Fiscal Classification is defined, set the according taxes to the product(s); Otherwise, find the correct Fiscal classification, depending of the taxes, or create a new one, if no one are found.

New fields (1)
  • company_id Many2one → res.company
    default=<expr> args: 'res.company', 'Company'
Public methods (1)
  • action_create(self)
    @api.multi

New fields (2)
  • new_fiscal_classification_id Many2one → account.product.fiscal.classification
    comodel_name='account.product.fiscal.classification' domain="[('id', '!=', old_fiscal_classification_id)]" required=True string='New Fiscal Classification'
  • old_fiscal_classification_id Many2one → account.product.fiscal.classification
    comodel_name='account.product.fiscal.classification' default=_default_old_fiscal_classification_id readonly=True string='Old Fiscal Classification'
Public methods (1)
  • button_change_fiscal_classification(self)
    @api.multi
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/9.0/account_product_fiscal_classification
VERSION
VERSION 1.0.0
CATEGORY
CATEGORYAccounting
LICENSE
LICENSEAGPL-3
APPLICATION
APPLICATIONNo
AUTO-INSTALLABLE
AUTO-INSTALLABLENo
AUTHORS
AUTHORSOdoo Community Association (OCA), Akretion, GRAP, La Louve
MAINTAINERS
MAINTAINERSOdoo Community Association (OCA), Akretion, GRAP, La Louve
COMMITTERS
COMMITTERSRaphaël Valyi, Sylvain LE GAL, GitHub, Stéphane Bidoul (ACSONE), OCA Transbot, oca-travis, Weblate, OCA-git-bot, Magno Costa - Akretion
WEBSITE
WEBSITEhttps://odoo-community.org/
LAST TRACKING UPDATE
LAST TRACKING UPDATE2026-07-06 00:15:19
ODOO DEPENDENCIES
ODOO DEPENDENCIES odoo/odoo:
    - account
    - base_setup
    - base
    - web_kanban
    - web
    - product
    - decimal_precision
    - mail
    - bus
    - report
    - analytic
    - web_tip
    - web_planner
    - l10n_generic_coa
PYTHON DEPENDENCIES
PYTHON DEPENDENCIES Not have
SYSTEM DEPENDENCIES
SYSTEM DEPENDENCIES Not have
DESCRIPTION
DESCRIPTION

Code Analysis

Views touched (11)
XML IDNameModelTypeStatus
view_account_product_fiscal_classification_form account.product.fiscal.classification form New
view_account_product_fiscal_classification_template_form account.product.fiscal.classification.template form New
view_account_product_fiscal_classification_template_tree account.product.fiscal.classification.template tree New
view_account_product_fiscal_classification_tree account.product.fiscal.classification tree New
view_product_category_form product.category xpath Inherits account.view_category_property_form
view_product_category_tree product.category field Inherits product.product_category_list_view
view_product_template_form product.template field Inherits account.product_template_form_view
view_product_template_search product.template field Inherits product.product_template_search_view
view_product_template_tree product.template tree New
view_wizard_account_product_fiscal_classification Generate Product Fiscal Classification from Templates wizard.account.product.fiscal.classification form New
view_wizard_change_fiscal_classification wizard.change.fiscal.classification form New
Models touched (7)

New fields (5)
  • company_id Many2one → res.company
    comodel_name='res.company' default=_default_company_id help='Specify a company if you want to define this Fiscal Classification only for specific company. Otherwise, this Fiscal Classification will be available for all companies.' string='Company'
  • product_tmpl_ids One2many → product.template
    comodel_name='product.template' compute='_compute_product_tmpl_info' string='Products'
  • product_tmpl_qty Integer
    compute='_compute_product_tmpl_info' string='Products Quantity'
  • purchase_tax_ids Many2many → account.tax
    column1='fiscal_classification_id' column2='tax_id' comodel_name='account.tax' domain="[\n ('type_tax_use', 'in', ['purchase', 'all'])]" oldname='purchase_base_tax_ids' relation='fiscal_classification_purchase_tax_rel' string='Purchase Taxes'
  • sale_tax_ids Many2many → account.tax
    column1='fiscal_classification_id' column2='tax_id' comodel_name='account.tax' domain="[\n ('type_tax_use', 'in', ['sale', 'all'])]" oldname='sale_base_tax_ids' relation='fiscal_classification_sale_tax_rel' string='Sale Taxes'
Public methods (3)
  • find_or_create(self, company_id, sale_tax_ids, purchase_tax_ids)
    @api.model
  • unlink(self)
    @api.multi
  • write(self, vals)
    @api.multi

New fields (4)
  • active Boolean
    default=True help='If unchecked, it will allow you to hide the Fiscal Classification without removing it.'
  • code Char
  • description Text
  • name Char
    required=True select=True size=_MAX_LENGTH_NAME translate=True
Public methods (0)

No public methods.

New fields (2)
  • purchase_tax_ids Many2many → account.tax.template
    column1='fiscal_classification_id' column2='tax_id' comodel_name='account.tax.template' domain="[\n ('type_tax_use', 'in', ['purchase', 'all'])]" oldname='purchase_base_tax_ids' relation='fiscal_classification_template_purchase_tax_rel' string='Purchase Taxes'
  • sale_tax_ids Many2many → account.tax.template
    column1='fiscal_classification_id' column2='tax_id' comodel_name='account.tax.template' domain="[\n ('type_tax_use', 'in', ['sale', 'all'])]" oldname='sale_base_tax_ids' relation='fiscal_classification_template_sale_tax_rel' string='Sale Taxes'
Public methods (0)

No public methods.

New fields (4)
  • fiscal_classification_ids Many2many → account.product.fiscal.classification
    column1='product_category_id' column2='fiscal_classification_id' comodel_name='account.product.fiscal.classification' help='Specify Fiscal Classifications that will be allowed for products that belong to this Product Category.' relation='product_category_fiscal_classification_rel' string='Allowed Fiscal Classifications'
  • fiscal_restriction Boolean
    default=False help='Check this box if you want to enable Restriction on Fiscal Classifications.' string='Restriction on Fiscal Classifications'
  • forbidden_classification_template_ids Many2many → product.template
    comodel_name='product.template' compute='_compute_forbidden_classification' string='Products with Forbidden Classification'
  • forbidden_classification_template_qty Integer
    compute='_compute_forbidden_classification' string='Quantity of Products with Forbidden Classification'
Public methods (1)
  • apply_classification_to_childs(self)
    @api.multi

New fields (1)
  • fiscal_classification_id Many2one → account.product.fiscal.classification
    comodel_name='account.product.fiscal.classification' help="Specify the combination of taxes for this product. This field is required. If you dont find the correct Fiscal Classification, Please create a new one or ask to your account manager if you don't have the access right." string='Fiscal Classification'
Public methods (4)
  • create(self, vals)
    @api.model
  • fields_view_get(self, cr, uid, view_id=None, view_type='form', context=None, toolbar=False, submenu=False)
    Set 'fiscal_classification_id' as required by fields_view_get: We don't set it by fields declaration in python file, to avoid incompatibility with other modules that could have demo data without fiscal_classification_id (the bugs will occur depending of the order in which the modules are loaded); We don't set it by view inheritance in xml file to impact all views (form / tree) that could define the model 'product.template';
  • write(self, vals)
    @api.multi
  • write_taxes_setting(self, vals)
    @api.multi
    If Fiscal Classification is defined, set the according taxes to the product(s); Otherwise, find the correct Fiscal classification, depending of the taxes, or create a new one, if no one are found.

New fields (1)
  • company_id Many2one → res.company
    default=<expr> args: 'res.company', 'Company'
Public methods (1)
  • action_create(self)
    @api.multi

New fields (2)
  • new_fiscal_classification_id Many2one → account.product.fiscal.classification
    comodel_name='account.product.fiscal.classification' domain="[('id', '!=', old_fiscal_classification_id)]" required=True string='New Fiscal Classification'
  • old_fiscal_classification_id Many2one → account.product.fiscal.classification
    comodel_name='account.product.fiscal.classification' default=_default_old_fiscal_classification_id readonly=True string='Old Fiscal Classification'
Public methods (1)
  • button_change_fiscal_classification(self)
    @api.one
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/8.0/account_product_fiscal_classification
VERSION
VERSION 2.1.0
CATEGORY
CATEGORYAccounting
LICENSE
LICENSEAGPL-3
APPLICATION
APPLICATIONNo
AUTO-INSTALLABLE
AUTO-INSTALLABLENo
AUTHORS
AUTHORSOdoo Community Association (OCA), Akretion, GRAP
MAINTAINERS
MAINTAINERSOdoo Community Association (OCA), Akretion, GRAP
COMMITTERS
COMMITTERSAlexandre Fayolle, Raphaël Valyi, Renato Lima, Pedro M. Baeza, Sylvain LE GAL, Stéphane Bidoul (ACSONE), OCA Transbot, Sébastien BEAU, Maxime Chambreuil - http://www.savoirfairelinux.com, OCA-git-bot
WEBSITE
WEBSITEhttps://odoo-community.org/
LAST TRACKING UPDATE
LAST TRACKING UPDATE2026-07-06 00:11:20
ODOO DEPENDENCIES
ODOO DEPENDENCIES odoo/odoo:
    - account
    - base_setup
    - base
    - web_kanban
    - web
    - product
    - decimal_precision
    - mail
    - report
    - analytic
    - board
    - edi
    - email_template
PYTHON DEPENDENCIES
PYTHON DEPENDENCIES Not have
SYSTEM DEPENDENCIES
SYSTEM DEPENDENCIES Not have
DESCRIPTION
DESCRIPTION

Code Analysis

Views touched (9)
XML IDNameModelTypeStatus
view_account_product_fiscal_classification_form account.product.fiscal.classification form New
view_account_product_fiscal_classification_template_form account.product.fiscal.classification.template form New
view_account_product_fiscal_classification_template_tree account.product.fiscal.classification.template tree New
view_account_product_fiscal_classification_tree account.product.fiscal.classification tree New
view_product_template_form product.template field Inherits account.product_template_form_view
view_product_template_search product.template field Inherits product.product_template_search_view
view_product_template_tree product.template tree New
view_wizard_account_product_fiscal_classification Generate Product Fiscal Classification from Templates wizard.account.product.fiscal.classification form New
view_wizard_change_fiscal_classification wizard.change.fiscal.classification form New
Models touched (7)

New fields (5)
  • company_id Many2one → res.company
    comodel_name='res.company' default=_default_company_id help='Specify a company if you want to define this Fiscal Classification only for specific company. Otherwise, this Fiscal Classification will be available for all companies.' string='Company'
  • product_tmpl_ids One2many → product.template
    comodel_name='product.template' compute='_compute_product_tmpl_info' string='Products'
  • product_tmpl_qty Integer
    compute='_compute_product_tmpl_info' string='Products Quantity'
  • purchase_tax_ids Many2many → account.tax
    column1='fiscal_classification_id' column2='tax_id' comodel_name='account.tax' domain="[\n ('parent_id', '=', False),\n ('type_tax_use', 'in', ['purchase', 'all'])]" oldname='purchase_base_tax_ids' relation='fiscal_classification_purchase_tax_rel' string='Purchase Taxes'
  • sale_tax_ids Many2many → account.tax
    column1='fiscal_classification_id' column2='tax_id' comodel_name='account.tax' domain="[\n ('parent_id', '=', False),\n ('type_tax_use', 'in', ['sale', 'all'])]" oldname='sale_base_tax_ids' relation='fiscal_classification_sale_tax_rel' string='Sale Taxes'
Public methods (3)
  • find_or_create(self, company_id, sale_tax_ids, purchase_tax_ids)
    @api.model
  • unlink(self)
    @api.multi
  • write(self, vals)
    @api.multi

New fields (4)
  • active Boolean
    default=True help='If unchecked, it will allow you to hide the Fiscal Classification without removing it.'
  • code Char
  • description Text
  • name Char
    required=True select=True size=_MAX_LENGTH_NAME translate=True
Public methods (0)

No public methods.

New fields (2)
  • purchase_tax_ids Many2many → account.tax.template
    column1='fiscal_classification_id' column2='tax_id' comodel_name='account.tax.template' domain="[\n ('parent_id', '=', False),\n ('type_tax_use', 'in', ['purchase', 'all'])]" oldname='purchase_base_tax_ids' relation='fiscal_classification_template_purchase_tax_rel' string='Purchase Taxes'
  • sale_tax_ids Many2many → account.tax.template
    column1='fiscal_classification_id' column2='tax_id' comodel_name='account.tax.template' domain="[\n ('parent_id', '=', False),\n ('type_tax_use', 'in', ['sale', 'all'])]" oldname='sale_base_tax_ids' relation='fiscal_classification_template_sale_tax_rel' string='Sale Taxes'
Public methods (0)

No public methods.

New fields (0)

No new fields.

Public methods (1)
  • onchange_fiscal_classification_id(self)
    @api.onchange('fiscal_classification_id')

New fields (1)
  • fiscal_classification_id Many2one → account.product.fiscal.classification
    comodel_name='account.product.fiscal.classification' help="Specify the combination of taxes for this product. This field is required. If you dont find the correct Fiscal Classification, Please create a new one or ask to your account manager if you don't have the access right." string='Fiscal Classification'
Public methods (5)
  • create(self, vals)
    @api.model
  • fields_view_get(self, cr, uid, view_id=None, view_type='form', context=None, toolbar=False, submenu=False)
    Set 'fiscal_classification_id' as required by fields_view_get: We don't set it by fields declaration in python file, to avoid incompatibility with other modules that could have demo data without fiscal_classification_id (the bugs will occur depending of the order in which the modules are loaded); We don't set it by view inheritance in xml file to impact all views (form / tree) that could define the model 'product.template';
  • onchange_fiscal_classification_id(self)
    @api.onchange('fiscal_classification_id')
  • write(self, vals)
    @api.multi
  • write_taxes_setting(self, vals)
    If Fiscal Classification is defined, set the according taxes to the product(s); Otherwise, find the correct Fiscal classification, depending of the taxes, or create a new one, if no one are found.

New fields (1)
  • company_id Many2one → res.company
    default=<expr> args: 'res.company', 'Company'
Public methods (1)
  • action_create(self)
    @api.multi

New fields (2)
  • new_fiscal_classification_id Many2one → account.product.fiscal.classification
    comodel_name='account.product.fiscal.classification' domain="[('id', '!=', old_fiscal_classification_id)]" required=True string='New Fiscal Classification'
  • old_fiscal_classification_id Many2one → account.product.fiscal.classification
    comodel_name='account.product.fiscal.classification' default=_default_old_fiscal_classification_id readonly=True required=True string='Old Fiscal Classification'
Public methods (1)
  • button_change_fiscal_classification(self)
    @api.one
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/7.0/account_product_fiscal_classification
VERSION
VERSION 0.1
CATEGORY
CATEGORYUncategorized
LICENSE
LICENSEAGPL-3
APPLICATION
APPLICATIONNo
AUTO-INSTALLABLE
AUTO-INSTALLABLENo
AUTHORS
AUTHORSOdoo Community Association (OCA), Akretion
MAINTAINERS
MAINTAINERSOdoo Community Association (OCA), Akretion
COMMITTERS
COMMITTERSAlexandre Fayolle, Raphaël Valyi, Renato Lima, Pedro M. Baeza, cma, moylop260
WEBSITE
WEBSITEhttp://www.akretion.com
LAST TRACKING UPDATE
LAST TRACKING UPDATE2026-07-06 00:07:13
ODOO DEPENDENCIES
ODOO DEPENDENCIES odoo/odoo:
    - account
    - base_setup
    - base
    - web_kanban
    - web
    - product
    - process
    - decimal_precision
    - mail
    - analytic
    - board
    - edi
    - email_template
PYTHON DEPENDENCIES
PYTHON DEPENDENCIES Not have
SYSTEM DEPENDENCIES
SYSTEM DEPENDENCIES Not have
DESCRIPTION
DESCRIPTION
Account Product Fiscal Classification

Code Analysis

Views touched (6)
XML IDNameModelTypeStatus
fiscal_classification_normal_form_view_form fiscal_classification_normal_form_view_form account.product.fiscal.classification form New
fiscal_classification_normal_form_view_tree fiscal_classification_normal_form_view_tree account.product.fiscal.classification tree New
fiscal_classification_template_normal_form_view_form fiscal_classification_template_normal_form_view_form account.product.fiscal.classification.template form New
fiscal_classification_template_normal_form_view_tree fiscal_classification_normal_form_view_tree account.product.fiscal.classification.template tree New
product_fiscal_classification_product_normal_form_view product_fiscal_classification_product_normal_form_view product.product group Inherits account.product_normal_form_view
view_wizard_account_product_fiscal_classification Generate Product Fiscal Classification from Templates wizard.account.product.fiscal.classification form New
Models touched (5)

New fields (0)

No new fields.

Public methods (2)
  • button_update_products(self, cr, uid, ids, context=None)
  • name_search(self, cr, user, name='', args=None, operator='ilike', context=None, limit=80)

New fields (0)

No new fields.

Public methods (1)
  • name_search(self, cr, user, name='', args=None, operator='ilike', context=None, limit=80)

New fields (0)

No new fields.

Public methods (1)
  • fiscal_classification_id_change(self, cr, uid, ids, fiscal_classification_id=False, sale_tax_ids=None, purchase_tax_ids=None, context=None)
    We eventually keep the sale and purchase taxes because those are not company wise in OpenERP. So if we choose a different fiscal position for a different company, we don't want to override other's companies setting

New fields (0)

No new fields.

Public methods (1)
  • fiscal_classification_id_change(self, cr, uid, ids, fiscal_classification_id=False, sale_tax_ids=None, purchase_tax_ids=None, context=None)
    We eventually keep the sale and purchase taxes because those are not company wise in OpenERP. So if we choose a different fiscal position for a different company, we don't want to override other's companies setting

New fields (0)

No new fields.

Public methods (1)
  • action_create(self, cr, uid, ids, context=None)
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/6.1/account_product_fiscal_classification
VERSION
VERSION 0.1
CATEGORY
CATEGORYUncategorized
LICENSE
LICENSEAGPL-3
APPLICATION
APPLICATIONNo
AUTO-INSTALLABLE
AUTO-INSTALLABLENo
AUTHORS
AUTHORSOdoo Community Association (OCA), Akretion
MAINTAINERS
MAINTAINERSOdoo Community Association (OCA), Akretion
COMMITTERS
COMMITTERSAlexandre Fayolle, sebastien beau
WEBSITE
WEBSITEhttp://www.akretion.com
LAST TRACKING UPDATE
LAST TRACKING UPDATE2026-07-06 00:04:05
ODOO DEPENDENCIES
ODOO DEPENDENCIES odoo/odoo:
    - account
    - base_setup
    - base
    - product
    - process
    - decimal_precision
    - analytic
    - board
    - edi
    - email_template
    - mail
    - base_tools
PYTHON DEPENDENCIES
PYTHON DEPENDENCIES Not have
SYSTEM DEPENDENCIES
SYSTEM DEPENDENCIES Not have
DESCRIPTION
DESCRIPTION
Account Product Fiscal Classification
    

Code Analysis

Views touched (6)
XML IDNameModelTypeStatus
fiscal_classification_normal_form_view_form fiscal_classification_normal_form_view_form account.product.fiscal.classification form New
fiscal_classification_normal_form_view_tree fiscal_classification_normal_form_view_tree account.product.fiscal.classification tree New
fiscal_classification_template_normal_form_view_form fiscal_classification_template_normal_form_view_form account.product.fiscal.classification.template form New
fiscal_classification_template_normal_form_view_tree fiscal_classification_normal_form_view_tree account.product.fiscal.classification.template tree New
product_fiscal_classification_product_normal_form_view product_fiscal_classification_product_normal_form_view product.product xpath Inherits account.product_normal_form_view
view_wizard_account_product_fiscal_classification Generate Product Fiscal Classification from Templates wizard.account.product.fiscal.classification form New
Models touched (0)

No models found for this module.