Skip to content

Conversation

@P-H-Phuc
Copy link

@P-H-Phuc P-H-Phuc commented Aug 6, 2025

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.

account_product_fiscal_classification_1

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)

Configuration

  • Go to "Accounting > Configuration > Accounting > FiscalClassifications".
  • Create new classification, with correct purchase and sale taxes.
Screenshot from 2025-07-28 15-35-36

Optional settings

Once the fiscal classifications are created, you can create rules to avoid users to use some classifications that don't make sense for some categories.

  • Go to "Accounting > Configuration > Accounting > Fiscal Classification Rules"
  • Create new rules.
Screenshot from 2025-07-28 15-37-35

Every time a new product is created, the rules that matches the product setting will be checked in the displayed order.

  • If one rule is set to 'Allow', the next rules are ignored.
  • If one rule is set to 'Forbid', an error is raised.

Note

  • Since Odoo 17.0, the account.chart.template model was refactored: it is now defined as an AbstractModel, not as a Model.

  • Remove test chart.template

rvalyi and others added 30 commits August 4, 2025 12:23
… messing with product taxes from an other (sub) company
… added company_id.id parameter in search method in account.tax objects
…t_product_fiscal_classification and account_fiscal_position_rule and remove old files __terp__.py
…cts do not require any fiscal classification
…toring and changed in account_product_fiscal_classification module product.product to product.template
…ification changed header files and included in __openerp__.py explicit AGPL-3 license
…methods in in object account.product.fiscal.classification
…nly called at the installation, and no during update anymore;
weblate and others added 22 commits August 4, 2025 12:23
Updated by "Update PO files to match POT (msgmerge)" hook in Weblate.

Translation: account-fiscal-rule-16.0/account-fiscal-rule-16.0-account_product_fiscal_classification
Translate-URL: https://translation.odoo-community.org/projects/account-fiscal-rule-16-0/account-fiscal-rule-16-0-account_product_fiscal_classification/
Currently translated at 100.0% (55 of 55 strings)

Translation: account-fiscal-rule-16.0/account-fiscal-rule-16.0-account_product_fiscal_classification
Translate-URL: https://translation.odoo-community.org/projects/account-fiscal-rule-16-0/account-fiscal-rule-16-0-account_product_fiscal_classification/es/
Currently translated at 100.0% (55 of 55 strings)

Translation: account-fiscal-rule-16.0/account-fiscal-rule-16.0-account_product_fiscal_classification
Translate-URL: https://translation.odoo-community.org/projects/account-fiscal-rule-16-0/account-fiscal-rule-16-0-account_product_fiscal_classification/fr/
…alled, having default has no sense. It also generate error when mass importing, if the default values doesn't match with a fiscal classification. As a result, in a demo database, installing a module that create a product when account_product_fiscal_classification is installed will fail
Currently translated at 100.0% (55 of 55 strings)

Translation: account-fiscal-rule-16.0/account-fiscal-rule-16.0-account_product_fiscal_classification
Translate-URL: https://translation.odoo-community.org/projects/account-fiscal-rule-16-0/account-fiscal-rule-16-0-account_product_fiscal_classification/sv/
Currently translated at 100.0% (55 of 55 strings)

Translation: account-fiscal-rule-16.0/account-fiscal-rule-16.0-account_product_fiscal_classification
Translate-URL: https://translation.odoo-community.org/projects/account-fiscal-rule-16-0/account-fiscal-rule-16-0-account_product_fiscal_classification/it/
Updated by "Update PO files to match POT (msgmerge)" hook in Weblate.

Translation: account-fiscal-rule-16.0/account-fiscal-rule-16.0-account_product_fiscal_classification
Translate-URL: https://translation.odoo-community.org/projects/account-fiscal-rule-16-0/account-fiscal-rule-16-0-account_product_fiscal_classification/
Currently translated at 100.0% (59 of 59 strings)

Translation: account-fiscal-rule-16.0/account-fiscal-rule-16.0-account_product_fiscal_classification
Translate-URL: https://translation.odoo-community.org/projects/account-fiscal-rule-16-0/account-fiscal-rule-16-0-account_product_fiscal_classification/it/
Currently translated at 100.0% (59 of 59 strings)

Translation: account-fiscal-rule-16.0/account-fiscal-rule-16.0-account_product_fiscal_classification
Translate-URL: https://translation.odoo-community.org/projects/account-fiscal-rule-16-0/account-fiscal-rule-16-0-account_product_fiscal_classification/sv/
- In a context of product creation, if classification is not provided (in import context for exemple),
  link the products to an existing classification, if the taxes match an existing one.
  If no classification match, try to create a new classification, based on the product fiscal settings.
  (It will fail if user is not member of Accountant group that can create / write on fiscal classifications)
- In a context of product update, apply same logic, linking to existing classification, or creating new classification

This will fix current limitation if account_product_fiscal_classification and pos_sale (for exemple) is installed,
there is an error when making an update, because loading data / demo is failing for the time being if the fields
taxes_id or supplier_taxes_id is defined. See for exemple : pos_sale.default_downpayment_product that contains
{'taxes_id': '[(5,)]'} write.
Updated by "Update PO files to match POT (msgmerge)" hook in Weblate.

Translation: account-fiscal-rule-16.0/account-fiscal-rule-16.0-account_product_fiscal_classification
Translate-URL: https://translation.odoo-community.org/projects/account-fiscal-rule-16-0/account-fiscal-rule-16-0-account_product_fiscal_classification/
@P-H-Phuc P-H-Phuc force-pushed the 18.0_mig_account_product_fiscal_classification branch 4 times, most recently from 2f88ee8 to a9bdb60 Compare August 27, 2025 02:52
@P-H-Phuc P-H-Phuc force-pushed the 18.0_mig_account_product_fiscal_classification branch from a9bdb60 to 0b3bbb8 Compare August 27, 2025 04:12
@github-actions
Copy link

There hasn't been any activity on this pull request in the past 4 months, so it has been marked as stale and it will be closed automatically if no further activity occurs in the next 30 days.
If you want this PR to never become stale, please ask a PSC member to apply the "no stale" label.

@github-actions github-actions bot added the stale PR/Issue without recent activity, it'll be soon closed automatically. label Dec 28, 2025
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

stale PR/Issue without recent activity, it'll be soon closed automatically.

Projects

None yet

Development

Successfully merging this pull request may close these issues.