Browse Source
[ADD] create `project_funders` to track funds on tasks
[ADD] create `project_funders` to track funds on tasks
Signed-off-by: Valentin Lab <valentin.lab@kalysto.org>14.0_project_funders
12 changed files with 427 additions and 0 deletions
-
2.gitignore
-
46project_funders/README.rst
-
1project_funders/__init__.py
-
87project_funders/__manifest__.py
-
1project_funders/i18n/README
-
105project_funders/i18n/fr.po
-
105project_funders/i18n/project_funders.pot
-
2project_funders/models/__init__.py
-
16project_funders/models/project_funders.py
-
13project_funders/models/project_task.py
-
2project_funders/security/ir.model.access.csv
-
47project_funders/views/project_task_view.xml
@ -0,0 +1,2 @@ |
|||||
|
*.*~ |
||||
|
*.pyc |
@ -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 <https://github.com/elabore-coop/project-tools/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. |
||||
|
|
||||
|
Credits |
||||
|
======= |
||||
|
|
||||
|
Contributors |
||||
|
------------ |
||||
|
* Nicolas Jeudy <https://github.com/njeudy> |
||||
|
* 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. |
@ -0,0 +1 @@ |
|||||
|
from . import models |
@ -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 <https://github.com/elabore-coop/project-tools/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. |
||||
|
|
||||
|
Credits |
||||
|
======= |
||||
|
|
||||
|
Contributors |
||||
|
------------ |
||||
|
* Nicolas Jeudy <https://github.com/njeudy> |
||||
|
* 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, |
||||
|
} |
@ -0,0 +1 @@ |
|||||
|
This directory should contain the *.po for Odoo translation. |
@ -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" |
@ -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 "" |
@ -0,0 +1,2 @@ |
|||||
|
from . import project_funders |
||||
|
from . import project_task |
@ -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) |
@ -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")) |
@ -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 |
@ -0,0 +1,47 @@ |
|||||
|
<?xml version="1.0" encoding="UTF-8"?> |
||||
|
<odoo> |
||||
|
|
||||
|
<record id="view_task_form2_inherit_project" model="ir.ui.view"> |
||||
|
<field name="name">project.task.view.form.inherit</field> |
||||
|
<field name="model">project.task</field> |
||||
|
<field name="inherit_id" ref="project.view_task_form2"/> |
||||
|
<field name="arch" type="xml"> |
||||
|
<xpath expr="//notebook" position="inside"> |
||||
|
<page name="funders" string="Funder(s)"> |
||||
|
<field name="funder_ids" context="{'default_task_id': active_id}"> |
||||
|
<tree editable="bottom"> |
||||
|
<field name="task_id" invisible="1"/> |
||||
|
<field name="partner_id"/> |
||||
|
<field name="amount"/> |
||||
|
</tree> |
||||
|
</field> |
||||
|
<group> |
||||
|
<group class="oe_subtotal_footer oe_right" name="project_hours"> |
||||
|
<span> |
||||
|
<label class="font-weight-bold" for="amount_total" string="Total"/> |
||||
|
</span> |
||||
|
<field name="amount_total" nolabel="1"/> |
||||
|
</group> |
||||
|
</group> |
||||
|
</page> |
||||
|
</xpath> |
||||
|
</field> |
||||
|
</record> |
||||
|
|
||||
|
<record id="view_task_kanban_inherit_project_funders" model="ir.ui.view"> |
||||
|
<field name="name">project.task.view.kanban.inherit</field> |
||||
|
<field name="model">project.task</field> |
||||
|
<field name="inherit_id" ref="project.view_task_kanban"/> |
||||
|
<field name="arch" type="xml"> |
||||
|
<field name="active" position="after"> |
||||
|
<field name="amount_total"/> |
||||
|
</field> |
||||
|
<field name="tag_ids" position="after"> |
||||
|
<span attrs="{'invisible': [('amount_total', '=', 0)]}"> |
||||
|
Funds: <field name="amount_total"/> |
||||
|
</span> |
||||
|
</field> |
||||
|
</field> |
||||
|
</record> |
||||
|
|
||||
|
</odoo> |
Write
Preview
Loading…
Cancel
Save
Reference in new issue