Skip to content

Commit

Permalink
[ADD] account_budget_oca_analytic_tag
Browse files Browse the repository at this point in the history
  • Loading branch information
cvinh committed Oct 31, 2022
1 parent 55d1f8d commit 3a99d68
Show file tree
Hide file tree
Showing 11 changed files with 269 additions and 0 deletions.
24 changes: 24 additions & 0 deletions account_budget_oca_analytic_tag/README.rst
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
.. image:: https://img.shields.io/badge/licence-LGPL--3-blue.svg
:target: http://www.gnu.org/licenses/lgpl-3.0-standalone.html
:alt: License: LGPL-3

===============================
OSI Account Budget Analytic Tag
===============================

This module allows you to select an analytic tag on the budget line and report the consumed budget using that tag.

Usage
=====

No special usage instructions

Credits
=======

* Maxime Chambreuil <[email protected]>

Contributors
------------

* Open Source Integrators <http://www.opensourceintegrators.com>
3 changes: 3 additions & 0 deletions account_budget_oca_analytic_tag/__init__.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
# License LGPL-3.0 or later (http://www.gnu.org/licenses/lgpl).

from . import models
20 changes: 20 additions & 0 deletions account_budget_oca_analytic_tag/__manifest__.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
# Copyright (c) 2021 Open Source Integrators
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl).

{
"name": "OSI Account Budget OCA Analytic Tag",
"version": "14.0.1.0.0",
"license": "AGPL-3",
"summary": "This module allows you to select an analytic tag on the budget"
" line and report the consumed budget using that tag.",
"author": "Open Source Integrators, Odoo Community Association (OCA)",
"maintainer": "Open Source Integrators",
"website": "https://github.com/OCA/account-budgeting",
"category": "Accounting",
"depends": ["account_budget_oca"],
"data": [
"views/account_budget_views.xml",
],
"installable": True,
"maintainers": ["max3903"],
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,49 @@
# Translation of Odoo Server.
# This file contains the translation of the following modules:
# * account_budget_analytic_tag
#
msgid ""
msgstr ""
"Project-Id-Version: Odoo Server 14.0+e-20211202\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2021-12-23 19:57+0000\n"
"PO-Revision-Date: 2021-12-23 19:57+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_budget_analytic_tag
#: model:ir.model.fields,field_description:account_budget_analytic_tag.field_crossovered_budget_lines__analytic_tag_id
msgid "Analytic Tag"
msgstr ""

#. module: account_budget_analytic_tag
#: model:ir.model,name:account_budget_analytic_tag.model_crossovered_budget_lines
msgid "Budget Line"
msgstr ""

#. module: account_budget_analytic_tag
#: model:ir.model.fields,field_description:account_budget_analytic_tag.field_crossovered_budget_lines__display_name
msgid "Display Name"
msgstr ""

#. module: account_budget_analytic_tag
#: model:ir.model.fields,field_description:account_budget_analytic_tag.field_crossovered_budget_lines__id
msgid "ID"
msgstr ""

#. module: account_budget_analytic_tag
#: model:ir.model.fields,field_description:account_budget_analytic_tag.field_crossovered_budget_lines____last_update
msgid "Last Modified on"
msgstr ""

#. module: account_budget_analytic_tag
#: code:addons/account_budget_analytic_tag/models/account_budget.py:0
#, python-format
msgid ""
"You have to enter at least a budgetary position or analytic account or "
"analytic tag on a budget line."
msgstr ""
51 changes: 51 additions & 0 deletions account_budget_oca_analytic_tag/i18n/es.po
Original file line number Diff line number Diff line change
@@ -0,0 +1,51 @@
# Translation of Odoo Server.
# This file contains the translation of the following modules:
# * account_budget_analytic_tag
#
msgid ""
msgstr ""
"Project-Id-Version: Odoo Server 14.0+e-20211202\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2021-12-23 19:57+0000\n"
"PO-Revision-Date: 2021-12-23 19:57+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_budget_analytic_tag
#: model:ir.model.fields,field_description:account_budget_analytic_tag.field_crossovered_budget_lines__analytic_tag_id
msgid "Analytic Tag"
msgstr "Etiqueta analítica"

#. module: account_budget_analytic_tag
#: model:ir.model,name:account_budget_analytic_tag.model_crossovered_budget_lines
msgid "Budget Line"
msgstr "Línea de presupuesto"

#. module: account_budget_analytic_tag
#: model:ir.model.fields,field_description:account_budget_analytic_tag.field_crossovered_budget_lines__display_name
msgid "Display Name"
msgstr "Nombre"

#. module: account_budget_analytic_tag
#: model:ir.model.fields,field_description:account_budget_analytic_tag.field_crossovered_budget_lines__id
msgid "ID"
msgstr ""

#. module: account_budget_analytic_tag
#: model:ir.model.fields,field_description:account_budget_analytic_tag.field_crossovered_budget_lines____last_update
msgid "Last Modified on"
msgstr "Ultima modificación el"

#. module: account_budget_analytic_tag
#: code:addons/account_budget_analytic_tag/models/account_budget.py:0
#, python-format
msgid ""
"You have to enter at least a budgetary position or analytic account or "
"analytic tag on a budget line."
msgstr ""
"Deben entrar por lo menos una posicion presupuestarial, cuenta analítica o etiqueta "
"analítica en una línea de presupuesto."
3 changes: 3 additions & 0 deletions account_budget_oca_analytic_tag/models/__init__.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
# License LGPL-3.0 or later (http://www.gnu.org/licenses/lgpl).

from . import account_budget
71 changes: 71 additions & 0 deletions account_budget_oca_analytic_tag/models/account_budget.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,71 @@
# Copyright (c) 2021 Open Source Integrators
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl).

from odoo import _, api, fields, models
from odoo.exceptions import ValidationError


class CrossoveredBudgetLines(models.Model):
_inherit = "crossovered.budget.lines"

analytic_tag_id = fields.Many2one("account.analytic.tag", string="Analytic Tag")

def _compute_practical_amount(self):
"""Overwrite this method for to count practical_amount based on
analytic_tag_id on move line."""
for line in self:
acc_ids = line.general_budget_id.account_ids.ids
date_to = line.date_to
date_from = line.date_from
if line.analytic_account_id.id:
self.env.cr.execute(
"""
SELECT SUM(amount)
FROM account_analytic_line
WHERE account_id=%s
AND (date between %s
AND %s)
AND general_account_id=ANY(%s)""",
(line.analytic_account_id.id, date_from, date_to, acc_ids),
)
result = self.env.cr.fetchone()[0] or 0.0

else:
self.env.cr.execute(
"""
SELECT SUM(credit) - SUM(debit)
FROM account_move_line aml
LEFT JOIN account_move am ON aml.move_id = am.id
LEFT JOIN
account_analytic_tag_account_move_line_rel aat
ON aat.account_move_line_id = aml.id
WHERE state=%s
AND account_id in %s
AND (aml.date between %s
AND %s)
AND aat.account_analytic_tag_id=%s""",
(
"posted",
tuple(line.general_budget_id.account_ids.ids),
date_from,
date_to,
line.analytic_tag_id.id or 0.0,
),
)
result = self.env.cr.fetchone()[0]
line.practical_amount = result

@api.constrains("general_budget_id", "analytic_account_id", "analytic_tag_id")
def _must_have_analytical_or_budgetary_or_both(self):
for record in self:
if (
not record.analytic_account_id
and not record.general_budget_id
and not record.analytic_tag_id
):
raise ValidationError(
_(
"You have to enter at least a budgetary position or analytic account"
" or analytic tag on a budget line."
)
)
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
41 changes: 41 additions & 0 deletions account_budget_oca_analytic_tag/views/account_budget_views.xml
Original file line number Diff line number Diff line change
@@ -0,0 +1,41 @@
<odoo>

<record
id="crossovered_budget_view_form_inherit_account_budget_analytic_tag"
model="ir.ui.view"
>
<field name="name">crossovered.budget.view.form.inherit.analytic_tag</field>
<field name="model">crossovered.budget</field>
<field
name="inherit_id"
ref="account_budget_oca.crossovered_budget_view_form"
/>
<field name="arch" type="xml">
<xpath
expr="//page//tree//field[@name='analytic_account_id']"
position="attributes"
>
<attribute name="required">0</attribute>
</xpath>
<xpath
expr="//page//form//field[@name='analytic_account_id']"
position="attributes"
>
<attribute name="required">0</attribute>
</xpath>
<xpath
expr="//page//tree//field[@name='analytic_account_id']"
position="after"
>
<field name="analytic_tag_id" />
</xpath>
<xpath
expr="//page//form//field[@name='analytic_account_id']"
position="after"
>
<field name="analytic_tag_id" />
</xpath>
</field>
</record>

</odoo>
6 changes: 6 additions & 0 deletions setup/account_budget_oca_analytic_tag/setup.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
import setuptools

setuptools.setup(
setup_requires=['setuptools-odoo'],
odoo_addon=True,
)

0 comments on commit 3a99d68

Please sign in to comment.