Skip to content

Commit

Permalink
[FIX] account_analytic_default: fixing restrictions on analytic tags
Browse files Browse the repository at this point in the history
If applied, this commit will fix the following bug by adding some
restrictions on the creation of analytic default
and the uses of tags in account.move

Steps to reproduce:
1- install account.accountant, account_analytic_default
2- Accounting --> Configuration --> Analytic Tags, analytic accounting
3-  Create an Analytic Tag, with no Analytic Distribution.
4-  Accounting --> Configuration --> Analytic Default Rules.
Create an Analytic Default Rule, using the Analytic Tag above
and select a Partner
5- Create a Vendor Bill on that partner. The Analytic Tag is added to
the invoice, as expected
6- However when selecting Accounting --> Reporting --> Analytic Report,
the report is empty and does not contain the Analytic Tag. Adding the
 Analytic Tag to the filter has no effect.
Bug/Issue:
An analytic tag is meant to be an additional dimension of analysis.
Dimension which is only worth/valid when an analytic account is
specified.

An analytic default rule should never be applied without
- either an analytic account
- or analytic tag used for distribution
Fixes:
1- changing the error condition on creating analytic default
2- changing the error message accordingly to better explain the issue
3- raise an error when the user creates an account.move with analytic
tags without (analytic tags + analytic account) or (analytic tags with
analytic distrubtion)

Please refer to the ticket for the whole discussion on this

OPW-2766749

closes odoo#91249

X-original-commit: 99c50b9
Signed-off-by: Mohamed Megahed Abbas Megahed SALLAM (mome) <mome@odoo.com>
Signed-off-by: William André (wan) <wan@odoo.com>
  • Loading branch information
momegahed committed May 12, 2022
1 parent 71b9e36 commit 9cc63bd
Show file tree
Hide file tree
Showing 2 changed files with 251 additions and 2 deletions.
7 changes: 5 additions & 2 deletions addons/account/models/account_analytic_default.py
Original file line number Diff line number Diff line change
Expand Up @@ -24,8 +24,11 @@ class AccountAnalyticDefault(models.Model):

@api.constrains('analytic_id', 'analytic_tag_ids')
def _check_account_or_tags(self):
if any(not default.analytic_id and not default.analytic_tag_ids for default in self):
raise ValidationError(_('An analytic default requires at least an analytic account or an analytic tag.'))
if any(not default.analytic_id
and not any(tag.analytic_distribution_ids for tag in default.analytic_tag_ids)
for default in self
):
raise ValidationError(_('An analytic default requires an analytic account or an analytic tag used for analytic distribution.'))

@api.model
def account_get(self, product_id=None, partner_id=None, account_id=None, user_id=None, date=None, company_id=None):
Expand Down
246 changes: 246 additions & 0 deletions addons/account_analytic_default/i18n/account_analytic_default.pot
Original file line number Diff line number Diff line change
@@ -0,0 +1,246 @@
# Translation of Odoo Server.
# This file contains the translation of the following modules:
# * account_analytic_default
#
msgid ""
msgstr ""
"Project-Id-Version: Odoo Server 13.0\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2019-12-05 12:32+0000\n"
"PO-Revision-Date: 2019-12-05 12:32+0000\n"
"Last-Translator: \n"
"Language-Team: \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: \n"
"Plural-Forms: \n"

#. module: account_analytic_default
#: model_terms:ir.ui.view,arch_db:account_analytic_default.view_account_analytic_default_kanban
msgid "<i class=\"fa fa-calendar\"/> From"
msgstr ""

#. module: account_analytic_default
#: model_terms:ir.ui.view,arch_db:account_analytic_default.view_account_analytic_default_kanban
msgid "<strong>Customer</strong>"
msgstr ""

#. module: account_analytic_default
#: model_terms:ir.ui.view,arch_db:account_analytic_default.view_account_analytic_default_kanban
msgid "<strong>Product</strong>"
msgstr ""

#. module: account_analytic_default
#: model:ir.model.fields,field_description:account_analytic_default.field_account_analytic_default__account_id
#: model_terms:ir.ui.view,arch_db:account_analytic_default.view_account_analytic_default_form
msgid "Account"
msgstr ""

#. module: account_analytic_default
#: model_terms:ir.ui.view,arch_db:account_analytic_default.view_account_analytic_default_form_search
msgid "Accounts"
msgstr ""

#. module: account_analytic_default
#: code:addons/account_analytic_default/models/account_analytic_default.py:0
#, python-format
msgid ""
"An analytic default requires at least an analytic account or an analytic "
"tag."
msgstr ""

#. module: account_analytic_default
#: model:ir.model.fields,field_description:account_analytic_default.field_account_analytic_default__analytic_id
#: model:ir.model.fields,field_description:account_analytic_default.field_account_move_line__analytic_account_id
#: model_terms:ir.ui.view,arch_db:account_analytic_default.view_account_analytic_default_form_search
msgid "Analytic Account"
msgstr ""

#. module: account_analytic_default
#: model_terms:ir.ui.view,arch_db:account_analytic_default.view_account_analytic_default_form
msgid "Analytic Default Rule"
msgstr ""

#. module: account_analytic_default
#: model:ir.actions.act_window,name:account_analytic_default.action_analytic_default_list
#: model:ir.ui.menu,name:account_analytic_default.menu_analytic_default_list
#: model_terms:ir.ui.view,arch_db:account_analytic_default.view_account_analytic_default_form
#: model_terms:ir.ui.view,arch_db:account_analytic_default.view_account_analytic_default_tree
msgid "Analytic Defaults"
msgstr ""

#. module: account_analytic_default
#: model:ir.model,name:account_analytic_default.model_account_analytic_default
msgid "Analytic Distribution"
msgstr ""

#. module: account_analytic_default
#: model:ir.actions.act_window,name:account_analytic_default.action_product_default_list
#: model:ir.actions.act_window,name:account_analytic_default.analytic_rule_action_user
msgid "Analytic Rules"
msgstr ""

#. module: account_analytic_default
#: model:ir.model.fields,field_description:account_analytic_default.field_account_analytic_default__analytic_tag_ids
#: model:ir.model.fields,field_description:account_analytic_default.field_account_move_line__analytic_tag_ids
msgid "Analytic Tags"
msgstr ""

#. module: account_analytic_default
#: model:ir.model.fields,field_description:account_analytic_default.field_account_analytic_default__company_id
#: model_terms:ir.ui.view,arch_db:account_analytic_default.view_account_analytic_default_form_search
msgid "Company"
msgstr ""

#. module: account_analytic_default
#: model_terms:ir.ui.view,arch_db:account_analytic_default.view_account_analytic_default_form
msgid "Conditions"
msgstr ""

#. module: account_analytic_default
#: model:ir.model.fields,field_description:account_analytic_default.field_account_analytic_default__create_uid
msgid "Created by"
msgstr ""

#. module: account_analytic_default
#: model:ir.model.fields,field_description:account_analytic_default.field_account_analytic_default__create_date
msgid "Created on"
msgstr ""

#. module: account_analytic_default
#: model:ir.model.fields,help:account_analytic_default.field_account_analytic_default__date_stop
msgid "Default end date for this Analytic Account."
msgstr ""

#. module: account_analytic_default
#: model:ir.model.fields,help:account_analytic_default.field_account_analytic_default__date_start
msgid "Default start date for this Analytic Account."
msgstr ""

#. module: account_analytic_default
#: model:ir.model.fields,field_description:account_analytic_default.field_account_analytic_default__display_name
msgid "Display Name"
msgstr ""

#. module: account_analytic_default
#: model:ir.model.fields,field_description:account_analytic_default.field_account_analytic_default__date_stop
msgid "End Date"
msgstr ""

#. module: account_analytic_default
#: model:ir.model.fields,help:account_analytic_default.field_account_analytic_default__sequence
msgid ""
"Gives the sequence order when displaying a list of analytic distribution"
msgstr ""

#. module: account_analytic_default
#: model_terms:ir.ui.view,arch_db:account_analytic_default.view_account_analytic_default_form_search
msgid "Group By"
msgstr ""

#. module: account_analytic_default
#: model:ir.model.fields,field_description:account_analytic_default.field_account_analytic_default__id
msgid "ID"
msgstr ""

#. module: account_analytic_default
#: model:ir.model,name:account_analytic_default.model_account_move_line
msgid "Journal Item"
msgstr ""

#. module: account_analytic_default
#: model:ir.model.fields,field_description:account_analytic_default.field_account_analytic_default____last_update
msgid "Last Modified on"
msgstr ""

#. module: account_analytic_default
#: model:ir.model.fields,field_description:account_analytic_default.field_account_analytic_default__write_uid
msgid "Last Updated by"
msgstr ""

#. module: account_analytic_default
#: model:ir.model.fields,field_description:account_analytic_default.field_account_analytic_default__write_date
msgid "Last Updated on"
msgstr ""

#. module: account_analytic_default
#: model:ir.model.fields,field_description:account_analytic_default.field_account_analytic_default__partner_id
#: model_terms:ir.ui.view,arch_db:account_analytic_default.view_account_analytic_default_form_search
msgid "Partner"
msgstr ""

#. module: account_analytic_default
#: model:ir.model.fields,field_description:account_analytic_default.field_account_analytic_default__product_id
#: model_terms:ir.ui.view,arch_db:account_analytic_default.view_account_analytic_default_form_search
msgid "Product"
msgstr ""

#. module: account_analytic_default
#: model:ir.model.fields,help:account_analytic_default.field_account_analytic_default__company_id
msgid ""
"Select a company which will use analytic account specified in analytic "
"default (e.g. create new customer invoice or Sales order if we select this "
"company, it will automatically take this as an analytic account)"
msgstr ""

#. module: account_analytic_default
#: model:ir.model.fields,help:account_analytic_default.field_account_analytic_default__partner_id
msgid ""
"Select a partner which will use analytic account specified in analytic "
"default (e.g. create new customer invoice or Sales order if we select this "
"partner, it will automatically take this as an analytic account)"
msgstr ""

#. module: account_analytic_default
#: model:ir.model.fields,help:account_analytic_default.field_account_analytic_default__product_id
msgid ""
"Select a product which will use analytic account specified in analytic "
"default (e.g. create new customer invoice or Sales order if we select this "
"product, it will automatically take this as an analytic account)"
msgstr ""

#. module: account_analytic_default
#: model:ir.model.fields,help:account_analytic_default.field_account_analytic_default__user_id
msgid ""
"Select a user which will use analytic account specified in analytic default."
msgstr ""

#. module: account_analytic_default
#: model:ir.model.fields,help:account_analytic_default.field_account_analytic_default__account_id
msgid ""
"Select an accounting account which will use analytic account specified in "
"analytic default (e.g. create new customer invoice or Sales order if we "
"select this account, it will automatically take this as an analytic account)"
msgstr ""

#. module: account_analytic_default
#: model:ir.model.fields,field_description:account_analytic_default.field_account_analytic_default__sequence
msgid "Sequence"
msgstr ""

#. module: account_analytic_default
#: model:ir.model.fields,field_description:account_analytic_default.field_account_analytic_default__date_start
msgid "Start Date"
msgstr ""

#. module: account_analytic_default
#: model_terms:ir.ui.view,arch_db:account_analytic_default.view_account_analytic_default_form
msgid "Tags"
msgstr ""

#. module: account_analytic_default
#: model:ir.model.fields,field_description:account_analytic_default.field_account_analytic_default__user_id
#: model_terms:ir.ui.view,arch_db:account_analytic_default.view_account_analytic_default_form_search
msgid "User"
msgstr ""

#. module: account_analytic_default
#: model_terms:ir.ui.view,arch_db:account_analytic_default.view_account_analytic_default_kanban
msgid "to"
msgstr ""

#. module: account_analytic_default
#: code:addons/account_analytic_default/models/account_move.py:30
#, python-format
msgid "An analytic default requires an analytic account or an analytic tag used for analytic distribution."
msgstr ""

0 comments on commit 9cc63bd

Please sign in to comment.