From 2bb03004d6b625095415eee32480603603fd8699 Mon Sep 17 00:00:00 2001 From: Valentin Lab Date: Tue, 26 Jul 2022 01:30:55 +0200 Subject: [PATCH] [ADD] create `project_funders` to track funds on tasks Signed-off-by: Valentin Lab --- .gitignore | 2 + project_funders/README.rst | 46 ++++++++ project_funders/__init__.py | 1 + project_funders/__manifest__.py | 87 +++++++++++++++ project_funders/i18n/README | 1 + project_funders/i18n/fr.po | 105 +++++++++++++++++++ project_funders/i18n/project_funders.pot | 105 +++++++++++++++++++ project_funders/models/__init__.py | 2 + project_funders/models/project_funders.py | 16 +++ project_funders/models/project_task.py | 13 +++ project_funders/security/ir.model.access.csv | 2 + project_funders/views/project_task_view.xml | 47 +++++++++ 12 files changed, 427 insertions(+) create mode 100644 .gitignore create mode 100644 project_funders/README.rst create mode 100644 project_funders/__init__.py create mode 100644 project_funders/__manifest__.py create mode 100644 project_funders/i18n/README create mode 100644 project_funders/i18n/fr.po create mode 100644 project_funders/i18n/project_funders.pot create mode 100644 project_funders/models/__init__.py create mode 100644 project_funders/models/project_funders.py create mode 100644 project_funders/models/project_task.py create mode 100644 project_funders/security/ir.model.access.csv create mode 100644 project_funders/views/project_task_view.xml diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..551cb32 --- /dev/null +++ b/.gitignore @@ -0,0 +1,2 @@ +*.*~ +*.pyc diff --git a/project_funders/README.rst b/project_funders/README.rst new file mode 100644 index 0000000..290a0ef --- /dev/null +++ b/project_funders/README.rst @@ -0,0 +1,46 @@ + :image: https://img.shields.io/badge/licence-AGPL--3-blue.svg + :target: http://www.gnu.org/licenses/agpl-3.0-standalone.html + :alt: License: AGPL-3 +=============== +project_funders +=============== + +Add list of funder and corresponding amount to project task. + +Installation +============ + +Use Odoo normal module installation procedure to install +``project_funders``. + +Known issues / Roadmap +====================== + +None yet. + +Bug Tracker +=========== + +Bugs are tracked on `our issues website `_. 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. + +Credits +======= + +Contributors +------------ +* Nicolas Jeudy +* Valentin Lab + +Funders +------- + +The development of this module has been financially supported by: +* Alusage (https://alusage.fr) + + +Maintainer +---------- +This module is maintained by Alusage and Elabore. diff --git a/project_funders/__init__.py b/project_funders/__init__.py new file mode 100644 index 0000000..0650744 --- /dev/null +++ b/project_funders/__init__.py @@ -0,0 +1 @@ +from . import models diff --git a/project_funders/__manifest__.py b/project_funders/__manifest__.py new file mode 100644 index 0000000..6f636eb --- /dev/null +++ b/project_funders/__manifest__.py @@ -0,0 +1,87 @@ +# Copyright 2022 Nicolas Jeudy (Alusage) +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). + +{ + "name": "project_funders", + "version": "14.0.0.1.0", + "author": "Alusage", + "website": "https://alusage.fr", + "data": [ + # "security/security.xml", + # "security/ir.model.access.csv", + # "views/menu.xml", + # "data/data.xml", + ], + "author": "Alusage, Elabore", + "maintainer": "Nicolas Jeudy", + "license": "AGPL-3", + "category": "Tools", + "summary": " Odoo module.", + "description": """ + :image: https://img.shields.io/badge/licence-AGPL--3-blue.svg + :target: http://www.gnu.org/licenses/agpl-3.0-standalone.html + :alt: License: AGPL-3 +=============== +project_funders +=============== + +Add list of funder and corresponding amount to project task. + +Installation +============ + +Use Odoo normal module installation procedure to install +``project_funders``. + +Known issues / Roadmap +====================== + +None yet. + +Bug Tracker +=========== + +Bugs are tracked on `our issues website `_. 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. + +Credits +======= + +Contributors +------------ +* Nicolas Jeudy +* Valentin Lab + +Funders +------- +The development of this module has been financially supported by: +* Alusage (https://alusage.fr) + + +Maintainer +---------- +This module is maintained by Alusage and Elabore. + +""", + # any module necessary for this one to work correctly + "depends": ["base", "project"], + "qweb": [ + # "static/src/xml/*.xml", + ], + "external_dependencies": { + "python": [], + }, + # always loaded + "data": ["security/ir.model.access.csv", "views/project_task_view.xml"], + # only loaded in demonstration mode + "demo": [], + "js": [], + "css": [], + "installable": True, + # Install this module automatically if all dependency have been previously + # and independently installed. Used for synergetic or glue modules. + "auto_install": False, + "application": False, +} diff --git a/project_funders/i18n/README b/project_funders/i18n/README new file mode 100644 index 0000000..62197a1 --- /dev/null +++ b/project_funders/i18n/README @@ -0,0 +1 @@ +This directory should contain the *.po for Odoo translation. diff --git a/project_funders/i18n/fr.po b/project_funders/i18n/fr.po new file mode 100644 index 0000000..99fd2a4 --- /dev/null +++ b/project_funders/i18n/fr.po @@ -0,0 +1,105 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * project_funders +# +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 14.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2022-07-26 06:53+0000\n" +"PO-Revision-Date: 2022-07-26 06:53+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: project_funders +#: model:ir.model.fields,field_description:project_funders.field_project_task__amount_total +msgid "Amount Total" +msgstr "Montant total" + +#. module: project_funders +#: model:ir.model.fields,field_description:project_funders.field_project_funder__create_uid +msgid "Created by" +msgstr "Créé par" + +#. module: project_funders +#: model:ir.model.fields,field_description:project_funders.field_project_funder__create_date +msgid "Created on" +msgstr "Créé le" + +#. module: project_funders +#: model:ir.model.fields,field_description:project_funders.field_project_funder__display_name +#: model:ir.model.fields,field_description:project_funders.field_project_task__display_name +msgid "Display Name" +msgstr "Nom affiché" + +#. module: project_funders +#: model:ir.model.fields,field_description:project_funders.field_project_funder__partner_id +msgid "Funder" +msgstr "Financeur" + +#. module: project_funders +#: model:ir.model,name:project_funders.model_project_funder +msgid "Funder and amount for tasks" +msgstr "Financeur et montant sur les taches" + +#. module: project_funders +#: model_terms:ir.ui.view,arch_db:project_funders.view_task_form2_inherit_project +msgid "Funder(s)" +msgstr "Financeur(s)" + +#. module: project_funders +#: model_terms:ir.ui.view,arch_db:project_funders.view_task_kanban_inherit_project_funders +msgid "Funds:" +msgstr "Fonds :" + +#. module: project_funders +#: model:ir.model.fields,field_description:project_funders.field_project_funder__id +#: model:ir.model.fields,field_description:project_funders.field_project_task__id +msgid "ID" +msgstr "ID" + +#. module: project_funders +#: model:ir.model.fields,field_description:project_funders.field_project_funder____last_update +#: model:ir.model.fields,field_description:project_funders.field_project_task____last_update +msgid "Last Modified on" +msgstr "Dernière modification le" + +#. module: project_funders +#: model:ir.model.fields,field_description:project_funders.field_project_funder__write_uid +msgid "Last Updated by" +msgstr "Derniere modifiation par" + +#. module: project_funders +#: model:ir.model.fields,field_description:project_funders.field_project_funder__write_date +msgid "Last Updated on" +msgstr "Dernière mise à jour le" + +#. module: project_funders +#: model:ir.model.fields,field_description:project_funders.field_project_funder__name +msgid "Name" +msgstr "Nom" + +#. module: project_funders +#: model:ir.model,name:project_funders.model_project_task +#: model:ir.model.fields,field_description:project_funders.field_project_funder__task_id +msgid "Task" +msgstr "Tâche" + +#. module: project_funders +#: model_terms:ir.ui.view,arch_db:project_funders.view_task_form2_inherit_project +msgid "Total" +msgstr "Total" + +#. module: project_funders +#: model:ir.model.fields,field_description:project_funders.field_project_funder__amount +msgid "Untaxed Amount" +msgstr "Montant HT" + +#. module: project_funders +#: model:ir.model.fields,field_description:project_funders.field_project_task__funder_ids +msgid "funder" +msgstr "Financeur" diff --git a/project_funders/i18n/project_funders.pot b/project_funders/i18n/project_funders.pot new file mode 100644 index 0000000..a6ba3d1 --- /dev/null +++ b/project_funders/i18n/project_funders.pot @@ -0,0 +1,105 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * project_funders +# +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 14.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2022-07-26 07:41+0000\n" +"PO-Revision-Date: 2022-07-26 07:41+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: project_funders +#: model:ir.model.fields,field_description:project_funders.field_project_task__amount_total +msgid "Amount Total" +msgstr "" + +#. module: project_funders +#: model:ir.model.fields,field_description:project_funders.field_project_funder__create_uid +msgid "Created by" +msgstr "" + +#. module: project_funders +#: model:ir.model.fields,field_description:project_funders.field_project_funder__create_date +msgid "Created on" +msgstr "" + +#. module: project_funders +#: model:ir.model.fields,field_description:project_funders.field_project_funder__display_name +#: model:ir.model.fields,field_description:project_funders.field_project_task__display_name +msgid "Display Name" +msgstr "" + +#. module: project_funders +#: model:ir.model.fields,field_description:project_funders.field_project_funder__partner_id +msgid "Funder" +msgstr "" + +#. module: project_funders +#: model:ir.model,name:project_funders.model_project_funder +msgid "Funder and amount for tasks" +msgstr "" + +#. module: project_funders +#: model_terms:ir.ui.view,arch_db:project_funders.view_task_form2_inherit_project +msgid "Funder(s)" +msgstr "" + +#. module: project_funders +#: model_terms:ir.ui.view,arch_db:project_funders.view_task_kanban_inherit_project_funders +msgid "Funds:" +msgstr "" + +#. module: project_funders +#: model:ir.model.fields,field_description:project_funders.field_project_funder__id +#: model:ir.model.fields,field_description:project_funders.field_project_task__id +msgid "ID" +msgstr "" + +#. module: project_funders +#: model:ir.model.fields,field_description:project_funders.field_project_funder____last_update +#: model:ir.model.fields,field_description:project_funders.field_project_task____last_update +msgid "Last Modified on" +msgstr "" + +#. module: project_funders +#: model:ir.model.fields,field_description:project_funders.field_project_funder__write_uid +msgid "Last Updated by" +msgstr "" + +#. module: project_funders +#: model:ir.model.fields,field_description:project_funders.field_project_funder__write_date +msgid "Last Updated on" +msgstr "" + +#. module: project_funders +#: model:ir.model.fields,field_description:project_funders.field_project_funder__name +msgid "Name" +msgstr "" + +#. module: project_funders +#: model:ir.model,name:project_funders.model_project_task +#: model:ir.model.fields,field_description:project_funders.field_project_funder__task_id +msgid "Task" +msgstr "" + +#. module: project_funders +#: model_terms:ir.ui.view,arch_db:project_funders.view_task_form2_inherit_project +msgid "Total" +msgstr "" + +#. module: project_funders +#: model:ir.model.fields,field_description:project_funders.field_project_funder__amount +msgid "Untaxed Amount" +msgstr "" + +#. module: project_funders +#: model:ir.model.fields,field_description:project_funders.field_project_task__funder_ids +msgid "funder" +msgstr "" diff --git a/project_funders/models/__init__.py b/project_funders/models/__init__.py new file mode 100644 index 0000000..89e55b4 --- /dev/null +++ b/project_funders/models/__init__.py @@ -0,0 +1,2 @@ +from . import project_funders +from . import project_task diff --git a/project_funders/models/project_funders.py b/project_funders/models/project_funders.py new file mode 100644 index 0000000..dcd03a1 --- /dev/null +++ b/project_funders/models/project_funders.py @@ -0,0 +1,16 @@ +from odoo import _, api, fields, models + + +class ProjectFunders(models.Model): + _name = "project.funder" + _description = "Funder and amount for tasks" + + name = fields.Char(compute="_compute_name", string="Name") + partner_id = fields.Many2one("res.partner", string="Funder", required=True) + amount = fields.Float("Untaxed Amount", required=True) + task_id = fields.Many2one("project.task", string="Task") + + @api.depends("partner_id", "amount") + def _compute_name(self): + for record in self: + record.name = "%s (%s)" % (record.partner_id.name, record.amount) diff --git a/project_funders/models/project_task.py b/project_funders/models/project_task.py new file mode 100644 index 0000000..303d11d --- /dev/null +++ b/project_funders/models/project_task.py @@ -0,0 +1,13 @@ +from odoo import _, api, fields, models + + +class ProjectTask(models.Model): + _inherit = "project.task" + + funder_ids = fields.One2many("project.funder", "task_id", string="funder") + amount_total = fields.Float(compute="_compute_amount_total", string="Amount Total") + + @api.depends("funder_ids") + def _compute_amount_total(self): + for record in self: + record.amount_total = sum(record.funder_ids.mapped("amount")) diff --git a/project_funders/security/ir.model.access.csv b/project_funders/security/ir.model.access.csv new file mode 100644 index 0000000..b597c10 --- /dev/null +++ b/project_funders/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_project_funder_all,project.funder.all,model_project_funder,,1,1,1,1 diff --git a/project_funders/views/project_task_view.xml b/project_funders/views/project_task_view.xml new file mode 100644 index 0000000..06cb5cb --- /dev/null +++ b/project_funders/views/project_task_view.xml @@ -0,0 +1,47 @@ + + + + + project.task.view.form.inherit + project.task + + + + + + + + + + + + + + + + + + + + + + + + + project.task.view.kanban.inherit + project.task + + + + + + + + Funds: + + + + + + \ No newline at end of file