Skip to content

Commit

Permalink
[ADD] account_analytic_tag_distribution: New module
Browse files Browse the repository at this point in the history
TT44062
  • Loading branch information
victoralmau committed Sep 18, 2023
1 parent 3df0b6c commit 5ca550b
Show file tree
Hide file tree
Showing 20 changed files with 896 additions and 1 deletion.
2 changes: 1 addition & 1 deletion account_analytic_tag/tests/common.py
Original file line number Diff line number Diff line change
Expand Up @@ -67,7 +67,7 @@ def setUpClass(cls):
)
cls.product_b = cls.env["product.product"].create(
{
"name": "product_a",
"name": "product_b",
"uom_id": cls.env.ref("uom.product_uom_unit").id,
"lst_price": 200.0,
"standard_price": 100.0,
Expand Down
91 changes: 91 additions & 0 deletions account_analytic_tag_distribution/README.rst
Original file line number Diff line number Diff line change
@@ -0,0 +1,91 @@
=================================
Account Analytic Tag Distribution
=================================

.. !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!! This file is generated by oca-gen-addon-readme !!
!! changes will be overwritten. !!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
.. |badge1| image:: https://img.shields.io/badge/maturity-Beta-yellow.png
:target: https://odoo-community.org/page/development-status
:alt: Beta
.. |badge2| image:: https://img.shields.io/badge/licence-AGPL--3-blue.png
:target: http://www.gnu.org/licenses/agpl-3.0-standalone.html
:alt: License: AGPL-3
.. |badge3| image:: https://img.shields.io/badge/github-OCA%2Faccount--analytic-lightgray.png?logo=github
:target: https://github.com/OCA/account-analytic/tree/16.0/account_analytic_tag_distribution
:alt: OCA/account-analytic
.. |badge4| image:: https://img.shields.io/badge/weblate-Translate%20me-F47D42.png
:target: https://translation.odoo-community.org/projects/account-analytic-16-0/account-analytic-16-0-account_analytic_tag_distribution
:alt: Translate me on Weblate
.. |badge5| image:: https://img.shields.io/badge/runbot-Try%20me-875A7B.png
:target: https://runbot.odoo-community.org/runbot/87/16.0
:alt: Try me on Runbot

|badge1| |badge2| |badge3| |badge4| |badge5|

This module restores the option to define the analytical distribution at the level of analytical labels.

**Table of contents**

.. contents::
:local:

Usage
=====

#. In the creation/editing of an analytic label check the box "Analytic Distribution" and define the distribution you need.
#. Define this label in an invoice line.
#. Publish the invoice.
#. The analytical notes will have been created according to the analytical distribution of the defined tags.

Bug Tracker
===========

Bugs are tracked on `GitHub Issues <https://github.com/OCA/account-analytic/issues>`_.
In case of trouble, please check there if your issue has already been reported.
If you spotted it first, help us smashing it by providing a detailed and welcomed
`feedback <https://github.com/OCA/account-analytic/issues/new?body=module:%20account_analytic_tag_distribution%0Aversion:%2016.0%0A%0A**Steps%20to%20reproduce**%0A-%20...%0A%0A**Current%20behavior**%0A%0A**Expected%20behavior**>`_.

Do not contact contributors directly about support or help with technical issues.

Credits
=======

Authors
~~~~~~~

* Tecnativa

Contributors
~~~~~~~~~~~~

* `Tecnativa <https://www.tecnativa.com>`__:

* Víctor Martínez

Maintainers
~~~~~~~~~~~

This module is maintained by the OCA.

.. image:: https://odoo-community.org/logo.png
:alt: Odoo Community Association
:target: https://odoo-community.org

OCA, or the Odoo Community Association, is a nonprofit organization whose
mission is to support the collaborative development of Odoo features and
promote its widespread use.

.. |maintainer-victoralmau| image:: https://github.com/victoralmau.png?size=40px
:target: https://github.com/victoralmau
:alt: victoralmau

Current `maintainer <https://odoo-community.org/page/maintainer-role>`__:

|maintainer-victoralmau|

This module is part of the `OCA/account-analytic <https://github.com/OCA/account-analytic/tree/16.0/account_analytic_tag_distribution>`_ project on GitHub.

You are welcome to contribute. To learn how please visit https://odoo-community.org/page/Contribute.
1 change: 1 addition & 0 deletions account_analytic_tag_distribution/__init__.py
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
from . import models
17 changes: 17 additions & 0 deletions account_analytic_tag_distribution/__manifest__.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
# Copyright 2023 Tecnativa - Víctor Martínez
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html).
{
"name": "Account Analytic Tag Distribution",
"version": "16.0.1.0.0",
"author": "Tecnativa, Odoo Community Association (OCA)",
"category": "Account",
"website": "https://github.com/OCA/account-analytic",
"depends": ["account_analytic_tag"],
"license": "AGPL-3",
"data": [
"views/account_analytic_tag_views.xml",
"views/account_move_views.xml",
],
"installable": True,
"maintainers": ["victoralmau"],
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,46 @@
# Translation of Odoo Server.
# This file contains the translation of the following modules:
# * account_analytic_tag_distribution
#
msgid ""
msgstr ""
"Project-Id-Version: Odoo Server 16.0\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2023-08-24 11:30+0000\n"
"PO-Revision-Date: 2023-08-24 11:30+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_tag_distribution
#: model:ir.model.fields,field_description:account_analytic_tag_distribution.field_account_analytic_tag__analytic_distribution
msgid "Analytic"
msgstr ""

#. module: account_analytic_tag_distribution
#: model:ir.model.fields,field_description:account_analytic_tag_distribution.field_account_analytic_tag__active_analytic_distribution
msgid "Analytic Distribution"
msgstr ""

#. module: account_analytic_tag_distribution
#: model:ir.model.fields,field_description:account_analytic_tag_distribution.field_account_analytic_tag__analytic_distribution_search
msgid "Analytic Distribution Search"
msgstr ""

#. module: account_analytic_tag_distribution
#: model:ir.model.fields,field_description:account_analytic_tag_distribution.field_account_analytic_tag__analytic_precision
msgid "Analytic Precision"
msgstr ""

#. module: account_analytic_tag_distribution
#: model:ir.model,name:account_analytic_tag_distribution.model_account_analytic_tag
msgid "Analytic Tags"
msgstr ""

#. module: account_analytic_tag_distribution
#: model:ir.model,name:account_analytic_tag_distribution.model_account_move
msgid "Journal Entry"
msgstr ""
46 changes: 46 additions & 0 deletions account_analytic_tag_distribution/i18n/es.po
Original file line number Diff line number Diff line change
@@ -0,0 +1,46 @@
# Translation of Odoo Server.
# This file contains the translation of the following modules:
# * account_analytic_tag_distribution
#
msgid ""
msgstr ""
"Project-Id-Version: Odoo Server 16.0\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2023-08-24 11:31+0000\n"
"PO-Revision-Date: 2023-08-24 11:31+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_tag_distribution
#: model:ir.model.fields,field_description:account_analytic_tag_distribution.field_account_analytic_tag__analytic_distribution
msgid "Analytic"
msgstr "Analítico"

#. module: account_analytic_tag_distribution
#: model:ir.model.fields,field_description:account_analytic_tag_distribution.field_account_analytic_tag__active_analytic_distribution
msgid "Analytic Distribution"
msgstr "Distribución Analítica"

#. module: account_analytic_tag_distribution
#: model:ir.model.fields,field_description:account_analytic_tag_distribution.field_account_analytic_tag__analytic_distribution_search
msgid "Analytic Distribution Search"
msgstr "Búsqueda de distribución analítica"

#. module: account_analytic_tag_distribution
#: model:ir.model.fields,field_description:account_analytic_tag_distribution.field_account_analytic_tag__analytic_precision
msgid "Analytic Precision"
msgstr "Precisión analítica"

#. module: account_analytic_tag_distribution
#: model:ir.model,name:account_analytic_tag_distribution.model_account_analytic_tag
msgid "Analytic Tags"
msgstr "Etiquetas Analíticas"

#. module: account_analytic_tag_distribution
#: model:ir.model,name:account_analytic_tag_distribution.model_account_move
msgid "Journal Entry"
msgstr "Asiento contable"
2 changes: 2 additions & 0 deletions account_analytic_tag_distribution/models/__init__.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
from . import account_analytic_tag
from . import account_move_line
20 changes: 20 additions & 0 deletions account_analytic_tag_distribution/models/account_analytic_tag.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
# Copyright 2023 Tecnativa - Víctor Martínez
# License LGPL-3.0 or later (http://www.gnu.org/licenses/lgpl).
from odoo import api, fields, models


class AccountAnalyticTag(models.Model):
_name = "account.analytic.tag"
_inherit = ["account.analytic.tag", "analytic.mixin"]

active_analytic_distribution = fields.Boolean(string="Analytic Distribution")

@api.onchange("active_analytic_distribution")
def _onchange_active_analytic_distribution(self):
if self.active_analytic_distribution:
self.account_analytic_id = False

def write(self, values):
if values.get("active_analytic_distribution"):
values["account_analytic_id"] = False
return super().write(values)
34 changes: 34 additions & 0 deletions account_analytic_tag_distribution/models/account_move_line.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,34 @@
# Copyright 2023 Tecnativa - Víctor Martínez
# License LGPL-3.0 or later (http://www.gnu.org/licenses/lgpl).
from odoo import api, models


class AccountMoveLine(models.Model):
_inherit = "account.move.line"

@api.onchange("analytic_tag_ids")
def _onchange_analytic_tag_ids(self):
"""If any tag has a distribution, we will disable the standard analytical
distribution."""
if any(tag.active_analytic_distribution for tag in self.analytic_tag_ids):
self.analytic_distribution = False

Check warning on line 14 in account_analytic_tag_distribution/models/account_move_line.py

View check run for this annotation

Codecov / codecov/patch

account_analytic_tag_distribution/models/account_move_line.py#L14

Added line #L14 was not covered by tests

def _prepare_analytic_lines(self):
"""If any tag has distribution, we will not call super() to avoid conflicts
with standard flow."""
tags_with_distribution = self.analytic_tag_ids.filtered(
lambda x: x.active_analytic_distribution
)
if not tags_with_distribution:
return super()._prepare_analytic_lines()
analytic_line_vals = []
for tag in tags_with_distribution:
distribution_on_each_plan = {}
for account_id, distribution in tag.analytic_distribution.items():
line_values = self._prepare_analytic_distribution_line(
float(distribution), account_id, distribution_on_each_plan
)
line_values.update({"tag_ids": [(6, 0, tag.ids)]})
if not self.currency_id.is_zero(line_values.get("amount")):
analytic_line_vals.append(line_values)
return analytic_line_vals
3 changes: 3 additions & 0 deletions account_analytic_tag_distribution/readme/CONTRIBUTORS.rst
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
* `Tecnativa <https://www.tecnativa.com>`__:

* Víctor Martínez
1 change: 1 addition & 0 deletions account_analytic_tag_distribution/readme/DESCRIPTION.rst
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
This module restores the option to define the analytical distribution at the level of analytical labels.
4 changes: 4 additions & 0 deletions account_analytic_tag_distribution/readme/USAGE.rst
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
#. In the creation/editing of an analytic label check the box "Analytic Distribution" and define the distribution you need.
#. Define this label in an invoice line.
#. Publish the invoice.
#. The analytical notes will have been created according to the analytical distribution of the defined tags.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading

0 comments on commit 5ca550b

Please sign in to comment.