diff --git a/account_analytic_group/README.rst b/account_analytic_group/README.rst new file mode 100644 index 0000000..c291baf --- /dev/null +++ b/account_analytic_group/README.rst @@ -0,0 +1,70 @@ +.. image:: https://odoo-community.org/readme-banner-image + :target: https://odoo-community.org/get-involved?utm_source=readme + :alt: Odoo Community Association + +====================== +Account Analytic Group +====================== + +.. + !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + !! This file is generated by oca-gen-addon-readme !! + !! changes will be overwritten. !! + !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + !! source digest: sha256:6f9c2d3d3ed56aa62bb23ae8d1298404938a200366cc022cb0c03ccab496c003 + !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + +.. |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/license-LGPL--3-blue.png + :target: http://www.gnu.org/licenses/lgpl-3.0-standalone.html + :alt: License: LGPL-3 +.. |badge3| image:: https://img.shields.io/badge/github-qrtl%2Fqrtl--custom-lightgray.png?logo=github + :target: https://github.com/qrtl/qrtl-custom/tree/19.0/account_analytic_group + :alt: qrtl/qrtl-custom + +|badge1| |badge2| |badge3| + +This module is designed to restore the Analytic Group functionality that +was present in versions prior to the 16.0 update. + +Background +---------- + +In Odoo 16, the 'Analytic Group' feature was replaced with the 'Analytic +Plan'. This new feature allows better tracking of costs and revenues by +project or department. However, we were using 'Analytic Group' for +timesheet grouping, which is incompatible with the new feature. This +module is designed to bring back the 'Analytic Group' functionality to +meet our specific needs. + +**Table of contents** + +.. contents:: + :local: + +Bug Tracker +=========== + +Bugs are tracked on `GitHub Issues `_. +In case of trouble, please check there if your issue has already been reported. +If you spotted it first, help us to smash it by providing a detailed and welcomed +`feedback `_. + +Do not contact contributors directly about support or help with technical issues. + +Credits +======= + +Authors +------- + +* Quartile + +Maintainers +----------- + +This module is part of the `qrtl/qrtl-custom `_ project on GitHub. + +You are welcome to contribute. diff --git a/account_analytic_group/__init__.py b/account_analytic_group/__init__.py new file mode 100644 index 0000000..0650744 --- /dev/null +++ b/account_analytic_group/__init__.py @@ -0,0 +1 @@ +from . import models diff --git a/account_analytic_group/__manifest__.py b/account_analytic_group/__manifest__.py new file mode 100644 index 0000000..09923c0 --- /dev/null +++ b/account_analytic_group/__manifest__.py @@ -0,0 +1,19 @@ +# Copyright 2023 Quartile (https://www.quartile.co) +# License LGPL-3.0 or later (https://www.gnu.org/licenses/lgpl). +{ + "name": "Account Analytic Group", + "summary": "Restore the Analytic Group feature removed from core in 16.0", + "category": "Analytic", + "license": "LGPL-3", + "author": "Quartile", + "website": "https://www.quartile.co", + "maintainers": ["AungKoKoLin1997"], + "version": "19.0.1.0.0", + "depends": ["account"], + "data": [ + "security/ir.model.access.csv", + "views/analytic_group_views.xml", + "views/analytic_account_views.xml", + ], + "installable": True, +} diff --git a/account_analytic_group/i18n/ja.po b/account_analytic_group/i18n/ja.po new file mode 100644 index 0000000..dc6d01b --- /dev/null +++ b/account_analytic_group/i18n/ja.po @@ -0,0 +1,99 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * account_analytic_group +# +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 16.0+e\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2023-07-22 09:37+0000\n" +"PO-Revision-Date: 2023-07-22 09:37+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_group +#: model:ir.model,name:account_analytic_group.model_account_analytic_account +msgid "Analytic Account" +msgstr "分析勘定" + +#. module: account_analytic_group +#: model:ir.model,name:account_analytic_group.model_account_analytic_group +msgid "Analytic Account Group" +msgstr "分析勘定グループ" + +#. module: account_analytic_group +#: model:ir.actions.act_window,name:account_analytic_group.account_analytic_group_action +#: model:ir.ui.menu,name:account_analytic_group.account_analytic_group_menu +#: model_terms:ir.ui.view,arch_db:account_analytic_group.account_analytic_group_form_view +msgid "Analytic Account Groups" +msgstr "分析勘定グループ" + +#. module: account_analytic_group +#: model:ir.model,name:account_analytic_group.model_account_analytic_line +msgid "Analytic Line" +msgstr "分析行" + +#. module: account_analytic_group +#: model:ir.model.fields,field_description:account_analytic_group.field_account_analytic_group__company_id +msgid "Company" +msgstr "会社" + +#. module: account_analytic_group +#: model:ir.model.fields,field_description:account_analytic_group.field_account_analytic_group__create_uid +msgid "Created by" +msgstr "作成者" + +#. module: account_analytic_group +#: model:ir.model.fields,field_description:account_analytic_group.field_account_analytic_group__create_date +msgid "Created on" +msgstr "作成日" + +#. module: account_analytic_group +#: model:ir.model.fields,field_description:account_analytic_group.field_account_analytic_group__description +msgid "Description" +msgstr "説明" + +#. module: account_analytic_group +#: model:ir.model.fields,field_description:account_analytic_group.field_account_analytic_group__display_name +msgid "Display Name" +msgstr "表示名" + +#. module: account_analytic_group +#: model:ir.model.fields,field_description:account_analytic_group.field_account_analytic_account__group_id +#: model:ir.model.fields,field_description:account_analytic_group.field_account_analytic_line__group_id +msgid "Group" +msgstr "グループ" + +#. module: account_analytic_group +#: model:ir.model.fields,field_description:account_analytic_group.field_account_analytic_group__id +msgid "ID" +msgstr "" + +#. module: account_analytic_group +#: model:ir.model.fields,field_description:account_analytic_group.field_account_analytic_group____last_update +msgid "Last Modified on" +msgstr "最終変更日" + +#. module: account_analytic_group +#: model:ir.model.fields,field_description:account_analytic_group.field_account_analytic_group__write_uid +msgid "Last Updated by" +msgstr "最終更新者" + +#. module: account_analytic_group +#: model:ir.model.fields,field_description:account_analytic_group.field_account_analytic_group__write_date +msgid "Last Updated on" +msgstr "最終更新日" + +#. module: account_analytic_group +#: model:ir.model.fields,field_description:account_analytic_group.field_account_analytic_group__name +msgid "Name" +msgstr "名称" + +#. module: account_analytic_group +#: model:ir.model.fields,field_description:account_analytic_group.field_account_analytic_group__sequence +msgid "Sequence" +msgstr "順序" diff --git a/account_analytic_group/models/__init__.py b/account_analytic_group/models/__init__.py new file mode 100644 index 0000000..793ce51 --- /dev/null +++ b/account_analytic_group/models/__init__.py @@ -0,0 +1,3 @@ +from . import analytic_group +from . import analytic_account +from . import analytic_line diff --git a/account_analytic_group/models/analytic_account.py b/account_analytic_group/models/analytic_account.py new file mode 100644 index 0000000..7c41a2b --- /dev/null +++ b/account_analytic_group/models/analytic_account.py @@ -0,0 +1,10 @@ +# Copyright 2023 Quartile Limited +# License LGPL-3.0 or later (https://www.gnu.org/licenses/lgpl). + +from odoo import fields, models + + +class AccountAnalyticAccount(models.Model): + _inherit = "account.analytic.account" + + group_id = fields.Many2one("account.analytic.group", string="Group") diff --git a/account_analytic_group/models/analytic_group.py b/account_analytic_group/models/analytic_group.py new file mode 100644 index 0000000..7bff948 --- /dev/null +++ b/account_analytic_group/models/analytic_group.py @@ -0,0 +1,15 @@ +# Copyright 2023 Quartile (https://www.quartile.co) +# License LGPL-3.0 or later (https://www.gnu.org/licenses/lgpl). + +from odoo import fields, models + + +class AccountAnalyticGroup(models.Model): + _name = "account.analytic.group" + _description = "Analytic Account Group" + _order = "sequence, name" + + sequence = fields.Integer() + name = fields.Char(required=True) + description = fields.Text() + company_id = fields.Many2one("res.company", string="Company") diff --git a/account_analytic_group/models/analytic_line.py b/account_analytic_group/models/analytic_line.py new file mode 100644 index 0000000..d15e033 --- /dev/null +++ b/account_analytic_group/models/analytic_line.py @@ -0,0 +1,16 @@ +# Copyright 2023 Quartile Limited +# License LGPL-3.0 or later (https://www.gnu.org/licenses/lgpl). + +from odoo import fields, models + + +class AccountAnalyticLine(models.Model): + _inherit = "account.analytic.line" + + group_id = fields.Many2one( + "account.analytic.group", + related="account_id.group_id", + store=True, + readonly=True, + compute_sudo=True, + ) diff --git a/account_analytic_group/pyproject.toml b/account_analytic_group/pyproject.toml new file mode 100644 index 0000000..4231d0c --- /dev/null +++ b/account_analytic_group/pyproject.toml @@ -0,0 +1,3 @@ +[build-system] +requires = ["whool"] +build-backend = "whool.buildapi" diff --git a/account_analytic_group/readme/DESCRIPTION.md b/account_analytic_group/readme/DESCRIPTION.md new file mode 100644 index 0000000..3ab6319 --- /dev/null +++ b/account_analytic_group/readme/DESCRIPTION.md @@ -0,0 +1,11 @@ +This module is designed to restore the Analytic Group functionality that +was present in versions prior to the 16.0 update. + +## Background + +In Odoo 16, the 'Analytic Group' feature was replaced with the 'Analytic +Plan'. This new feature allows better tracking of costs and revenues by +project or department. However, we were using 'Analytic Group' for +timesheet grouping, which is incompatible with the new feature. This +module is designed to bring back the 'Analytic Group' functionality to +meet our specific needs. diff --git a/account_analytic_group/security/ir.model.access.csv b/account_analytic_group/security/ir.model.access.csv new file mode 100644 index 0000000..7d37eda --- /dev/null +++ b/account_analytic_group/security/ir.model.access.csv @@ -0,0 +1,2 @@ +id,name,model_id:id,group_id:id,perm_read,perm_write,perm_create,perm_unlink +access_account_analytic_group,access_account_analytic_group,model_account_analytic_group,analytic.group_analytic_accounting,1,1,1,1 diff --git a/account_analytic_group/static/description/index.html b/account_analytic_group/static/description/index.html new file mode 100644 index 0000000..f7aad52 --- /dev/null +++ b/account_analytic_group/static/description/index.html @@ -0,0 +1,421 @@ + + + + + +README.rst + + + +
+ + + +Odoo Community Association + +
+

Account Analytic Group

+ +

Beta License: LGPL-3 qrtl/qrtl-custom

+

This module is designed to restore the Analytic Group functionality that +was present in versions prior to the 16.0 update.

+
+

Background

+

In Odoo 16, the ‘Analytic Group’ feature was replaced with the ‘Analytic +Plan’. This new feature allows better tracking of costs and revenues by +project or department. However, we were using ‘Analytic Group’ for +timesheet grouping, which is incompatible with the new feature. This +module is designed to bring back the ‘Analytic Group’ functionality to +meet our specific needs.

+

Table of contents

+ +
+

Bug Tracker

+

Bugs are tracked on GitHub Issues. +In case of trouble, please check there if your issue has already been reported. +If you spotted it first, help us to smash it by providing a detailed and welcomed +feedback.

+

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

+
+ +
+
+

Authors

+
    +
  • Quartile
  • +
+
+
+

Maintainers

+

This module is part of the qrtl/qrtl-custom project on GitHub.

+

You are welcome to contribute.

+
+
+
+ + diff --git a/account_analytic_group/tests/__init__.py b/account_analytic_group/tests/__init__.py new file mode 100644 index 0000000..8984401 --- /dev/null +++ b/account_analytic_group/tests/__init__.py @@ -0,0 +1,4 @@ +# Copyright 2024 Quartile (https://www.quartile.co) +# License LGPL-3.0 or later (https://www.gnu.org/licenses/lgpl). + +from . import test_account_analytic_group diff --git a/account_analytic_group/tests/test_account_analytic_group.py b/account_analytic_group/tests/test_account_analytic_group.py new file mode 100644 index 0000000..795e792 --- /dev/null +++ b/account_analytic_group/tests/test_account_analytic_group.py @@ -0,0 +1,37 @@ +# Copyright 2024 Quartile (https://www.quartile.co) +# License LGPL-3.0 or later (https://www.gnu.org/licenses/lgpl). + +from odoo import fields +from odoo.tests.common import TransactionCase + + +class TestAccountAnalyticGroup(TransactionCase): + @classmethod + def setUpClass(cls): + super().setUpClass() + cls.group = cls.env["account.analytic.group"].create({"name": "Group A"}) + cls.plan = cls.env["account.analytic.plan"].create({"name": "Test Plan"}) + cls.account = cls.env["account.analytic.account"].create( + { + "name": "Test Account", + "plan_id": cls.plan.id, + "group_id": cls.group.id, + } + ) + + def test_line_group_id_follows_account(self): + # account.analytic.line.group_id is a stored related field on + # account_id.group_id; it must be set on creation and recomputed + # when the account's group changes. + line = self.env["account.analytic.line"].create( + { + "name": "Test Line", + "account_id": self.account.id, + "amount": 100.0, + "date": fields.Date.today(), + } + ) + self.assertEqual(line.group_id, self.group) + new_group = self.env["account.analytic.group"].create({"name": "Group B"}) + self.account.group_id = new_group + self.assertEqual(line.group_id, new_group) diff --git a/account_analytic_group/views/analytic_account_views.xml b/account_analytic_group/views/analytic_account_views.xml new file mode 100644 index 0000000..a08fe8d --- /dev/null +++ b/account_analytic_group/views/analytic_account_views.xml @@ -0,0 +1,13 @@ + + + + analytic.analytic.account.form + account.analytic.account + + + + + + + + diff --git a/account_analytic_group/views/analytic_group_views.xml b/account_analytic_group/views/analytic_group_views.xml new file mode 100644 index 0000000..327c331 --- /dev/null +++ b/account_analytic_group/views/analytic_group_views.xml @@ -0,0 +1,43 @@ + + + + account.analytic.group.form + account.analytic.group + +
+ + + + + + + + + + +
+
+
+ + account.analytic.group.tree + account.analytic.group + + + + + + + + + Analytic Account Groups + account.analytic.group + list,form + + +