9 Commits

Author SHA1 Message Date
Stéphan Sainléger
139e451d0c [ADD] create `project_name_from_quote` add-on 2022-09-15 16:08:54 +02:00
Stéphan Sainléger
11d99ae6e0 [ADD] create `project_request_data` add-on 2022-08-26 15:04:50 +02:00
Stéphan Sainléger
2bd9234fa1 [ADD] create `project_user_default_project` add-on 2022-08-25 18:08:54 +02:00
Stéphan Sainléger
892a526df8 [IMP] project_assignees: add assignee_ids field to task portal view 2022-08-25 18:03:09 +02:00
Stéphan Sainléger
87bdd51043 [IMP] project_timebox: add timebox fields in task portal view 2022-08-25 17:27:34 +02:00
Stéphan Sainléger
309f8d4510 [ADD] project_timebox: create addon to estimate task effort
Adds fields to estimate the min and max time needed to solve a task.

Task: [JOI-13](https://justodooit.fr/mail/view?model=project.task&res_id=13&access_token=cca0b860-25d1-472d-9da1-76f68b01a932)
2022-08-25 17:27:34 +02:00
Stéphan Sainléger
56f757505b [ADD] create `project_timesheet_funding_wish` add-on
Add timesheet line fields:
- ``funding_wish`` to inform about if the user expects a payment
for the registered time.
- ``treated`` to keep track if the timesheet line funding wish has
been taken into account.

Task: JOI-13
Signed-off-by: Valentin Lab <valentin.lab@kalysto.org>
2022-08-25 17:27:34 +02:00
Nicolas JEUDY
1f8baa73d1 [ADD] create project_funders to track funds on tasks
Signed-off-by: Valentin Lab <valentin.lab@kalysto.org>
2022-08-25 17:27:34 +02:00
Valentin Lab
c4ef88d3d4 [ADD] add `project_assignees` add-on
Add a field in ``project.task`` to assign users to task. This
completes ``user_id`` field, that is then considered as the owner of
the task. Assignment becomes optional and can now target multiple
users.

Task: JOI-13
Signed-off-by: Valentin Lab <valentin.lab@kalysto.org>
2022-08-25 17:27:34 +02:00
66 changed files with 1660 additions and 11 deletions

2
.gitignore vendored Normal file
View File

@@ -0,0 +1,2 @@
*.*~
*.pyc

View File

@@ -0,0 +1,45 @@
=================
project_assignees
=================
Add multiple assignees field to project task
Installation
============
Use Odoo normal procedure to install add-ons to install
``project_assignees``.
Known issues / Roadmap
======================
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
=======
Images
------
* Elabore: `Icon <https://elabore.coop/web/image/res.company/1/logo?unique=f3db262>`_.
Contributors
------------
* Stéphan Sainléger <https://github.com/stephansainleger>
Funders
-------
The development of this module has been financially supported by:
* Elabore (https://elabore.coop)
Maintainer
----------
This module is maintained by Elabore.

View File

@@ -0,0 +1,3 @@
# -*- coding: utf-8 -*-
from . import models

View File

@@ -0,0 +1,93 @@
# Copyright 2022 Stéphan Sainléger (Elabore)
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl).
{
"name": "project_assignees",
"version": "14.0.1.0.0",
"author": "Elabore",
"website": "https://github.com/elabore-coop/project-tools",
"maintainer": "Stéphan Sainléger",
"license": "AGPL-3",
"category": "Tools",
"summary": "Add multiple assignees field to project task",
"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_assignees
=================
Add multiple assignees field to project task.
Installation
============
Install ``project_assignees``, all dependencies will be installed by default.
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
=======
Images
------
* Elabore: `Icon <https://elabore.coop/web/image/res.company/1/logo?unique=f3db262>`_.
Contributors
------------
* Stéphan Sainléger <https://github.com/stephansainleger>
* Valentin Lab <valentin.lab@kalysto.org>
Funders
-------
The development of this module has been financially supported by:
* Elabore (https://elabore.coop)
Maintainer
----------
This module is maintained by Elabore.
""",
# any module necessary for this one to work correctly
"depends": [
"base",
"project",
],
"qweb": [
# "static/src/xml/*.xml",
],
"external_dependencies": {
"python": [],
},
# always loaded
"data": [
"views/project_task.xml",
"views/portal_template.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,
}

View File

@@ -0,0 +1 @@
This directory should contain the *.po for Odoo translation.

View File

@@ -0,0 +1,32 @@
# Translation of Odoo Server.
# This file contains the translation of the following modules:
# * project_assignees
#
msgid ""
msgstr ""
"Project-Id-Version: Odoo Server 14.0\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2022-07-26 07:38+0000\n"
"PO-Revision-Date: 2022-07-26 07:38+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_assignees
#: model_terms:ir.ui.view,arch_db:project_assignees.portal_my_task_timebox
msgid "<strong>Other assignements</strong>"
msgstr "<strong>Autres intervenants</strong>"
#. module: project_assignees
#: model:ir.model.fields,field_description:project_assignees.field_project_task__assignee_ids |
msgid "Assignees" |
msgstr "Autres assignations"
#. module: project_assignees
#: model:ir.model,name:project_assignees.model_project_task
msgid "Task"
msgstr "Tâche"

View File

@@ -0,0 +1,2 @@
from . import project_task

View File

@@ -0,0 +1,9 @@
from odoo import models, fields
class Task(models.Model):
_inherit = "project.task"
assignee_ids = fields.Many2many('res.users', 'assignee_ids_rel', string='Assignees')

View File

@@ -0,0 +1,25 @@
<?xml version="1.0" encoding="utf-8"?>
<odoo>
<template id="portal_my_task_assignees" name="My Task: Assignees" inherit_id="project.portal_my_task" priority="40">
<xpath expr="//div[hasclass('flex-grow-0')]/../../.." position="inside">
<div class="col-12 col-md-6 pb-2" t-if="task.assignee_ids">
<strong>Other assignees</strong>
<div class="row">
<t t-foreach="task.assignee_ids" t-as="assignee">
<div class="col flex-grow-0 pr-3">
<img t-if="assignee.image" class="rounded-circle mt-1 o_portal_contact_img" t-att-src="image_data_uri(assignee.image)" alt="Contact" />
<img t-else="" class="rounded-circle mt-1 o_portal_contact_img" src="/web/static/src/img/user_menu_avatar.png" alt="Contact" />
</div>
<div class="col pl-md-0">
<strong>
<span t-field="assignee.name" />
</strong>
<span t-field="assignee.email" />
<span t-field="assignee.phone" />
</div>
</t>
</div>
</div>
</xpath>
</template>
</odoo>

View File

@@ -0,0 +1,26 @@
<?xml version="1.0" encoding="UTF-8"?>
<odoo>
<record id="view_task_form2_assignees" model="ir.ui.view">
<field name="name">project.task.form.assignees</field>
<field name="model">project.task</field>
<field name="inherit_id" ref="project.view_task_form2" />
<field name="priority" eval="99" />
<field name="arch" type="xml">
<xpath expr="//field[@name='user_id']" position="after">
<field name="assignee_ids" widget="many2many_tags" />
</xpath>
</field>
</record>
<record id="view_task_search_form_assignees" model="ir.ui.view">
<field name="name">project.task.search.form.assignees</field>
<field name="model">project.task</field>
<field name="inherit_id" ref="project.view_task_search_form" />
<field name="priority" eval="99" />
<field name="arch" type="xml">
<filter name="my_tasks" position="attributes">
<attribute name="domain">['|', ('user_id', '=', uid), ('assignee_ids', 'in', uid)]</attribute>
</filter>
</field>
</record>
</odoo>

View File

@@ -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.

View File

@@ -0,0 +1 @@
from . import models

View File

@@ -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.1.0.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,
}

View File

@@ -0,0 +1 @@
This directory should contain the *.po for Odoo translation.

105
project_funders/i18n/fr.po Normal file
View File

@@ -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&nbsp;:"
#. 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"

View File

@@ -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 ""

View File

@@ -0,0 +1,2 @@
from . import project_funders
from . import project_task

View File

@@ -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)

View File

@@ -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"))

View File

@@ -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
1 id name model_id/id group_id/id perm_read perm_write perm_create perm_unlink
2 access_project_funder_all project.funder.all model_project_funder 1 1 1 1

View File

@@ -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>

2
project_name_from_quote/.gitignore vendored Normal file
View File

@@ -0,0 +1,2 @@
*.*~
*pyc

View File

@@ -0,0 +1,57 @@
=======================
project_name_from_quote
=======================
.. |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/elabore-coop/project-tools
:alt: elabore/hr-tools
|badge1| |badge2| |badge3|
This module tranfers the Quote / Sale order title to the project name.
Installation
============
Use Odoo normal module installation procedure to install ``project_name_from_quote``.
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
------------
* Stéphan Sainléger
Funders
-------
The development of this module has been financially supported by:
* Elabore (https://elabore.coop)
* Datactivist (https://datactivist.coop)
Maintainer
----------
This module is maintained by Elabore.

View File

@@ -0,0 +1,3 @@
# -*- coding: utf-8 -*-
from . import models

View File

@@ -0,0 +1,36 @@
# Copyright 2022 Stéphan Sainléger (Elabore)
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl).
{
"name": "project_name_from_quote",
"version": "14.0.1.0.0",
"author": "Elabore",
"website": "https://elabore.coop",
"maintainer": "Stéphan Sainléger",
"license": "AGPL-3",
"category": "Tools",
"summary": "Use quote name as project name",
# any module necessary for this one to work correctly
"depends": [
"base",
"sale_project",
"account_quotation_sale_order_invoice_title",
],
"qweb": [
# "static/src/xml/*.xml",
],
"external_dependencies": {
"python": [],
},
# always loaded
"data": [],
# 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,
}

View File

@@ -0,0 +1 @@
from . import sale_order

View File

@@ -0,0 +1,11 @@
from typing import ValuesView
from odoo import models
class SaleOrderLine(models.Model):
_inherit = "sale.order.line"
def _timesheet_create_project_prepare_values(self):
values = super(SaleOrderLine, self)._timesheet_create_project_prepare_values()
values["name"] = self.order_id.so_title
return values

View File

@@ -0,0 +1,45 @@
====================
project_request_data
====================
Add several fields in tasks, that provide several data on the request
Installation
============
Use Odoo normal module installation procedure to install ``project_request_data``.
- To configure the services, go to Project > Configuration > Task Services
- To configure the request types, go to Project > Configuration > Request Types
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
------------
* Stéphan Sainléger (https://github.com/stephansainleger)
Funders
-------
The development of this module has been financially supported by:
* Elabore (https://elabore.coop)
Maintainer
----------
This module is maintained by Elabore.

View File

@@ -0,0 +1 @@
from . import models

View File

@@ -0,0 +1,92 @@
# Copyright 2022 Stéphan Sainléger (Elabore)
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl).
{
"name": "project_request_data",
"version": "14.0.1.0.0",
"author": "Elabore",
"website": "https://elabore.coop",
"maintainer": "Stéphan Sainléger",
"license": "AGPL-3",
"category": "Project",
"summary": "Add several fields in tasks, that provide several data on the request",
"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_request_data
====================
Add several fields in tasks, that provide several data on the request
Installation
============
Use Odoo normal module installation procedure to install ``project_request_data``.
- To configure the services, go to Project > Configuration > Task Services
- To configure the request types, go to Project > Configuration > Request Types
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
------------
* Stéphan Sainléger (https://github.com/stephansainleger)
Funders
-------
The development of this module has been financially supported by:
* Elabore (https://elabore.coop)
Maintainer
----------
This module is maintained by 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.xml",
"views/request_type.xml",
"views/task_service.xml",
"views/portal_template.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,
}

View File

@@ -0,0 +1 @@
This directory should contain the *.po for Odoo translation.

View File

@@ -0,0 +1,116 @@
# Translation of Odoo Server.
# This file contains the translation of the following modules:
# * project_request_data
#
msgid ""
msgstr ""
"Project-Id-Version: Odoo Server 14.0\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2022-08-26 12:51+0000\n"
"PO-Revision-Date: 2022-08-26 12:51+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_request_data
#: model_terms:ir.ui.view,arch_db:project_request_data.portal_my_task_request_data
msgid "<strong>Request type:</strong>"
msgstr "<strong>Type de demande :</strong>"
#. module: project_request_data
#: model_terms:ir.ui.view,arch_db:project_request_data.portal_my_task_request_data
msgid "<strong>Service:</strong>"
msgstr "<strong>Service :</strong>"
#. module: project_request_data
#: model:ir.model.fields,field_description:project_request_data.field_request_type__create_uid
#: model:ir.model.fields,field_description:project_request_data.field_task_service__create_uid
msgid "Created by"
msgstr "Créé par"
#. module: project_request_data
#: model:ir.model.fields,field_description:project_request_data.field_request_type__create_date
#: model:ir.model.fields,field_description:project_request_data.field_task_service__create_date
msgid "Created on"
msgstr "Créé le"
#. module: project_request_data
#: model:ir.model.fields,field_description:project_request_data.field_request_type__display_name
#: model:ir.model.fields,field_description:project_request_data.field_task_service__display_name
msgid "Display Name"
msgstr "Nom affiché"
#. module: project_request_data
#: model:ir.model.fields,field_description:project_request_data.field_request_type__id
#: model:ir.model.fields,field_description:project_request_data.field_task_service__id
msgid "ID"
msgstr ""
#. module: project_request_data
#: model:ir.model.fields,field_description:project_request_data.field_request_type____last_update
#: model:ir.model.fields,field_description:project_request_data.field_task_service____last_update
msgid "Last Modified on"
msgstr "Dernière modification le"
#. module: project_request_data
#: model:ir.model.fields,field_description:project_request_data.field_request_type__write_uid
#: model:ir.model.fields,field_description:project_request_data.field_task_service__write_uid
msgid "Last Updated by"
msgstr "Dernière mise à jour par"
#. module: project_request_data
#: model:ir.model.fields,field_description:project_request_data.field_request_type__write_date
#: model:ir.model.fields,field_description:project_request_data.field_task_service__write_date
msgid "Last Updated on"
msgstr "Dernière mise à jour le"
#. module: project_request_data
#: model:ir.model,name:project_request_data.model_request_type
#: model:ir.model.fields,field_description:project_request_data.field_project_task__request_type_id
msgid "Request Type"
msgstr "Type de demande"
#. module: project_request_data
#: model:ir.actions.act_window,name:project_request_data.act_request_types_list
#: model:ir.ui.menu,name:project_request_data.menu_request_types
#: model_terms:ir.ui.view,arch_db:project_request_data.request_type_view_tree
msgid "Request Types"
msgstr "Types de demande"
#. module: project_request_data
#: model:ir.model.fields,field_description:project_request_data.field_request_type__sequence
#: model:ir.model.fields,field_description:project_request_data.field_task_service__sequence
msgid "Sequence"
msgstr "Séquence"
#. module: project_request_data
#: model:ir.model.fields,field_description:project_request_data.field_project_task__service_id
msgid "Service"
msgstr "Service"
#. module: project_request_data
#: model:ir.model,name:project_request_data.model_project_task
msgid "Task"
msgstr "Tâche"
#. module: project_request_data
#: model:ir.actions.act_window,name:project_request_data.act_task_services_list
#: model:ir.ui.menu,name:project_request_data.menu_task_services
#: model_terms:ir.ui.view,arch_db:project_request_data.task_service_view_tree
msgid "Task Services"
msgstr "Services"
#. module: project_request_data
#: model:ir.model,name:project_request_data.model_task_service
msgid "Task service"
msgstr "Service"
#. module: project_request_data
#: model:ir.model.fields,field_description:project_request_data.field_request_type__name
#: model:ir.model.fields,field_description:project_request_data.field_task_service__name
msgid "name"
msgstr "nom"

View File

@@ -0,0 +1,3 @@
from . import task_service
from . import request_type
from . import project_task

View File

@@ -0,0 +1,9 @@
from odoo import models, fields
class Task(models.Model):
_inherit = "project.task"
service_id = fields.Many2one('task.service', string='Service')
request_type_id = fields.Many2one('request.type', string='Request Type')

View File

@@ -0,0 +1,9 @@
from odoo import models, fields
class RequestType(models.Model):
_name = "request.type"
_description = "Request Type"
name = fields.Char('name', required=True)
sequence = fields.Integer()

View File

@@ -0,0 +1,9 @@
from odoo import models, fields
class TaskService(models.Model):
_name = "task.service"
_description = "Task service"
name = fields.Char('name', required=True)
sequence = fields.Integer()

View File

@@ -0,0 +1,5 @@
id,name,model_id/id,group_id/id,perm_read,perm_write,perm_create,perm_unlink
access_task_service_user,project.task_service.user,model_task_service,,1,0,0,0
access_task_service_manager,project.task_service.manager,model_task_service,project.group_project_manager,1,1,1,1
access_request_type_user,project.request_type.user,model_request_type,,1,0,0,0
access_request_type_manager,project.request_type.manager,model_request_type,project.group_project_manager,1,1,1,1
1 id name model_id/id group_id/id perm_read perm_write perm_create perm_unlink
2 access_task_service_user project.task_service.user model_task_service 1 0 0 0
3 access_task_service_manager project.task_service.manager model_task_service project.group_project_manager 1 1 1 1
4 access_request_type_user project.request_type.user model_request_type 1 0 0 0
5 access_request_type_manager project.request_type.manager model_request_type project.group_project_manager 1 1 1 1

View File

@@ -0,0 +1,17 @@
<?xml version="1.0" encoding="utf-8"?>
<odoo>
<template id="portal_my_task_request_data" name="My Task: Request Data" inherit_id="project.portal_my_task" priority="40">
<xpath expr="//t[@t-set='card_body']/div[hasclass('row','mb-4')]" position="after">
<div id="request_data" class="row mb-4">
<div class="col-12 col-md-6" t-if="task.service_id">
<strong>Service:</strong>
<span t-field="task.service_id" />
</div>
<div class="col-12 col-md-6" t-if="task.request_type_id">
<strong>Request type:</strong>
<span t-field="task.request_type_id" />
</div>
</div>
</xpath>
</template>
</odoo>

View File

@@ -0,0 +1,15 @@
<?xml version="1.0" encoding="UTF-8"?>
<odoo>
<record id="view_task_form2_request_data" model="ir.ui.view">
<field name="name">project.task.form.request.data</field>
<field name="model">project.task</field>
<field name="inherit_id" ref="project.view_task_form2" />
<field name="priority" eval="99" />
<field name="arch" type="xml">
<xpath expr="//field[@name='tag_ids']" position="before">
<field name="service_id" widget="selection" />
<field name="request_type_id" widget="selection" />
</xpath>
</field>
</record>
</odoo>

View File

@@ -0,0 +1,23 @@
<?xml version="1.0" encoding="utf-8"?>
<odoo>
<record id="request_type_view_tree" model="ir.ui.view">
<field name="name">request.type.view.tree</field>
<field name="model">request.type</field>
<field name="arch" type="xml">
<tree string="Request Types" editable="top" default_order="sequence">
<field name="sequence" widget="handle" />
<field name="name" />
</tree>
</field>
</record>
<record id="act_request_types_list" model="ir.actions.act_window">
<field name="name">Request Types</field>
<field name="res_model">request.type</field>
<field name="view_mode">tree</field>
</record>
<menuitem id="menu_request_types" action="act_request_types_list" parent="project.menu_project_config" sequence="99" name="Request Types" />
</odoo>

View File

@@ -0,0 +1,23 @@
<?xml version="1.0" encoding="utf-8"?>
<odoo>
<record id="task_service_view_tree" model="ir.ui.view">
<field name="name">task.service.view.tree</field>
<field name="model">task.service</field>
<field name="arch" type="xml">
<tree string="Task Services" editable="top" default_order="sequence">
<field name="sequence" widget="handle" />
<field name="name" />
</tree>
</field>
</record>
<record id="act_task_services_list" model="ir.actions.act_window">
<field name="name">Task Services</field>
<field name="res_model">task.service</field>
<field name="view_mode">tree</field>
</record>
<menuitem id="menu_task_services" action="act_task_services_list" parent="project.menu_project_config" sequence="99" name="Task Services" />
</odoo>

View File

@@ -0,0 +1,47 @@
===============
project_timebox
===============
Add timebox field in tasks to estimate resolution effort.
Installation
============
Use Odoo normal module installation procedure to install ``project_timebox``.
To configure the timeboxes, go to Project > Configuration > Timeboxes
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
------------
* Stéphan Sainléger (https://github.com/stephansainleger)
* Nicolas Jeudy (https://github.com/njeudy)
Funders
-------
The development of this module has been financially supported by:
* Elabore (https://elabore.coop)
* Mycéliandre (https://myceliandre.fr)
* Lokavaluto (https://lokavaluto.fr)
Maintainer
----------
This module is maintained by Elabore.

View File

@@ -0,0 +1 @@
from . import models

View File

@@ -0,0 +1,93 @@
# Copyright 2022 Stéphan Sainléger (Elabore)
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl).
{
"name": "project_timebox",
"version": "14.0.1.0.0",
"author": "Elabore",
"website": "https://elabore.coop",
"maintainer": "Stéphan Sainléger",
"license": "AGPL-3",
"category": "Project",
"summary": "Add timebox field in tasks to estimate resolution effort.",
"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_timebox
===============
Add timebox field in tasks to estimate resolution effort.
Installation
============
Use Odoo normal module installation procedure to install ``project_timebox``.
To configure the timeboxes, go to Project > Configuration > Timeboxes
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
------------
* Stéphan Sainléger (https://github.com/stephansainleger)
* Nicolas Jeudy (https://github.com/njeudy)
Funders
-------
The development of this module has been financially supported by:
* Elabore (https://elabore.coop)
* Mycéliandre (https://myceliandre.fr)
* Lokavaluto (https://lokavaluto.fr)
Maintainer
----------
This module is maintained by 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.xml",
"views/timebox.xml",
"views/portal_template.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,
}

View File

@@ -0,0 +1 @@
This directory should contain the *.po for Odoo translation.

View File

@@ -0,0 +1,91 @@
# Translation of Odoo Server.
# This file contains the translation of the following modules:
# * project_timebox
#
msgid ""
msgstr ""
"Project-Id-Version: Odoo Server 14.0\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2022-08-01 09:34+0000\n"
"PO-Revision-Date: 2022-08-01 09:34+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_timebox
#: model:ir.model.fields,field_description:project_timebox.field_timebox__create_uid
msgid "Created by"
msgstr "Créé par"
#. module: project_timebox
#: model:ir.model.fields,field_description:project_timebox.field_timebox__create_date
msgid "Created on"
msgstr "Créé le"
#. module: project_timebox
#: model:ir.model.fields,field_description:project_timebox.field_project_task__display_name
#: model:ir.model.fields,field_description:project_timebox.field_timebox__display_name
msgid "Display Name"
msgstr "Nom affiché"
#. module: project_timebox
#: model:ir.model.fields,field_description:project_timebox.field_project_task__id
#: model:ir.model.fields,field_description:project_timebox.field_timebox__id
msgid "ID"
msgstr ""
#. module: project_timebox
#: model:ir.model.fields,field_description:project_timebox.field_project_task____last_update
#: model:ir.model.fields,field_description:project_timebox.field_timebox____last_update
msgid "Last Modified on"
msgstr "Dernière modification le"
#. module: project_timebox
#: model:ir.model.fields,field_description:project_timebox.field_timebox__write_uid
msgid "Last Updated by"
msgstr "Dernière mise à jour par"
#. module: project_timebox
#: model:ir.model.fields,field_description:project_timebox.field_timebox__write_date
msgid "Last Updated on"
msgstr "Dernière mise à jour le"
#. module: project_timebox
#: model:ir.model.fields,field_description:project_timebox.field_timebox__sequence
msgid "Sequence"
msgstr "Séquence"
#. module: project_timebox
#: model:ir.model,name:project_timebox.model_project_task
msgid "Task"
msgstr "Tâche"
#. module: project_timebox
#: model:ir.model,name:project_timebox.model_timebox
msgid "Timebox"
msgstr "Estimation"
#. module: project_timebox
#: model:ir.model.fields,field_description:project_timebox.field_project_task__timebox_max_id
msgid "Timebox Max"
msgstr "Estimation haute"
#. module: project_timebox
#: model:ir.model.fields,field_description:project_timebox.field_project_task__timebox_min_id
msgid "Timebox Min"
msgstr "Estimation basse"
#. module: project_timebox
#: model:ir.actions.act_window,name:project_timebox.act_timeboxes_list
#: model:ir.ui.menu,name:project_timebox.menu_timeboxes
#: model_terms:ir.ui.view,arch_db:project_timebox.timebox_view_tree
msgid "Timeboxes"
msgstr "Estimations"
#. module: project_timebox
#: model:ir.model.fields,field_description:project_timebox.field_timebox__name
msgid "name"
msgstr "nom"

View File

@@ -0,0 +1,2 @@
from . import timebox
from . import project_task

View File

@@ -0,0 +1,9 @@
from odoo import models, fields
class Task(models.Model):
_inherit = "project.task"
timebox_min_id = fields.Many2one('timebox', string='Timebox Min')
timebox_max_id = fields.Many2one('timebox', string='Timebox Max')

View File

@@ -0,0 +1,9 @@
from odoo import models, fields
class Task(models.Model):
_name = "timebox"
_description = "Timebox"
name = fields.Char('name', required=True)
sequence = fields.Integer()

View File

@@ -0,0 +1,3 @@
id,name,model_id/id,group_id/id,perm_read,perm_write,perm_create,perm_unlink
access_timebox_user,project.timebox.user,model_timebox,,1,0,0,0
access_timebox_manager,project.timebox.manager,model_timebox,project.group_project_manager,1,1,1,1
1 id name model_id/id group_id/id perm_read perm_write perm_create perm_unlink
2 access_timebox_user project.timebox.user model_timebox 1 0 0 0
3 access_timebox_manager project.timebox.manager model_timebox project.group_project_manager 1 1 1 1

View File

@@ -0,0 +1,17 @@
<?xml version="1.0" encoding="utf-8"?>
<odoo>
<template id="portal_my_task_timebox" name="My Task: Timebox" inherit_id="project.portal_my_task" priority="40">
<xpath expr="//t[@t-set='card_body']/div[hasclass('row','mb-4')]" position="before">
<div id="timebox" class="row mb-2">
<div class="col-12 col-md-6" t-if="task.timebox_min_id">
<strong>Timebox Min:</strong>
<span t-field="task.timebox_min_id" />
</div>
<div class="col-12 col-md-6" t-if="task.timebox_max_id">
<strong>Timebox Max:</strong>
<span t-field="task.timebox_max_id" />
</div>
</div>
</xpath>
</template>
</odoo>

View File

@@ -0,0 +1,15 @@
<?xml version="1.0" encoding="UTF-8"?>
<odoo>
<record id="view_task_form2_timebox" model="ir.ui.view">
<field name="name">project.task.form.timebox</field>
<field name="model">project.task</field>
<field name="inherit_id" ref="project.view_task_form2" />
<field name="priority" eval="99" />
<field name="arch" type="xml">
<xpath expr="//field[@name='date_deadline']" position="after">
<field name="timebox_min_id" widget="selection" />
<field name="timebox_max_id" widget="selection" />
</xpath>
</field>
</record>
</odoo>

View File

@@ -0,0 +1,23 @@
<?xml version="1.0" encoding="utf-8"?>
<odoo>
<record id="timebox_view_tree" model="ir.ui.view">
<field name="name">timebox.view.tree</field>
<field name="model">timebox</field>
<field name="arch" type="xml">
<tree string="Timeboxes" editable="top" default_order="sequence">
<field name="sequence" widget="handle" />
<field name="name" />
</tree>
</field>
</record>
<record id="act_timeboxes_list" model="ir.actions.act_window">
<field name="name">Timeboxes</field>
<field name="res_model">timebox</field>
<field name="view_mode">tree</field>
</record>
<menuitem id="menu_timeboxes" action="act_timeboxes_list" parent="project.menu_project_config" sequence="99" name="Timeboxes" />
</odoo>

View File

@@ -1,3 +1 @@
# -*- coding: utf-8 -*-
from . import models

View File

@@ -1,3 +1 @@
# -*- coding: utf-8 -*-
from . import hr_timesheet

View File

@@ -1,11 +1,16 @@
# -*- coding: utf-8 -*-
from odoo import _, fields, models
class AccountAnalyticLine(models.Model):
_inherit = 'account.analytic.line'
funding_wish = fields.Selection([("free", "Free"),("accepted", "Payment accepted"),("expected", "Payment expected")], string=_("Funding wish"), copy=False)
class AccountAnalyticLine(models.Model):
_inherit = "account.analytic.line"
funding_wish = fields.Selection(
[
("free", "Free"),
("accepted", "Payment accepted"),
("expected", "Payment expected"),
],
string=_("Funding wish"),
copy=False,
)
treated = fields.Boolean(string=_("Treated"), copy=False)

View File

@@ -11,4 +11,17 @@
</xpath>
</field>
</record>
<record id="view_task_form2_inherited_funding" model="ir.ui.view">
<field name="name">view.task.form2.inherited.funding</field>
<field name="model">project.task</field>
<field name="inherit_id" ref="hr_timesheet.view_task_form2_inherited" />
<field name="arch" type="xml">
<xpath expr="//field[@name='timesheet_ids']/tree/field[@name='date']" position="after">
<field name="treated" />
<field name="funding_wish" />
</xpath>
</field>
</record>
</odoo>

View File

@@ -0,0 +1,2 @@
*.*~
*pyc

View File

@@ -0,0 +1,44 @@
============================
project_user_default_project
============================
Add default project field in user model
Installation
============
Use Odoo normal module installation procedure to install
``project_user_default_project``.
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
------------
* Stéphan Sainléger
Funders
-------
The development of this module has been financially supported by:
* Elabore (https://elabore.coop)
Maintainer
----------
This module is maintained by Elabore.

View File

@@ -0,0 +1,3 @@
# -*- coding: utf-8 -*-
from . import models

View File

@@ -0,0 +1,86 @@
# Copyright 2022 Stéphan Sainléger (Elabore)
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl).
{
"name": "project_user_default_project",
"version": "14.0.1.0.0",
"author": "Elabore",
"website": "https://elabore.coop",
"maintainer": "Stéphan Sainléger",
"license": "AGPL-3",
"category": "Tools",
"summary": "Add default project field in user model",
"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_user_default_project
============================
Add default project field in user model
Installation
============
Use Odoo normal module installation procedure to install
``project_user_default_project``.
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
------------
* Stéphan Sainléger
Funders
-------
The development of this module has been financially supported by:
* Elabore (https://elabore.coop)
Maintainer
----------
This module is maintained by Elabore.
""",
# any module necessary for this one to work correctly
"depends": [
"base", "project",
],
"qweb": [
# "static/src/xml/*.xml",
],
"external_dependencies": {
"python": [],
},
# always loaded
"data": [
"views/res_users_views.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,
}

View File

@@ -0,0 +1 @@
This directory should contain the *.po for Odoo translation.

View File

@@ -0,0 +1,27 @@
# Translation of Odoo Server.
# This file contains the translation of the following modules:
# * project_user_default_project
#
msgid ""
msgstr ""
"Project-Id-Version: Odoo Server 14.0\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2022-08-25 15:58+0000\n"
"PO-Revision-Date: 2022-08-25 15:58+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_user_default_project
#: model:ir.model.fields,field_description:project_user_default_project.field_res_users__default_project_id
msgid "Default Project"
msgstr "Projet par défaut"
#. module: project_user_default_project
#: model:ir.model,name:project_user_default_project.model_res_users
msgid "Users"
msgstr "Utilisateurs"

View File

@@ -0,0 +1 @@
from . import res_users

View File

@@ -0,0 +1,6 @@
from odoo import _, api, fields, models
class Users(models.Model):
_inherit = "res.users"
default_project_id = fields.Many2one('project.project', string='Default Project')

View File

@@ -0,0 +1,13 @@
<?xml version="1.0" encoding="UTF-8"?>
<odoo>
<record id="view_users_form_inherit_default_project" model="ir.ui.view">
<field name="name">view.users.form.inherit.default.project</field>
<field name="model">res.users</field>
<field name="inherit_id" ref="base.view_users_form" />
<field name="arch" type="xml">
<xpath expr="//field[@name='action_id']" position="after">
<field name="default_project_id" />
</xpath>
</field>
</record>
</odoo>