diff --git a/project_wbs/README.rst b/project_wbs/README.rst new file mode 100644 index 0000000000..153af8dc11 --- /dev/null +++ b/project_wbs/README.rst @@ -0,0 +1,144 @@ +================================ +Project Work Breakdown Structure +================================ + +.. + !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + !! This file is generated by oca-gen-addon-readme !! + !! changes will be overwritten. !! + !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + !! source digest: sha256:14f0ce256362caa08dd8efeff3be656c73573f0fb26f9e5a082ef6113a8131b0 + !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + +.. |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%2Fproject-lightgray.png?logo=github + :target: https://github.com/OCA/project/tree/18.0/project_wbs + :alt: OCA/project +.. |badge4| image:: https://img.shields.io/badge/weblate-Translate%20me-F47D42.png + :target: https://translation.odoo-community.org/projects/project-18-0/project-18-0-project_wbs + :alt: Translate me on Weblate +.. |badge5| image:: https://img.shields.io/badge/runboat-Try%20me-875A7B.png + :target: https://runboat.odoo-community.org/builds?repo=OCA/project&target_branch=18.0 + :alt: Try me on Runboat + +|badge1| |badge2| |badge3| |badge4| |badge5| + +Adding WBS information to Odoo Projects + +- The hierarchy of a project is considered the WBS (Work Breakdown + Structure) +- The analytic accounts in the project hierarchies are considered WBS + components +- The analytic account code is shown in the project +- The complete WBS path code is shown in the analytic account and in the + project +- The complete WBS path name is shown in the analytic account and in the + project +- The WBS paths are concatenated with each other +- Project Manager is propagated to the hierarchy, the Manager is Manager + for the WBS element only + +Searching and Browsing WBS + +- It is possible to search projects by complete WBS path code & name +- It is possible to search tasks by project complete WBS path code & + name +- The WBS components can be classified as project, phase, deliverable, + work package. +- The classification is shown in the project and analytic account views +- A project stage attribute is incorporated in the analytic account and + displayed in the project and analytic account views. + +**Table of contents** + +.. contents:: + :local: + +Usage +===== + +Create a new child: + +1. Go to Project > WBS +2. Click on one existing project or create a new one +3. Click on the form view to open the project. +4. Go to Work Breakdown Structure to create a new child + +Navigation: + +- Level column indicates the child hierarchy: '>' means it is a child. + '>>' means it is a grandchild an so on. +- Click on the up arrow to see the parent project. +- Click on the down arrow to see children projects. + +Known issues / Roadmap +====================== + +- Actions for the different account class are implemented but menus for + those were not included. This is for inheritance purposes. +- RTL-friendliness in Project codes and names +- Do not show full names in children in Kanban View + +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 +------- + +* Matmoz d.o.o. +* Luxim d.o.o. +* Deneroteam +* ForgeFlow + +Contributors +------------ + +- Eficent +- Luxim d.o.o. +- Matmoz d.o.o. +- Deneroteam. +- SerpentCS + +[APSL-Nagarro](https://apsl.tech): + +- Lansana Barry Sow + +Maintainers +----------- + +This module is maintained by the OCA. + +.. image:: https://odoo-community.org/logo.png + :alt: Odoo Community Association + :target: https://odoo-community.org + +OCA, or the Odoo Community Association, is a nonprofit organization whose +mission is to support the collaborative development of Odoo features and +promote its widespread use. + +.. |maintainer-AaronHForgeFlow| image:: https://github.com/AaronHForgeFlow.png?size=40px + :target: https://github.com/AaronHForgeFlow + :alt: AaronHForgeFlow + +Current `maintainer `__: + +|maintainer-AaronHForgeFlow| + +This module is part of the `OCA/project `_ project on GitHub. + +You are welcome to contribute. To learn how please visit https://odoo-community.org/page/Contribute. diff --git a/project_wbs/__init__.py b/project_wbs/__init__.py new file mode 100644 index 0000000000..68b72dd032 --- /dev/null +++ b/project_wbs/__init__.py @@ -0,0 +1,4 @@ +# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl.html). + +from . import models +from .hooks import pre_init_hook diff --git a/project_wbs/__manifest__.py b/project_wbs/__manifest__.py new file mode 100644 index 0000000000..ba52b82af7 --- /dev/null +++ b/project_wbs/__manifest__.py @@ -0,0 +1,30 @@ +# Copyright 2017 ForgeFlow S.L. +# Copyright 2017 Luxim d.o.o. +# Copyright 2017 Matmoz d.o.o. +# Copyright 2017 Deneroteam. +# Copyright 2017 Serpent Consulting Services Pvt. Ltd. +# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl.html). +{ + "name": "Project Work Breakdown Structure", + "version": "18.0.1.0.0", + "license": "AGPL-3", + "author": "Matmoz d.o.o., " + "Luxim d.o.o., " + "Deneroteam, " + "ForgeFlow, " + "Odoo Community Association (OCA)", + "maintainers": ["AaronHForgeFlow"], + "website": "https://github.com/OCA/project", + "depends": [ + "account_analytic_parent", + "account_analytic_sequence", + "hr_timesheet", + ], + "summary": "Apply Work Breakdown Structure", + "data": [ + "view/account_analytic_account_view.xml", + "view/project_project_view.xml", + ], + "pre_init_hook": "pre_init_hook", + "installable": True, +} diff --git a/project_wbs/hooks.py b/project_wbs/hooks.py new file mode 100644 index 0000000000..0336ec2a09 --- /dev/null +++ b/project_wbs/hooks.py @@ -0,0 +1,37 @@ +import logging + +logger = logging.getLogger(__name__) + + +def pre_init_hook(env): + # avoid crashing installation because of having same complete_wbs_code + for aa in ( + env["account.analytic.account"] + .with_context(active_test=False) + .search([("code", "=", False)]) + ): + aa._write( + {"code": env["ir.sequence"].next_by_code("account.analytic.account.code")} + ) + logger.info("Assigning default code to existing analytic accounts") + + # analytic_account_id was removed from project.project in Odoo 17+. + # Only run this migration block if the column exists in the DB + # (i.e. when upgrading from an older Odoo version). + env.cr.execute( + """ + SELECT column_name FROM information_schema.columns + WHERE table_name = 'project_project' + AND column_name = 'analytic_account_id' + """ + ) + if env.cr.fetchone(): + projects = ( + env["project.project"] + .with_context(active_test=False) + .search([("analytic_account_id", "=", False)]) + ) + projects._create_analytic_account() + projects.filtered(lambda p: not p.active).mapped("analytic_account_id").write( + {"active": False} + ) diff --git a/project_wbs/i18n/de.po b/project_wbs/i18n/de.po new file mode 100644 index 0000000000..cf4175ec6d --- /dev/null +++ b/project_wbs/i18n/de.po @@ -0,0 +1,332 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * project_wbs +# +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 12.0\n" +"Report-Msgid-Bugs-To: \n" +"PO-Revision-Date: 2019-12-13 18:05+0000\n" +"Last-Translator: Maria Sparenberg \n" +"Language-Team: none\n" +"Language: de\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: \n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" +"X-Generator: Weblate 3.9.1\n" + +#. module: project_wbs +#: model_terms:ir.ui.view,arch_db:project_wbs.view_project_kanban +msgid "(Parent:" +msgstr "" + +#. module: project_wbs +#: model:ir.model,name:project_wbs.model_account_analytic_account +#: model:ir.model.fields,field_description:project_wbs.field_project_project__analytic_account_id +msgid "Analytic Account" +msgstr "Kostenstelle" + +#. module: project_wbs +#: model:ir.model.fields,help:project_wbs.field_project_project__analytic_account_id +msgid "" +"Analytic account to which this project is linked for financial management. " +"Use an analytic account to record cost and revenue on your project." +msgstr "" + +#. module: project_wbs +#: model_terms:ir.ui.view,arch_db:project_wbs.edit_project +msgid "Append this project to another one using analytic accounts hierarchy" +msgstr "" + +#. module: project_wbs +#: model:ir.model.fields,field_description:project_wbs.field_project_project__wbs_child_ids +msgid "Child Accounts" +msgstr "" + +#. module: project_wbs +#: model_terms:ir.ui.view,arch_db:project_wbs.edit_project +#: model_terms:ir.ui.view,arch_db:project_wbs.view_project +msgid "Child WBS elements" +msgstr "" + +#. module: project_wbs +#: model:ir.model.fields,field_description:project_wbs.field_account_analytic_account__account_class +#: model:ir.model.fields,field_description:project_wbs.field_project_project__account_class +#: model_terms:ir.ui.view,arch_db:project_wbs.edit_project +#: model_terms:ir.ui.view,arch_db:project_wbs.view_account_analytic_account_form +#: model_terms:ir.ui.view,arch_db:project_wbs.view_account_analytic_account_search +#: model_terms:ir.ui.view,arch_db:project_wbs.view_project +#: model_terms:ir.ui.view,arch_db:project_wbs.view_project_project_filter +#: model_terms:ir.ui.view,arch_db:project_wbs.view_project_project_group_filter +msgid "Class" +msgstr "" + +#. module: project_wbs +#: model_terms:ir.actions.act_window,help:project_wbs.open_view_project_wbs +msgid "Click to start a new project." +msgstr "" + +#. module: project_wbs +#: model_terms:ir.ui.view,arch_db:project_wbs.edit_project +#: model_terms:ir.ui.view,arch_db:project_wbs.view_project +msgid "Code" +msgstr "" + +#. module: project_wbs +#: model_terms:ir.ui.view,arch_db:project_wbs.edit_project +msgid "Create child WBS element" +msgstr "" + +#. module: project_wbs +#: model:ir.model.fields,field_description:project_wbs.field_account_analytic_account__partner_id +msgid "Customer" +msgstr "" + +#. module: project_wbs +#: model:ir.model.fields.selection,name:project_wbs.selection__account_analytic_account__account_class__deliverable +#: model_terms:ir.ui.view,arch_db:project_wbs.view_account_analytic_account_search2 +msgid "Deliverable" +msgstr "" + +#. module: project_wbs +#: model:ir.actions.act_window,name:project_wbs.open_view_project_deliverables +msgid "Deliverables" +msgstr "" + +#. module: project_wbs +#: code:addons/project_wbs/models/project_project.py:0 +#, python-format +msgid "Details" +msgstr "" + +#. module: project_wbs +#: code:addons/project_wbs/models/account_analytic_account.py:0 +#, python-format +msgid "Duplicate the project instead of the Analytic Account" +msgstr "" + +#. module: project_wbs +#: model:ir.actions.act_window,name:project_wbs.open_view_project_form +msgid "Edit project" +msgstr "" + +#. module: project_wbs +#: model:ir.model.fields,field_description:project_wbs.field_account_analytic_account__complete_wbs_code +msgid "Full WBS Code" +msgstr "" + +#. module: project_wbs +#: model:ir.model.fields,field_description:project_wbs.field_account_analytic_account__complete_wbs_name +#: model:ir.model.fields,field_description:project_wbs.field_project_project__complete_wbs_name +msgid "Full WBS path" +msgstr "" + +#. module: project_wbs +#: model:ir.model.fields,help:project_wbs.field_account_analytic_account__complete_wbs_name +#: model:ir.model.fields,help:project_wbs.field_project_project__complete_wbs_name +msgid "Full path in the WBS hierarchy" +msgstr "" + +#. module: project_wbs +#: model_terms:ir.ui.view,arch_db:project_wbs.view_project_kanban +msgid "Go Up" +msgstr "" + +#. module: project_wbs +#: model:ir.model.fields,field_description:project_wbs.field_project_project__has_project_child_complete_ids +msgid "Has Project Child Complete" +msgstr "" + +#. module: project_wbs +#: model:ir.model.fields,field_description:project_wbs.field_account_analytic_account__wbs_indent +#: model:ir.model.fields,field_description:project_wbs.field_project_project__wbs_indent +msgid "Level" +msgstr "" + +#. module: project_wbs +#: model:ir.model.fields,field_description:project_wbs.field_account_analytic_account__manager_id +msgid "Manager" +msgstr "" + +#. module: project_wbs +#: model_terms:ir.ui.view,arch_db:project_wbs.view_account_analytic_account_search2 +#: model_terms:ir.ui.view,arch_db:project_wbs.view_project_project_group_filter +msgid "Master Project" +msgstr "" + +#. module: project_wbs +#: model_terms:ir.ui.view,arch_db:project_wbs.view_project +msgid "Parent" +msgstr "" + +#. module: project_wbs +#: model:ir.model.fields,field_description:project_wbs.field_account_analytic_account__parent_id +#: model:ir.model.fields,field_description:project_wbs.field_project_project__wbs_parent_id +#: model_terms:ir.ui.view,arch_db:project_wbs.edit_project +msgid "Parent Analytic Account" +msgstr "" + +#. module: project_wbs +#: model_terms:ir.ui.view,arch_db:project_wbs.edit_project +#: model_terms:ir.ui.view,arch_db:project_wbs.view_project +msgid "Parent WBS element" +msgstr "" + +#. module: project_wbs +#: model:ir.model.fields.selection,name:project_wbs.selection__account_analytic_account__account_class__phase +msgid "Phase" +msgstr "" + +#. module: project_wbs +#: model:ir.actions.act_window,name:project_wbs.open_view_project_phases +msgid "Phases" +msgstr "" + +#. module: project_wbs +#: model:ir.model,name:project_wbs.model_project_project +#: model:ir.model.fields.selection,name:project_wbs.selection__account_analytic_account__account_class__project +#: model_terms:ir.ui.view,arch_db:project_wbs.view_account_analytic_account_search2 +msgid "Project" +msgstr "" + +#. module: project_wbs +#: model_terms:ir.ui.view,arch_db:project_wbs.edit_project +#: model_terms:ir.ui.view,arch_db:project_wbs.view_project +msgid "Project Form View" +msgstr "" + +#. module: project_wbs +#: model:ir.model.fields,field_description:project_wbs.field_project_project__project_child_complete_ids +msgid "Project Hierarchy" +msgstr "" + +#. module: project_wbs +#: model:ir.model.fields,field_description:project_wbs.field_account_analytic_account__user_id +msgid "Project Manager" +msgstr "" + +#. module: project_wbs +#: model:ir.actions.act_window,name:project_wbs.group_project +#: model:ir.model.fields,field_description:project_wbs.field_account_analytic_account__project_ids +msgid "Projects" +msgstr "" + +#. module: project_wbs +#: model_terms:ir.actions.act_window,help:project_wbs.open_view_project_wbs +msgid "" +"Projects are used to organize your activities; plan\n" +" tasks, track issues, invoice timesheets. You can define\n" +" internal projects (R&D, Improve Sales Process),\n" +" private projects (My Todos) or customer ones." +msgstr "" + +#. module: project_wbs +#: model:ir.model.fields,field_description:project_wbs.field_account_analytic_account__code +#: model:ir.model.fields,field_description:project_wbs.field_project_project__code +msgid "Reference" +msgstr "" + +#. module: project_wbs +#: model:ir.model.fields,field_description:project_wbs.field_account_analytic_account__project_analytic_id +#: model:ir.model.fields,field_description:project_wbs.field_project_project__project_analytic_id +msgid "Root Analytic Account" +msgstr "" + +#. module: project_wbs +#: model:ir.model.fields,help:project_wbs.field_account_analytic_account__account_class +#: model:ir.model.fields,help:project_wbs.field_project_project__account_class +msgid "" +"The classification allows you to create a proper project Work Breakdown " +"Structure" +msgstr "" + +#. module: project_wbs +#: model:ir.model.fields,help:project_wbs.field_account_analytic_account__complete_wbs_code +#: model:ir.model.fields,help:project_wbs.field_project_project__complete_wbs_code +msgid "" +"The full WBS code describes the full path of this component within the " +"project WBS hierarchy" +msgstr "" + +#. module: project_wbs +#: code:addons/project_wbs/models/account_analytic_account.py:0 +#: model:ir.model.constraint,message:project_wbs.constraint_account_analytic_account_analytic_unique_wbs_code +#, python-format +msgid "The full wbs code must be unique!" +msgstr "" + +#. module: project_wbs +#: code:addons/project_wbs/models/project_project.py:0 +#, python-format +msgid "Unknown Analytic Account" +msgstr "" + +#. module: project_wbs +#: model:ir.ui.menu,name:project_wbs.menu_project_wbs_project +msgid "WBS" +msgstr "" + +#. module: project_wbs +#: model:ir.model.fields,field_description:project_wbs.field_project_project__complete_wbs_code +msgid "WBS Code" +msgstr "" + +#. module: project_wbs +#: model_terms:ir.ui.view,arch_db:project_wbs.view_project_kanban +msgid "WBS Elements:" +msgstr "" + +#. module: project_wbs +#: model_terms:ir.ui.view,arch_db:project_wbs.edit_project +#: model_terms:ir.ui.view,arch_db:project_wbs.view_account_analytic_account_form +#: model_terms:ir.ui.view,arch_db:project_wbs.view_account_analytic_account_list +#: model_terms:ir.ui.view,arch_db:project_wbs.view_account_analytic_account_search +#: model_terms:ir.ui.view,arch_db:project_wbs.view_project_project_filter +msgid "WBS code" +msgstr "" + +#. module: project_wbs +#: model_terms:ir.ui.view,arch_db:project_wbs.edit_project +msgid "WBS element name" +msgstr "" + +#. module: project_wbs +#: model:ir.actions.act_window,name:project_wbs.create_wbs_element +#: model:ir.actions.act_window,name:project_wbs.open_view_project_wbs +#: model:ir.actions.act_window,name:project_wbs.open_view_wbs_kanban +msgid "WBS elements" +msgstr "" + +#. module: project_wbs +#: model_terms:ir.ui.view,arch_db:project_wbs.view_account_analytic_account_search +msgid "WBS name" +msgstr "" + +#. module: project_wbs +#: model:ir.actions.act_window,name:project_wbs.open_view_wbs_tree +msgid "WBS overview" +msgstr "" + +#. module: project_wbs +#: model_terms:ir.ui.view,arch_db:project_wbs.edit_project +msgid "Work Breakdown Structure" +msgstr "" + +#. module: project_wbs +#: model:ir.model.fields.selection,name:project_wbs.selection__account_analytic_account__account_class__work_package +#: model_terms:ir.ui.view,arch_db:project_wbs.view_account_analytic_account_search2 +msgid "Work Package" +msgstr "" + +#. module: project_wbs +#: model:ir.actions.act_window,name:project_wbs.open_view_project_work_packages +msgid "Work Packages" +msgstr "" + +#. module: project_wbs +#: model_terms:ir.actions.act_window,help:project_wbs.open_view_project_wbs +msgid "" +"You will be able collaborate with internal users on\n" +" projects or invite customers to share your activities." +msgstr "" diff --git a/project_wbs/i18n/es.po b/project_wbs/i18n/es.po new file mode 100644 index 0000000000..4bd3dd82bd --- /dev/null +++ b/project_wbs/i18n/es.po @@ -0,0 +1,356 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * project_wbs +# +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 15.0\n" +"Report-Msgid-Bugs-To: \n" +"PO-Revision-Date: 2023-10-09 07:43+0000\n" +"Last-Translator: Ivorra78 \n" +"Language-Team: none\n" +"Language: es\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: \n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" +"X-Generator: Weblate 4.17\n" + +#. module: project_wbs +#: model_terms:ir.ui.view,arch_db:project_wbs.view_project_kanban +msgid "(Parent:" +msgstr "(Parental:" + +#. module: project_wbs +#: model:ir.model,name:project_wbs.model_account_analytic_account +#: model:ir.model.fields,field_description:project_wbs.field_project_project__analytic_account_id +msgid "Analytic Account" +msgstr "Cuenta Analítica" + +#. module: project_wbs +#: model:ir.model.fields,help:project_wbs.field_project_project__analytic_account_id +msgid "" +"Analytic account to which this project is linked for financial management. " +"Use an analytic account to record cost and revenue on your project." +msgstr "" +"Cuenta analítica a la que está vinculada este proyecto para la gestión " +"financiera. Utilice una cuenta analítica para registrar los costes e " +"ingresos de su proyecto." + +#. module: project_wbs +#: model_terms:ir.ui.view,arch_db:project_wbs.edit_project +msgid "Append this project to another one using analytic accounts hierarchy" +msgstr "" +"Adjuntar este proyecto a otro utilizando la jerarquía de cuentas analíticas" + +#. module: project_wbs +#: model:ir.model.fields,field_description:project_wbs.field_project_project__wbs_child_ids +msgid "Child Accounts" +msgstr "Cuentas Hijas" + +#. module: project_wbs +#: model_terms:ir.ui.view,arch_db:project_wbs.edit_project +#: model_terms:ir.ui.view,arch_db:project_wbs.view_project +msgid "Child WBS elements" +msgstr "Elementos PEP secundarios" + +#. module: project_wbs +#: model:ir.model.fields,field_description:project_wbs.field_account_analytic_account__account_class +#: model:ir.model.fields,field_description:project_wbs.field_project_project__account_class +#: model_terms:ir.ui.view,arch_db:project_wbs.edit_project +#: model_terms:ir.ui.view,arch_db:project_wbs.view_account_analytic_account_form +#: model_terms:ir.ui.view,arch_db:project_wbs.view_account_analytic_account_search +#: model_terms:ir.ui.view,arch_db:project_wbs.view_project +#: model_terms:ir.ui.view,arch_db:project_wbs.view_project_project_filter +#: model_terms:ir.ui.view,arch_db:project_wbs.view_project_project_group_filter +msgid "Class" +msgstr "Clase" + +#. module: project_wbs +#: model_terms:ir.actions.act_window,help:project_wbs.open_view_project_wbs +msgid "Click to start a new project." +msgstr "Haga clic para empezar un nuevo proyecto." + +#. module: project_wbs +#: model_terms:ir.ui.view,arch_db:project_wbs.edit_project +#: model_terms:ir.ui.view,arch_db:project_wbs.view_project +msgid "Code" +msgstr "Código" + +#. module: project_wbs +#: model_terms:ir.ui.view,arch_db:project_wbs.edit_project +msgid "Create child WBS element" +msgstr "Crear elemento WBS hijo" + +#. module: project_wbs +#: model:ir.model.fields,field_description:project_wbs.field_account_analytic_account__partner_id +msgid "Customer" +msgstr "Cliente" + +#. module: project_wbs +#: model:ir.model.fields.selection,name:project_wbs.selection__account_analytic_account__account_class__deliverable +#: model_terms:ir.ui.view,arch_db:project_wbs.view_account_analytic_account_search2 +msgid "Deliverable" +msgstr "Entregable" + +#. module: project_wbs +#: model:ir.actions.act_window,name:project_wbs.open_view_project_deliverables +msgid "Deliverables" +msgstr "Entregables" + +#. module: project_wbs +#: code:addons/project_wbs/models/project_project.py:0 +#, python-format +msgid "Details" +msgstr "Detalles" + +#. module: project_wbs +#: code:addons/project_wbs/models/account_analytic_account.py:0 +#, python-format +msgid "Duplicate the project instead of the Analytic Account" +msgstr "Duplicar el proyecto en lugar de la cuenta analítica" + +#. module: project_wbs +#: model:ir.actions.act_window,name:project_wbs.open_view_project_form +msgid "Edit project" +msgstr "Editar proyecto" + +#. module: project_wbs +#: model:ir.model.fields,field_description:project_wbs.field_account_analytic_account__complete_wbs_code +msgid "Full WBS Code" +msgstr "Código WBS completo" + +#. module: project_wbs +#: model:ir.model.fields,field_description:project_wbs.field_account_analytic_account__complete_wbs_name +#: model:ir.model.fields,field_description:project_wbs.field_project_project__complete_wbs_name +msgid "Full WBS path" +msgstr "Trayectoria completa de la EDT" + +#. module: project_wbs +#: model:ir.model.fields,help:project_wbs.field_account_analytic_account__complete_wbs_name +#: model:ir.model.fields,help:project_wbs.field_project_project__complete_wbs_name +msgid "Full path in the WBS hierarchy" +msgstr "Ruta completa en la jerarquía EDT" + +#. module: project_wbs +#: model_terms:ir.ui.view,arch_db:project_wbs.view_project_kanban +msgid "Go Up" +msgstr "Subir" + +#. module: project_wbs +#: model:ir.model.fields,field_description:project_wbs.field_project_project__has_project_child_complete_ids +msgid "Has Project Child Complete" +msgstr "Ha finalizado el Proyecto Niño" + +#. module: project_wbs +#: model:ir.model.fields,field_description:project_wbs.field_account_analytic_account__wbs_indent +#: model:ir.model.fields,field_description:project_wbs.field_project_project__wbs_indent +msgid "Level" +msgstr "Nivel" + +#. module: project_wbs +#: model:ir.model.fields,field_description:project_wbs.field_account_analytic_account__manager_id +msgid "Manager" +msgstr "Gerente" + +#. module: project_wbs +#: model_terms:ir.ui.view,arch_db:project_wbs.view_account_analytic_account_search2 +#: model_terms:ir.ui.view,arch_db:project_wbs.view_project_project_group_filter +msgid "Master Project" +msgstr "Proyecto maestro" + +#. module: project_wbs +#: model_terms:ir.ui.view,arch_db:project_wbs.view_project +msgid "Parent" +msgstr "Parental" + +#. module: project_wbs +#: model:ir.model.fields,field_description:project_wbs.field_account_analytic_account__parent_id +#: model:ir.model.fields,field_description:project_wbs.field_project_project__wbs_parent_id +#: model_terms:ir.ui.view,arch_db:project_wbs.edit_project +msgid "Parent Analytic Account" +msgstr "Cuenta analítica parental" + +#. module: project_wbs +#: model_terms:ir.ui.view,arch_db:project_wbs.edit_project +#: model_terms:ir.ui.view,arch_db:project_wbs.view_project +msgid "Parent WBS element" +msgstr "Elemento PEP parental" + +#. module: project_wbs +#: model:ir.model.fields.selection,name:project_wbs.selection__account_analytic_account__account_class__phase +msgid "Phase" +msgstr "Etapa" + +#. module: project_wbs +#: model:ir.actions.act_window,name:project_wbs.open_view_project_phases +msgid "Phases" +msgstr "Etapas" + +#. module: project_wbs +#: model:ir.model,name:project_wbs.model_project_project +#: model:ir.model.fields.selection,name:project_wbs.selection__account_analytic_account__account_class__project +#: model_terms:ir.ui.view,arch_db:project_wbs.view_account_analytic_account_search2 +msgid "Project" +msgstr "Proyecto" + +#. module: project_wbs +#: model_terms:ir.ui.view,arch_db:project_wbs.edit_project +#: model_terms:ir.ui.view,arch_db:project_wbs.view_project +msgid "Project Form View" +msgstr "Vista del formulario del proyecto" + +#. module: project_wbs +#: model:ir.model.fields,field_description:project_wbs.field_project_project__project_child_complete_ids +msgid "Project Hierarchy" +msgstr "Jerarquía de proyecto" + +#. module: project_wbs +#: model:ir.model.fields,field_description:project_wbs.field_account_analytic_account__user_id +msgid "Project Manager" +msgstr "Director de proyecto" + +#. module: project_wbs +#: model:ir.actions.act_window,name:project_wbs.group_project +#: model:ir.model.fields,field_description:project_wbs.field_account_analytic_account__project_ids +msgid "Projects" +msgstr "Proyectos" + +#. module: project_wbs +#: model_terms:ir.actions.act_window,help:project_wbs.open_view_project_wbs +msgid "" +"Projects are used to organize your activities; plan\n" +" tasks, track issues, invoice timesheets. You can define\n" +" internal projects (R&D, Improve Sales Process),\n" +" private projects (My Todos) or customer ones." +msgstr "" +"Los proyectos se utilizan para organizar sus actividades\n" +" planificar tareas, hacer un seguimiento de los problemas y " +"facturar hojas de horas. Puede definir\n" +" proyectos internos (I+D, Mejorar el proceso de ventas),\n" +" proyectos privados (Mis Todos) o de clientes." + +#. module: project_wbs +#: model:ir.model.fields,field_description:project_wbs.field_account_analytic_account__code +#: model:ir.model.fields,field_description:project_wbs.field_project_project__code +msgid "Reference" +msgstr "Referencia" + +#. module: project_wbs +#: model:ir.model.fields,field_description:project_wbs.field_account_analytic_account__project_analytic_id +#: model:ir.model.fields,field_description:project_wbs.field_project_project__project_analytic_id +msgid "Root Analytic Account" +msgstr "Cuenta analítica raíz" + +#. module: project_wbs +#: model:ir.model.fields,help:project_wbs.field_account_analytic_account__account_class +#: model:ir.model.fields,help:project_wbs.field_project_project__account_class +msgid "" +"The classification allows you to create a proper project Work Breakdown " +"Structure" +msgstr "" +"La clasificación permite crear una estructura de desglose del trabajo del " +"proyecto adecuada" + +#. module: project_wbs +#: model:ir.model.fields,help:project_wbs.field_account_analytic_account__complete_wbs_code +#: model:ir.model.fields,help:project_wbs.field_project_project__complete_wbs_code +msgid "" +"The full WBS code describes the full path of this component within the " +"project WBS hierarchy" +msgstr "" +"El código PEP completo describe la ruta completa de este componente dentro " +"de la jerarquía PEP del proyecto" + +#. module: project_wbs +#: code:addons/project_wbs/models/account_analytic_account.py:0 +#: model:ir.model.constraint,message:project_wbs.constraint_account_analytic_account_analytic_unique_wbs_code +#, python-format +msgid "The full wbs code must be unique!" +msgstr "¡El código wbs completo debe ser único!" + +#. module: project_wbs +#: code:addons/project_wbs/models/project_project.py:0 +#, python-format +msgid "Unknown Analytic Account" +msgstr "Cuenta analítica desconocida" + +#. module: project_wbs +#: model:ir.ui.menu,name:project_wbs.menu_project_wbs_project +msgid "WBS" +msgstr "WBS" + +#. module: project_wbs +#: model:ir.model.fields,field_description:project_wbs.field_project_project__complete_wbs_code +msgid "WBS Code" +msgstr "Código WBS" + +#. module: project_wbs +#: model_terms:ir.ui.view,arch_db:project_wbs.view_project_kanban +msgid "WBS Elements:" +msgstr "Elementos de la WBS:" + +#. module: project_wbs +#: model_terms:ir.ui.view,arch_db:project_wbs.edit_project +#: model_terms:ir.ui.view,arch_db:project_wbs.view_account_analytic_account_form +#: model_terms:ir.ui.view,arch_db:project_wbs.view_account_analytic_account_list +#: model_terms:ir.ui.view,arch_db:project_wbs.view_account_analytic_account_search +#: model_terms:ir.ui.view,arch_db:project_wbs.view_project_project_filter +msgid "WBS code" +msgstr "Código WBS" + +#. module: project_wbs +#: model_terms:ir.ui.view,arch_db:project_wbs.edit_project +msgid "WBS element name" +msgstr "Nombre del elemento WBS" + +#. module: project_wbs +#: model:ir.actions.act_window,name:project_wbs.create_wbs_element +#: model:ir.actions.act_window,name:project_wbs.open_view_project_wbs +#: model:ir.actions.act_window,name:project_wbs.open_view_wbs_kanban +msgid "WBS elements" +msgstr "Elementos WBS" + +#. module: project_wbs +#: model_terms:ir.ui.view,arch_db:project_wbs.view_account_analytic_account_search +msgid "WBS name" +msgstr "Nombre de la WBS" + +#. module: project_wbs +#: model:ir.actions.act_window,name:project_wbs.open_view_wbs_tree +msgid "WBS overview" +msgstr "Resumen de la WBS" + +#. module: project_wbs +#: model_terms:ir.ui.view,arch_db:project_wbs.edit_project +msgid "Work Breakdown Structure" +msgstr "Estructura desglosada del trabajo" + +#. module: project_wbs +#: model:ir.model.fields.selection,name:project_wbs.selection__account_analytic_account__account_class__work_package +#: model_terms:ir.ui.view,arch_db:project_wbs.view_account_analytic_account_search2 +msgid "Work Package" +msgstr "Paquete de trabajo" + +#. module: project_wbs +#: model:ir.actions.act_window,name:project_wbs.open_view_project_work_packages +msgid "Work Packages" +msgstr "Paquetes de trabajo" + +#. module: project_wbs +#: model_terms:ir.actions.act_window,help:project_wbs.open_view_project_wbs +msgid "" +"You will be able collaborate with internal users on\n" +" projects or invite customers to share your activities." +msgstr "" +"Podrá colaborar con usuarios internos en\n" +" proyectos o invitar a clientes a compartir sus actividades." + +#~ msgid "WBS element" +#~ msgstr "Elemento WBS" + +#~ msgid "End Date" +#~ msgstr "fecha final" + +#~ msgid "Start Date" +#~ msgstr "fecha de inicio" diff --git a/project_wbs/i18n/fr.po b/project_wbs/i18n/fr.po new file mode 100644 index 0000000000..9f5417a53d --- /dev/null +++ b/project_wbs/i18n/fr.po @@ -0,0 +1,378 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * project_wbs +# +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 12.0\n" +"Report-Msgid-Bugs-To: \n" +"PO-Revision-Date: 2020-02-07 18:13+0000\n" +"Last-Translator: Grégory Moka Tourisme \n" +"Language-Team: none\n" +"Language: fr\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: \n" +"Plural-Forms: nplurals=2; plural=n > 1;\n" +"X-Generator: Weblate 3.10\n" + +#. module: project_wbs +#: model_terms:ir.ui.view,arch_db:project_wbs.view_project_kanban +msgid "(Parent:" +msgstr "(Parent :" + +#. module: project_wbs +#: model:ir.model,name:project_wbs.model_account_analytic_account +#: model:ir.model.fields,field_description:project_wbs.field_project_project__analytic_account_id +msgid "Analytic Account" +msgstr "Compte analytique" + +#. module: project_wbs +#: model:ir.model.fields,help:project_wbs.field_project_project__analytic_account_id +msgid "" +"Analytic account to which this project is linked for financial management. " +"Use an analytic account to record cost and revenue on your project." +msgstr "" + +#. module: project_wbs +#: model_terms:ir.ui.view,arch_db:project_wbs.edit_project +msgid "Append this project to another one using analytic accounts hierarchy" +msgstr "" +"Ajouter ce projet à un autre en utilisant la hiérarchie des comptes " +"analytiques" + +#. module: project_wbs +#: model:ir.model.fields,field_description:project_wbs.field_project_project__wbs_child_ids +msgid "Child Accounts" +msgstr "Comptes enfants" + +#. module: project_wbs +#: model_terms:ir.ui.view,arch_db:project_wbs.edit_project +#: model_terms:ir.ui.view,arch_db:project_wbs.view_project +msgid "Child WBS elements" +msgstr "Éléments SDP enfants" + +#. module: project_wbs +#: model:ir.model.fields,field_description:project_wbs.field_account_analytic_account__account_class +#: model:ir.model.fields,field_description:project_wbs.field_project_project__account_class +#: model_terms:ir.ui.view,arch_db:project_wbs.edit_project +#: model_terms:ir.ui.view,arch_db:project_wbs.view_account_analytic_account_form +#: model_terms:ir.ui.view,arch_db:project_wbs.view_account_analytic_account_search +#: model_terms:ir.ui.view,arch_db:project_wbs.view_project +#: model_terms:ir.ui.view,arch_db:project_wbs.view_project_project_filter +#: model_terms:ir.ui.view,arch_db:project_wbs.view_project_project_group_filter +msgid "Class" +msgstr "" + +#. module: project_wbs +#: model_terms:ir.actions.act_window,help:project_wbs.open_view_project_wbs +msgid "Click to start a new project." +msgstr "Cliquez pour démarrer un nouveau projet." + +#. module: project_wbs +#: model_terms:ir.ui.view,arch_db:project_wbs.edit_project +#: model_terms:ir.ui.view,arch_db:project_wbs.view_project +msgid "Code" +msgstr "Code" + +#. module: project_wbs +#: model_terms:ir.ui.view,arch_db:project_wbs.edit_project +msgid "Create child WBS element" +msgstr "Créer un élément SDP enfant" + +#. module: project_wbs +#: model:ir.model.fields,field_description:project_wbs.field_account_analytic_account__partner_id +msgid "Customer" +msgstr "Client" + +#. module: project_wbs +#: model:ir.model.fields.selection,name:project_wbs.selection__account_analytic_account__account_class__deliverable +#: model_terms:ir.ui.view,arch_db:project_wbs.view_account_analytic_account_search2 +msgid "Deliverable" +msgstr "Livrable" + +#. module: project_wbs +#: model:ir.actions.act_window,name:project_wbs.open_view_project_deliverables +msgid "Deliverables" +msgstr "Livrables" + +#. module: project_wbs +#: code:addons/project_wbs/models/project_project.py:0 +#, python-format +msgid "Details" +msgstr "Détails" + +#. module: project_wbs +#: code:addons/project_wbs/models/account_analytic_account.py:0 +#, python-format +msgid "Duplicate the project instead of the Analytic Account" +msgstr "Dupliquez le projet au lieu du compte analytique" + +#. module: project_wbs +#: model:ir.actions.act_window,name:project_wbs.open_view_project_form +msgid "Edit project" +msgstr "Modifier le projet" + +#. module: project_wbs +#: model:ir.model.fields,field_description:project_wbs.field_account_analytic_account__complete_wbs_code +msgid "Full WBS Code" +msgstr "Code SDP complet" + +#. module: project_wbs +#: model:ir.model.fields,field_description:project_wbs.field_account_analytic_account__complete_wbs_name +#: model:ir.model.fields,field_description:project_wbs.field_project_project__complete_wbs_name +msgid "Full WBS path" +msgstr "Chemin complet du SDP" + +#. module: project_wbs +#: model:ir.model.fields,help:project_wbs.field_account_analytic_account__complete_wbs_name +#: model:ir.model.fields,help:project_wbs.field_project_project__complete_wbs_name +msgid "Full path in the WBS hierarchy" +msgstr "" + +#. module: project_wbs +#: model_terms:ir.ui.view,arch_db:project_wbs.view_project_kanban +msgid "Go Up" +msgstr "" + +#. module: project_wbs +#: model:ir.model.fields,field_description:project_wbs.field_project_project__has_project_child_complete_ids +msgid "Has Project Child Complete" +msgstr "" + +#. module: project_wbs +#: model:ir.model.fields,field_description:project_wbs.field_account_analytic_account__wbs_indent +#: model:ir.model.fields,field_description:project_wbs.field_project_project__wbs_indent +msgid "Level" +msgstr "Niveau" + +#. module: project_wbs +#: model:ir.model.fields,field_description:project_wbs.field_account_analytic_account__manager_id +msgid "Manager" +msgstr "Responsable" + +#. module: project_wbs +#: model_terms:ir.ui.view,arch_db:project_wbs.view_account_analytic_account_search2 +#: model_terms:ir.ui.view,arch_db:project_wbs.view_project_project_group_filter +msgid "Master Project" +msgstr "" + +#. module: project_wbs +#: model_terms:ir.ui.view,arch_db:project_wbs.view_project +msgid "Parent" +msgstr "Parent" + +#. module: project_wbs +#: model:ir.model.fields,field_description:project_wbs.field_account_analytic_account__parent_id +#: model:ir.model.fields,field_description:project_wbs.field_project_project__wbs_parent_id +#: model_terms:ir.ui.view,arch_db:project_wbs.edit_project +msgid "Parent Analytic Account" +msgstr "Compte analytique parent" + +#. module: project_wbs +#: model_terms:ir.ui.view,arch_db:project_wbs.edit_project +#: model_terms:ir.ui.view,arch_db:project_wbs.view_project +msgid "Parent WBS element" +msgstr "Élément SDP parent" + +#. module: project_wbs +#: model:ir.model.fields.selection,name:project_wbs.selection__account_analytic_account__account_class__phase +msgid "Phase" +msgstr "Phase" + +#. module: project_wbs +#: model:ir.actions.act_window,name:project_wbs.open_view_project_phases +msgid "Phases" +msgstr "Phases" + +#. module: project_wbs +#: model:ir.model,name:project_wbs.model_project_project +#: model:ir.model.fields.selection,name:project_wbs.selection__account_analytic_account__account_class__project +#: model_terms:ir.ui.view,arch_db:project_wbs.view_account_analytic_account_search2 +msgid "Project" +msgstr "Projet" + +#. module: project_wbs +#: model_terms:ir.ui.view,arch_db:project_wbs.edit_project +#: model_terms:ir.ui.view,arch_db:project_wbs.view_project +msgid "Project Form View" +msgstr "Vue formulaire du projet" + +#. module: project_wbs +#: model:ir.model.fields,field_description:project_wbs.field_project_project__project_child_complete_ids +msgid "Project Hierarchy" +msgstr "Hiérarchie du projet" + +#. module: project_wbs +#: model:ir.model.fields,field_description:project_wbs.field_account_analytic_account__user_id +msgid "Project Manager" +msgstr "Gestionnaire de projet" + +#. module: project_wbs +#: model:ir.actions.act_window,name:project_wbs.group_project +#: model:ir.model.fields,field_description:project_wbs.field_account_analytic_account__project_ids +msgid "Projects" +msgstr "Projets" + +#. module: project_wbs +#: model_terms:ir.actions.act_window,help:project_wbs.open_view_project_wbs +msgid "" +"Projects are used to organize your activities; plan\n" +" tasks, track issues, invoice timesheets. You can define\n" +" internal projects (R&D, Improve Sales Process),\n" +" private projects (My Todos) or customer ones." +msgstr "" + +#. module: project_wbs +#: model:ir.model.fields,field_description:project_wbs.field_account_analytic_account__code +#: model:ir.model.fields,field_description:project_wbs.field_project_project__code +msgid "Reference" +msgstr "Référence" + +#. module: project_wbs +#: model:ir.model.fields,field_description:project_wbs.field_account_analytic_account__project_analytic_id +#: model:ir.model.fields,field_description:project_wbs.field_project_project__project_analytic_id +msgid "Root Analytic Account" +msgstr "Compte analytique racine" + +#. module: project_wbs +#: model:ir.model.fields,help:project_wbs.field_account_analytic_account__account_class +#: model:ir.model.fields,help:project_wbs.field_project_project__account_class +msgid "" +"The classification allows you to create a proper project Work Breakdown " +"Structure" +msgstr "" +"La classification vous permet de créer une structure de répartition du " +"travail appropriée pour le projet" + +#. module: project_wbs +#: model:ir.model.fields,help:project_wbs.field_account_analytic_account__complete_wbs_code +#: model:ir.model.fields,help:project_wbs.field_project_project__complete_wbs_code +msgid "" +"The full WBS code describes the full path of this component within the " +"project WBS hierarchy" +msgstr "" +"Le code SDP complet décrit le chemin d'accès complet de ce composant dans la " +"hiérarchie SDP du projet" + +#. module: project_wbs +#: code:addons/project_wbs/models/account_analytic_account.py:0 +#: model:ir.model.constraint,message:project_wbs.constraint_account_analytic_account_analytic_unique_wbs_code +#, python-format +msgid "The full wbs code must be unique!" +msgstr "Le code SDP complet doit être unique !" + +#. module: project_wbs +#: code:addons/project_wbs/models/project_project.py:0 +#, python-format +msgid "Unknown Analytic Account" +msgstr "Compte analytique inconnu" + +#. module: project_wbs +#: model:ir.ui.menu,name:project_wbs.menu_project_wbs_project +msgid "WBS" +msgstr "SDP" + +#. module: project_wbs +#: model:ir.model.fields,field_description:project_wbs.field_project_project__complete_wbs_code +msgid "WBS Code" +msgstr "Code SDP" + +#. module: project_wbs +#: model_terms:ir.ui.view,arch_db:project_wbs.view_project_kanban +msgid "WBS Elements:" +msgstr "Éléments SDP :" + +#. module: project_wbs +#: model_terms:ir.ui.view,arch_db:project_wbs.edit_project +#: model_terms:ir.ui.view,arch_db:project_wbs.view_account_analytic_account_form +#: model_terms:ir.ui.view,arch_db:project_wbs.view_account_analytic_account_list +#: model_terms:ir.ui.view,arch_db:project_wbs.view_account_analytic_account_search +#: model_terms:ir.ui.view,arch_db:project_wbs.view_project_project_filter +msgid "WBS code" +msgstr "Code SDP" + +#. module: project_wbs +#: model_terms:ir.ui.view,arch_db:project_wbs.edit_project +msgid "WBS element name" +msgstr "Nom de l'élément SDP" + +#. module: project_wbs +#: model:ir.actions.act_window,name:project_wbs.create_wbs_element +#: model:ir.actions.act_window,name:project_wbs.open_view_project_wbs +#: model:ir.actions.act_window,name:project_wbs.open_view_wbs_kanban +msgid "WBS elements" +msgstr "Éléments SDP" + +#. module: project_wbs +#: model_terms:ir.ui.view,arch_db:project_wbs.view_account_analytic_account_search +msgid "WBS name" +msgstr "Nom de la SDP" + +#. module: project_wbs +#: model:ir.actions.act_window,name:project_wbs.open_view_wbs_tree +msgid "WBS overview" +msgstr "Aperçu SDP" + +#. module: project_wbs +#: model_terms:ir.ui.view,arch_db:project_wbs.edit_project +msgid "Work Breakdown Structure" +msgstr "Structure de Découpage de Projet" + +#. module: project_wbs +#: model:ir.model.fields.selection,name:project_wbs.selection__account_analytic_account__account_class__work_package +#: model_terms:ir.ui.view,arch_db:project_wbs.view_account_analytic_account_search2 +msgid "Work Package" +msgstr "Lot de travaux" + +#. module: project_wbs +#: model:ir.actions.act_window,name:project_wbs.open_view_project_work_packages +msgid "Work Packages" +msgstr "Lots de travaux" + +#. module: project_wbs +#: model_terms:ir.actions.act_window,help:project_wbs.open_view_project_wbs +msgid "" +"You will be able collaborate with internal users on\n" +" projects or invite customers to share your activities." +msgstr "" + +#~ msgid "WBS element" +#~ msgstr "Élément SDP" + +#~ msgid "End Date" +#~ msgstr "Date de fin" + +#~ msgid "Start Date" +#~ msgstr "Date de début" + +#~ msgid "" +#~ "Link this project to an analytic account if you need financial management " +#~ "on projects. It enables you to connect projects with budgets, planning, " +#~ "cost and revenue analysis, timesheets on projects, etc." +#~ msgstr "" +#~ "Liez ce projet à un compte analytique si vous avez besoin d'une gestion " +#~ "financière des projets. Il vous permet de connecter les projets avec les " +#~ "budgets, la planification, l'analyse des coûts et des revenus, les " +#~ "feuilles de temps sur les projets, etc." + +#, fuzzy +#~ msgid "" +#~ "Projects are used to organize your activities; plan\n" +#~ " tasks, track issues, invoice timesheets. You can define\n" +#~ " internal projects (R&D, Improve Sales Process),\n" +#~ " private projects (My Todos) or customer ones." +#~ msgstr "" +#~ "Les projets sont utilisés pour organiser vos activités; planifier\n" +#~ " vos tâches, suivre les problèmes, les feuilles de temps de " +#~ "facturation. Vous pouvez définir\n" +#~ " vos projets internes (R & amp; D, l'amélioration des " +#~ "processus de vente),\n" +#~ " les projets privés (My Todos) ou clients." + +#~ msgid "" +#~ "You will be able collaborate with internal users on\n" +#~ " projects or invite customers to share your activities." +#~ msgstr "" +#~ "Vous pourrez collaborer avec des utilisateurs internes sur\n" +#~ " projets ou invitez des clients à partager vos activités." diff --git a/project_wbs/i18n/it.po b/project_wbs/i18n/it.po new file mode 100644 index 0000000000..5464a63443 --- /dev/null +++ b/project_wbs/i18n/it.po @@ -0,0 +1,356 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * project_wbs +# +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 12.0\n" +"Report-Msgid-Bugs-To: \n" +"PO-Revision-Date: 2025-06-21 13:27+0000\n" +"Last-Translator: mymage \n" +"Language-Team: none\n" +"Language: it\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: \n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" +"X-Generator: Weblate 5.10.4\n" + +#. module: project_wbs +#: model_terms:ir.ui.view,arch_db:project_wbs.view_project_kanban +msgid "(Parent:" +msgstr "(Padre:" + +#. module: project_wbs +#: model:ir.model,name:project_wbs.model_account_analytic_account +#: model:ir.model.fields,field_description:project_wbs.field_project_project__analytic_account_id +msgid "Analytic Account" +msgstr "Conto analitico" + +#. module: project_wbs +#: model:ir.model.fields,help:project_wbs.field_project_project__analytic_account_id +msgid "" +"Analytic account to which this project is linked for financial management. " +"Use an analytic account to record cost and revenue on your project." +msgstr "" +"Conto analitico a cui è collegato questo progetto per la gestione " +"finanziaria. Utilizzare un conto analitico per registrare i costi e ricavi " +"del progetto." + +#. module: project_wbs +#: model_terms:ir.ui.view,arch_db:project_wbs.edit_project +msgid "Append this project to another one using analytic accounts hierarchy" +msgstr "" +"Collega questo progetto ad un altro utilizzando la gerarchia conti analitici" + +#. module: project_wbs +#: model:ir.model.fields,field_description:project_wbs.field_project_project__wbs_child_ids +msgid "Child Accounts" +msgstr "Conti figli" + +#. module: project_wbs +#: model_terms:ir.ui.view,arch_db:project_wbs.edit_project +#: model_terms:ir.ui.view,arch_db:project_wbs.view_project +msgid "Child WBS elements" +msgstr "Elementi WBS figli" + +#. module: project_wbs +#: model:ir.model.fields,field_description:project_wbs.field_account_analytic_account__account_class +#: model:ir.model.fields,field_description:project_wbs.field_project_project__account_class +#: model_terms:ir.ui.view,arch_db:project_wbs.edit_project +#: model_terms:ir.ui.view,arch_db:project_wbs.view_account_analytic_account_form +#: model_terms:ir.ui.view,arch_db:project_wbs.view_account_analytic_account_search +#: model_terms:ir.ui.view,arch_db:project_wbs.view_project +#: model_terms:ir.ui.view,arch_db:project_wbs.view_project_project_filter +#: model_terms:ir.ui.view,arch_db:project_wbs.view_project_project_group_filter +msgid "Class" +msgstr "Classe" + +#. module: project_wbs +#: model_terms:ir.actions.act_window,help:project_wbs.open_view_project_wbs +msgid "Click to start a new project." +msgstr "Fai clic per avviare un nuovo progetto." + +#. module: project_wbs +#: model_terms:ir.ui.view,arch_db:project_wbs.edit_project +#: model_terms:ir.ui.view,arch_db:project_wbs.view_project +msgid "Code" +msgstr "Codice" + +#. module: project_wbs +#: model_terms:ir.ui.view,arch_db:project_wbs.edit_project +msgid "Create child WBS element" +msgstr "Crea elemento WBS figlio" + +#. module: project_wbs +#: model:ir.model.fields,field_description:project_wbs.field_account_analytic_account__partner_id +msgid "Customer" +msgstr "Cliente" + +#. module: project_wbs +#: model:ir.model.fields.selection,name:project_wbs.selection__account_analytic_account__account_class__deliverable +#: model_terms:ir.ui.view,arch_db:project_wbs.view_account_analytic_account_search2 +msgid "Deliverable" +msgstr "Consegnabile" + +#. module: project_wbs +#: model:ir.actions.act_window,name:project_wbs.open_view_project_deliverables +msgid "Deliverables" +msgstr "Consegnabili" + +#. module: project_wbs +#: code:addons/project_wbs/models/project_project.py:0 +#, python-format +msgid "Details" +msgstr "Dettagli" + +#. module: project_wbs +#: code:addons/project_wbs/models/account_analytic_account.py:0 +#, python-format +msgid "Duplicate the project instead of the Analytic Account" +msgstr "Duplicare il progetto invece che il conto analitico" + +#. module: project_wbs +#: model:ir.actions.act_window,name:project_wbs.open_view_project_form +msgid "Edit project" +msgstr "Modifica progetto" + +#. module: project_wbs +#: model:ir.model.fields,field_description:project_wbs.field_account_analytic_account__complete_wbs_code +msgid "Full WBS Code" +msgstr "Codice WBS completo" + +#. module: project_wbs +#: model:ir.model.fields,field_description:project_wbs.field_account_analytic_account__complete_wbs_name +#: model:ir.model.fields,field_description:project_wbs.field_project_project__complete_wbs_name +msgid "Full WBS path" +msgstr "Percorso WBS completo" + +#. module: project_wbs +#: model:ir.model.fields,help:project_wbs.field_account_analytic_account__complete_wbs_name +#: model:ir.model.fields,help:project_wbs.field_project_project__complete_wbs_name +msgid "Full path in the WBS hierarchy" +msgstr "Percorso completo nella gerarchia WBS" + +#. module: project_wbs +#: model_terms:ir.ui.view,arch_db:project_wbs.view_project_kanban +msgid "Go Up" +msgstr "Va su" + +#. module: project_wbs +#: model:ir.model.fields,field_description:project_wbs.field_project_project__has_project_child_complete_ids +msgid "Has Project Child Complete" +msgstr "Ha il progetto figlio completato" + +#. module: project_wbs +#: model:ir.model.fields,field_description:project_wbs.field_account_analytic_account__wbs_indent +#: model:ir.model.fields,field_description:project_wbs.field_project_project__wbs_indent +msgid "Level" +msgstr "Livello" + +#. module: project_wbs +#: model:ir.model.fields,field_description:project_wbs.field_account_analytic_account__manager_id +msgid "Manager" +msgstr "Supervisore" + +#. module: project_wbs +#: model_terms:ir.ui.view,arch_db:project_wbs.view_account_analytic_account_search2 +#: model_terms:ir.ui.view,arch_db:project_wbs.view_project_project_group_filter +msgid "Master Project" +msgstr "Progetto principale" + +#. module: project_wbs +#: model_terms:ir.ui.view,arch_db:project_wbs.view_project +msgid "Parent" +msgstr "Padre" + +#. module: project_wbs +#: model:ir.model.fields,field_description:project_wbs.field_account_analytic_account__parent_id +#: model:ir.model.fields,field_description:project_wbs.field_project_project__wbs_parent_id +#: model_terms:ir.ui.view,arch_db:project_wbs.edit_project +msgid "Parent Analytic Account" +msgstr "Conto analitico padre" + +#. module: project_wbs +#: model_terms:ir.ui.view,arch_db:project_wbs.edit_project +#: model_terms:ir.ui.view,arch_db:project_wbs.view_project +msgid "Parent WBS element" +msgstr "Elemento WBS padre" + +#. module: project_wbs +#: model:ir.model.fields.selection,name:project_wbs.selection__account_analytic_account__account_class__phase +msgid "Phase" +msgstr "Fase" + +#. module: project_wbs +#: model:ir.actions.act_window,name:project_wbs.open_view_project_phases +msgid "Phases" +msgstr "Fasi" + +#. module: project_wbs +#: model:ir.model,name:project_wbs.model_project_project +#: model:ir.model.fields.selection,name:project_wbs.selection__account_analytic_account__account_class__project +#: model_terms:ir.ui.view,arch_db:project_wbs.view_account_analytic_account_search2 +msgid "Project" +msgstr "Progetto" + +#. module: project_wbs +#: model_terms:ir.ui.view,arch_db:project_wbs.edit_project +#: model_terms:ir.ui.view,arch_db:project_wbs.view_project +msgid "Project Form View" +msgstr "Vista modulo progetto" + +#. module: project_wbs +#: model:ir.model.fields,field_description:project_wbs.field_project_project__project_child_complete_ids +msgid "Project Hierarchy" +msgstr "Gerarchia progetto" + +#. module: project_wbs +#: model:ir.model.fields,field_description:project_wbs.field_account_analytic_account__user_id +msgid "Project Manager" +msgstr "Responsabile progetto" + +#. module: project_wbs +#: model:ir.actions.act_window,name:project_wbs.group_project +#: model:ir.model.fields,field_description:project_wbs.field_account_analytic_account__project_ids +msgid "Projects" +msgstr "Progetti" + +#. module: project_wbs +#: model_terms:ir.actions.act_window,help:project_wbs.open_view_project_wbs +msgid "" +"Projects are used to organize your activities; plan\n" +" tasks, track issues, invoice timesheets. You can define\n" +" internal projects (R&D, Improve Sales Process),\n" +" private projects (My Todos) or customer ones." +msgstr "" +"I progetti sono utilizzati per organizzare le attività; pianifica\n" +" i lavori, traccia le segnalazioni, fattura i fogli ore. Si " +"possono definire\n" +" progetti interni (R&S, miglioramento processo vendite),\n" +" progetti privati (i miei da fare) o del cliente." + +#. module: project_wbs +#: model:ir.model.fields,field_description:project_wbs.field_account_analytic_account__code +#: model:ir.model.fields,field_description:project_wbs.field_project_project__code +msgid "Reference" +msgstr "Riferimento" + +#. module: project_wbs +#: model:ir.model.fields,field_description:project_wbs.field_account_analytic_account__project_analytic_id +#: model:ir.model.fields,field_description:project_wbs.field_project_project__project_analytic_id +msgid "Root Analytic Account" +msgstr "Conto analitico radice" + +#. module: project_wbs +#: model:ir.model.fields,help:project_wbs.field_account_analytic_account__account_class +#: model:ir.model.fields,help:project_wbs.field_project_project__account_class +msgid "" +"The classification allows you to create a proper project Work Breakdown " +"Structure" +msgstr "" +"La classificazione consente di creare una appropriata struttura di " +"scomposizione del lavoro (WBS)" + +#. module: project_wbs +#: model:ir.model.fields,help:project_wbs.field_account_analytic_account__complete_wbs_code +#: model:ir.model.fields,help:project_wbs.field_project_project__complete_wbs_code +msgid "" +"The full WBS code describes the full path of this component within the " +"project WBS hierarchy" +msgstr "" +"Il codice WBS completo descrive il percorso completo del componente " +"all'interno della gerarchia WBS" + +#. module: project_wbs +#: code:addons/project_wbs/models/account_analytic_account.py:0 +#: model:ir.model.constraint,message:project_wbs.constraint_account_analytic_account_analytic_unique_wbs_code +#, python-format +msgid "The full wbs code must be unique!" +msgstr "Il codice WBS completo deve essere univoco!" + +#. module: project_wbs +#: code:addons/project_wbs/models/project_project.py:0 +#, python-format +msgid "Unknown Analytic Account" +msgstr "Conto analitico sconosciuto" + +#. module: project_wbs +#: model:ir.ui.menu,name:project_wbs.menu_project_wbs_project +msgid "WBS" +msgstr "WBS" + +#. module: project_wbs +#: model:ir.model.fields,field_description:project_wbs.field_project_project__complete_wbs_code +msgid "WBS Code" +msgstr "Codice WBS" + +#. module: project_wbs +#: model_terms:ir.ui.view,arch_db:project_wbs.view_project_kanban +msgid "WBS Elements:" +msgstr "Elementi WBS:" + +#. module: project_wbs +#: model_terms:ir.ui.view,arch_db:project_wbs.edit_project +#: model_terms:ir.ui.view,arch_db:project_wbs.view_account_analytic_account_form +#: model_terms:ir.ui.view,arch_db:project_wbs.view_account_analytic_account_list +#: model_terms:ir.ui.view,arch_db:project_wbs.view_account_analytic_account_search +#: model_terms:ir.ui.view,arch_db:project_wbs.view_project_project_filter +msgid "WBS code" +msgstr "Codice WBS" + +#. module: project_wbs +#: model_terms:ir.ui.view,arch_db:project_wbs.edit_project +msgid "WBS element name" +msgstr "Nome elemento WBS" + +#. module: project_wbs +#: model:ir.actions.act_window,name:project_wbs.create_wbs_element +#: model:ir.actions.act_window,name:project_wbs.open_view_project_wbs +#: model:ir.actions.act_window,name:project_wbs.open_view_wbs_kanban +msgid "WBS elements" +msgstr "Elementi WBS" + +#. module: project_wbs +#: model_terms:ir.ui.view,arch_db:project_wbs.view_account_analytic_account_search +msgid "WBS name" +msgstr "Nome WBS" + +#. module: project_wbs +#: model:ir.actions.act_window,name:project_wbs.open_view_wbs_tree +msgid "WBS overview" +msgstr "Panoramica WBS" + +#. module: project_wbs +#: model_terms:ir.ui.view,arch_db:project_wbs.edit_project +msgid "Work Breakdown Structure" +msgstr "Struttura analitica di progetto (WBS)" + +#. module: project_wbs +#: model:ir.model.fields.selection,name:project_wbs.selection__account_analytic_account__account_class__work_package +#: model_terms:ir.ui.view,arch_db:project_wbs.view_account_analytic_account_search2 +msgid "Work Package" +msgstr "Pacchetto lavoro" + +#. module: project_wbs +#: model:ir.actions.act_window,name:project_wbs.open_view_project_work_packages +msgid "Work Packages" +msgstr "Pacchetti lavoro" + +#. module: project_wbs +#: model_terms:ir.actions.act_window,help:project_wbs.open_view_project_wbs +msgid "" +"You will be able collaborate with internal users on\n" +" projects or invite customers to share your activities." +msgstr "" +"Sarà possibile collaborare con utenti interni nei\n" +" progetti o invitare clienti a condividere le attività." + +#~ msgid "WBS element" +#~ msgstr "Elemento WBS" + +#~ msgid "End Date" +#~ msgstr "Data fine" + +#~ msgid "Start Date" +#~ msgstr "Data inizio" diff --git a/project_wbs/i18n/project_wbs.pot b/project_wbs/i18n/project_wbs.pot new file mode 100644 index 0000000000..97500a27d0 --- /dev/null +++ b/project_wbs/i18n/project_wbs.pot @@ -0,0 +1,329 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * project_wbs +# +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 15.0\n" +"Report-Msgid-Bugs-To: \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_wbs +#: model_terms:ir.ui.view,arch_db:project_wbs.view_project_kanban +msgid "(Parent:" +msgstr "" + +#. module: project_wbs +#: model:ir.model,name:project_wbs.model_account_analytic_account +#: model:ir.model.fields,field_description:project_wbs.field_project_project__analytic_account_id +msgid "Analytic Account" +msgstr "" + +#. module: project_wbs +#: model:ir.model.fields,help:project_wbs.field_project_project__analytic_account_id +msgid "" +"Analytic account to which this project is linked for financial management. " +"Use an analytic account to record cost and revenue on your project." +msgstr "" + +#. module: project_wbs +#: model_terms:ir.ui.view,arch_db:project_wbs.edit_project +msgid "Append this project to another one using analytic accounts hierarchy" +msgstr "" + +#. module: project_wbs +#: model:ir.model.fields,field_description:project_wbs.field_project_project__wbs_child_ids +msgid "Child Accounts" +msgstr "" + +#. module: project_wbs +#: model_terms:ir.ui.view,arch_db:project_wbs.edit_project +#: model_terms:ir.ui.view,arch_db:project_wbs.view_project +msgid "Child WBS elements" +msgstr "" + +#. module: project_wbs +#: model:ir.model.fields,field_description:project_wbs.field_account_analytic_account__account_class +#: model:ir.model.fields,field_description:project_wbs.field_project_project__account_class +#: model_terms:ir.ui.view,arch_db:project_wbs.edit_project +#: model_terms:ir.ui.view,arch_db:project_wbs.view_account_analytic_account_form +#: model_terms:ir.ui.view,arch_db:project_wbs.view_account_analytic_account_search +#: model_terms:ir.ui.view,arch_db:project_wbs.view_project +#: model_terms:ir.ui.view,arch_db:project_wbs.view_project_project_filter +#: model_terms:ir.ui.view,arch_db:project_wbs.view_project_project_group_filter +msgid "Class" +msgstr "" + +#. module: project_wbs +#: model_terms:ir.actions.act_window,help:project_wbs.open_view_project_wbs +msgid "Click to start a new project." +msgstr "" + +#. module: project_wbs +#: model_terms:ir.ui.view,arch_db:project_wbs.edit_project +#: model_terms:ir.ui.view,arch_db:project_wbs.view_project +msgid "Code" +msgstr "" + +#. module: project_wbs +#: model_terms:ir.ui.view,arch_db:project_wbs.edit_project +msgid "Create child WBS element" +msgstr "" + +#. module: project_wbs +#: model:ir.model.fields,field_description:project_wbs.field_account_analytic_account__partner_id +msgid "Customer" +msgstr "" + +#. module: project_wbs +#: model:ir.model.fields.selection,name:project_wbs.selection__account_analytic_account__account_class__deliverable +#: model_terms:ir.ui.view,arch_db:project_wbs.view_account_analytic_account_search2 +msgid "Deliverable" +msgstr "" + +#. module: project_wbs +#: model:ir.actions.act_window,name:project_wbs.open_view_project_deliverables +msgid "Deliverables" +msgstr "" + +#. module: project_wbs +#: code:addons/project_wbs/models/project_project.py:0 +#, python-format +msgid "Details" +msgstr "" + +#. module: project_wbs +#: code:addons/project_wbs/models/account_analytic_account.py:0 +#, python-format +msgid "Duplicate the project instead of the Analytic Account" +msgstr "" + +#. module: project_wbs +#: model:ir.actions.act_window,name:project_wbs.open_view_project_form +msgid "Edit project" +msgstr "" + +#. module: project_wbs +#: model:ir.model.fields,field_description:project_wbs.field_account_analytic_account__complete_wbs_code +msgid "Full WBS Code" +msgstr "" + +#. module: project_wbs +#: model:ir.model.fields,field_description:project_wbs.field_account_analytic_account__complete_wbs_name +#: model:ir.model.fields,field_description:project_wbs.field_project_project__complete_wbs_name +msgid "Full WBS path" +msgstr "" + +#. module: project_wbs +#: model:ir.model.fields,help:project_wbs.field_account_analytic_account__complete_wbs_name +#: model:ir.model.fields,help:project_wbs.field_project_project__complete_wbs_name +msgid "Full path in the WBS hierarchy" +msgstr "" + +#. module: project_wbs +#: model_terms:ir.ui.view,arch_db:project_wbs.view_project_kanban +msgid "Go Up" +msgstr "" + +#. module: project_wbs +#: model:ir.model.fields,field_description:project_wbs.field_project_project__has_project_child_complete_ids +msgid "Has Project Child Complete" +msgstr "" + +#. module: project_wbs +#: model:ir.model.fields,field_description:project_wbs.field_account_analytic_account__wbs_indent +#: model:ir.model.fields,field_description:project_wbs.field_project_project__wbs_indent +msgid "Level" +msgstr "" + +#. module: project_wbs +#: model:ir.model.fields,field_description:project_wbs.field_account_analytic_account__manager_id +msgid "Manager" +msgstr "" + +#. module: project_wbs +#: model_terms:ir.ui.view,arch_db:project_wbs.view_account_analytic_account_search2 +#: model_terms:ir.ui.view,arch_db:project_wbs.view_project_project_group_filter +msgid "Master Project" +msgstr "" + +#. module: project_wbs +#: model_terms:ir.ui.view,arch_db:project_wbs.view_project +msgid "Parent" +msgstr "" + +#. module: project_wbs +#: model:ir.model.fields,field_description:project_wbs.field_account_analytic_account__parent_id +#: model:ir.model.fields,field_description:project_wbs.field_project_project__wbs_parent_id +#: model_terms:ir.ui.view,arch_db:project_wbs.edit_project +msgid "Parent Analytic Account" +msgstr "" + +#. module: project_wbs +#: model_terms:ir.ui.view,arch_db:project_wbs.edit_project +#: model_terms:ir.ui.view,arch_db:project_wbs.view_project +msgid "Parent WBS element" +msgstr "" + +#. module: project_wbs +#: model:ir.model.fields.selection,name:project_wbs.selection__account_analytic_account__account_class__phase +msgid "Phase" +msgstr "" + +#. module: project_wbs +#: model:ir.actions.act_window,name:project_wbs.open_view_project_phases +msgid "Phases" +msgstr "" + +#. module: project_wbs +#: model:ir.model,name:project_wbs.model_project_project +#: model:ir.model.fields.selection,name:project_wbs.selection__account_analytic_account__account_class__project +#: model_terms:ir.ui.view,arch_db:project_wbs.view_account_analytic_account_search2 +msgid "Project" +msgstr "" + +#. module: project_wbs +#: model_terms:ir.ui.view,arch_db:project_wbs.edit_project +#: model_terms:ir.ui.view,arch_db:project_wbs.view_project +msgid "Project Form View" +msgstr "" + +#. module: project_wbs +#: model:ir.model.fields,field_description:project_wbs.field_project_project__project_child_complete_ids +msgid "Project Hierarchy" +msgstr "" + +#. module: project_wbs +#: model:ir.model.fields,field_description:project_wbs.field_account_analytic_account__user_id +msgid "Project Manager" +msgstr "" + +#. module: project_wbs +#: model:ir.actions.act_window,name:project_wbs.group_project +#: model:ir.model.fields,field_description:project_wbs.field_account_analytic_account__project_ids +msgid "Projects" +msgstr "" + +#. module: project_wbs +#: model_terms:ir.actions.act_window,help:project_wbs.open_view_project_wbs +msgid "" +"Projects are used to organize your activities; plan\n" +" tasks, track issues, invoice timesheets. You can define\n" +" internal projects (R&D, Improve Sales Process),\n" +" private projects (My Todos) or customer ones." +msgstr "" + +#. module: project_wbs +#: model:ir.model.fields,field_description:project_wbs.field_account_analytic_account__code +#: model:ir.model.fields,field_description:project_wbs.field_project_project__code +msgid "Reference" +msgstr "" + +#. module: project_wbs +#: model:ir.model.fields,field_description:project_wbs.field_account_analytic_account__project_analytic_id +#: model:ir.model.fields,field_description:project_wbs.field_project_project__project_analytic_id +msgid "Root Analytic Account" +msgstr "" + +#. module: project_wbs +#: model:ir.model.fields,help:project_wbs.field_account_analytic_account__account_class +#: model:ir.model.fields,help:project_wbs.field_project_project__account_class +msgid "" +"The classification allows you to create a proper project Work Breakdown " +"Structure" +msgstr "" + +#. module: project_wbs +#: model:ir.model.fields,help:project_wbs.field_account_analytic_account__complete_wbs_code +#: model:ir.model.fields,help:project_wbs.field_project_project__complete_wbs_code +msgid "" +"The full WBS code describes the full path of this component within the " +"project WBS hierarchy" +msgstr "" + +#. module: project_wbs +#: code:addons/project_wbs/models/account_analytic_account.py:0 +#: model:ir.model.constraint,message:project_wbs.constraint_account_analytic_account_analytic_unique_wbs_code +#, python-format +msgid "The full wbs code must be unique!" +msgstr "" + +#. module: project_wbs +#: code:addons/project_wbs/models/project_project.py:0 +#, python-format +msgid "Unknown Analytic Account" +msgstr "" + +#. module: project_wbs +#: model:ir.ui.menu,name:project_wbs.menu_project_wbs_project +msgid "WBS" +msgstr "" + +#. module: project_wbs +#: model:ir.model.fields,field_description:project_wbs.field_project_project__complete_wbs_code +msgid "WBS Code" +msgstr "" + +#. module: project_wbs +#: model_terms:ir.ui.view,arch_db:project_wbs.view_project_kanban +msgid "WBS Elements:" +msgstr "" + +#. module: project_wbs +#: model_terms:ir.ui.view,arch_db:project_wbs.edit_project +#: model_terms:ir.ui.view,arch_db:project_wbs.view_account_analytic_account_form +#: model_terms:ir.ui.view,arch_db:project_wbs.view_account_analytic_account_list +#: model_terms:ir.ui.view,arch_db:project_wbs.view_account_analytic_account_search +#: model_terms:ir.ui.view,arch_db:project_wbs.view_project_project_filter +msgid "WBS code" +msgstr "" + +#. module: project_wbs +#: model_terms:ir.ui.view,arch_db:project_wbs.edit_project +msgid "WBS element name" +msgstr "" + +#. module: project_wbs +#: model:ir.actions.act_window,name:project_wbs.create_wbs_element +#: model:ir.actions.act_window,name:project_wbs.open_view_project_wbs +#: model:ir.actions.act_window,name:project_wbs.open_view_wbs_kanban +msgid "WBS elements" +msgstr "" + +#. module: project_wbs +#: model_terms:ir.ui.view,arch_db:project_wbs.view_account_analytic_account_search +msgid "WBS name" +msgstr "" + +#. module: project_wbs +#: model:ir.actions.act_window,name:project_wbs.open_view_wbs_tree +msgid "WBS overview" +msgstr "" + +#. module: project_wbs +#: model_terms:ir.ui.view,arch_db:project_wbs.edit_project +msgid "Work Breakdown Structure" +msgstr "" + +#. module: project_wbs +#: model:ir.model.fields.selection,name:project_wbs.selection__account_analytic_account__account_class__work_package +#: model_terms:ir.ui.view,arch_db:project_wbs.view_account_analytic_account_search2 +msgid "Work Package" +msgstr "" + +#. module: project_wbs +#: model:ir.actions.act_window,name:project_wbs.open_view_project_work_packages +msgid "Work Packages" +msgstr "" + +#. module: project_wbs +#: model_terms:ir.actions.act_window,help:project_wbs.open_view_project_wbs +msgid "" +"You will be able collaborate with internal users on\n" +" projects or invite customers to share your activities." +msgstr "" diff --git a/project_wbs/i18n/pt_BR.po b/project_wbs/i18n/pt_BR.po new file mode 100644 index 0000000000..1b28997062 --- /dev/null +++ b/project_wbs/i18n/pt_BR.po @@ -0,0 +1,330 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * project_wbs +# +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 12.0\n" +"Report-Msgid-Bugs-To: \n" +"Last-Translator: Automatically generated\n" +"Language-Team: none\n" +"Language: pt_BR\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: \n" +"Plural-Forms: nplurals=2; plural=n > 1;\n" + +#. module: project_wbs +#: model_terms:ir.ui.view,arch_db:project_wbs.view_project_kanban +msgid "(Parent:" +msgstr "" + +#. module: project_wbs +#: model:ir.model,name:project_wbs.model_account_analytic_account +#: model:ir.model.fields,field_description:project_wbs.field_project_project__analytic_account_id +msgid "Analytic Account" +msgstr "" + +#. module: project_wbs +#: model:ir.model.fields,help:project_wbs.field_project_project__analytic_account_id +msgid "" +"Analytic account to which this project is linked for financial management. " +"Use an analytic account to record cost and revenue on your project." +msgstr "" + +#. module: project_wbs +#: model_terms:ir.ui.view,arch_db:project_wbs.edit_project +msgid "Append this project to another one using analytic accounts hierarchy" +msgstr "" + +#. module: project_wbs +#: model:ir.model.fields,field_description:project_wbs.field_project_project__wbs_child_ids +msgid "Child Accounts" +msgstr "" + +#. module: project_wbs +#: model_terms:ir.ui.view,arch_db:project_wbs.edit_project +#: model_terms:ir.ui.view,arch_db:project_wbs.view_project +msgid "Child WBS elements" +msgstr "" + +#. module: project_wbs +#: model:ir.model.fields,field_description:project_wbs.field_account_analytic_account__account_class +#: model:ir.model.fields,field_description:project_wbs.field_project_project__account_class +#: model_terms:ir.ui.view,arch_db:project_wbs.edit_project +#: model_terms:ir.ui.view,arch_db:project_wbs.view_account_analytic_account_form +#: model_terms:ir.ui.view,arch_db:project_wbs.view_account_analytic_account_search +#: model_terms:ir.ui.view,arch_db:project_wbs.view_project +#: model_terms:ir.ui.view,arch_db:project_wbs.view_project_project_filter +#: model_terms:ir.ui.view,arch_db:project_wbs.view_project_project_group_filter +msgid "Class" +msgstr "" + +#. module: project_wbs +#: model_terms:ir.actions.act_window,help:project_wbs.open_view_project_wbs +msgid "Click to start a new project." +msgstr "" + +#. module: project_wbs +#: model_terms:ir.ui.view,arch_db:project_wbs.edit_project +#: model_terms:ir.ui.view,arch_db:project_wbs.view_project +msgid "Code" +msgstr "" + +#. module: project_wbs +#: model_terms:ir.ui.view,arch_db:project_wbs.edit_project +msgid "Create child WBS element" +msgstr "" + +#. module: project_wbs +#: model:ir.model.fields,field_description:project_wbs.field_account_analytic_account__partner_id +msgid "Customer" +msgstr "" + +#. module: project_wbs +#: model:ir.model.fields.selection,name:project_wbs.selection__account_analytic_account__account_class__deliverable +#: model_terms:ir.ui.view,arch_db:project_wbs.view_account_analytic_account_search2 +msgid "Deliverable" +msgstr "" + +#. module: project_wbs +#: model:ir.actions.act_window,name:project_wbs.open_view_project_deliverables +msgid "Deliverables" +msgstr "" + +#. module: project_wbs +#: code:addons/project_wbs/models/project_project.py:0 +#, python-format +msgid "Details" +msgstr "" + +#. module: project_wbs +#: code:addons/project_wbs/models/account_analytic_account.py:0 +#, python-format +msgid "Duplicate the project instead of the Analytic Account" +msgstr "" + +#. module: project_wbs +#: model:ir.actions.act_window,name:project_wbs.open_view_project_form +msgid "Edit project" +msgstr "" + +#. module: project_wbs +#: model:ir.model.fields,field_description:project_wbs.field_account_analytic_account__complete_wbs_code +msgid "Full WBS Code" +msgstr "" + +#. module: project_wbs +#: model:ir.model.fields,field_description:project_wbs.field_account_analytic_account__complete_wbs_name +#: model:ir.model.fields,field_description:project_wbs.field_project_project__complete_wbs_name +msgid "Full WBS path" +msgstr "" + +#. module: project_wbs +#: model:ir.model.fields,help:project_wbs.field_account_analytic_account__complete_wbs_name +#: model:ir.model.fields,help:project_wbs.field_project_project__complete_wbs_name +msgid "Full path in the WBS hierarchy" +msgstr "" + +#. module: project_wbs +#: model_terms:ir.ui.view,arch_db:project_wbs.view_project_kanban +msgid "Go Up" +msgstr "" + +#. module: project_wbs +#: model:ir.model.fields,field_description:project_wbs.field_project_project__has_project_child_complete_ids +msgid "Has Project Child Complete" +msgstr "" + +#. module: project_wbs +#: model:ir.model.fields,field_description:project_wbs.field_account_analytic_account__wbs_indent +#: model:ir.model.fields,field_description:project_wbs.field_project_project__wbs_indent +msgid "Level" +msgstr "" + +#. module: project_wbs +#: model:ir.model.fields,field_description:project_wbs.field_account_analytic_account__manager_id +msgid "Manager" +msgstr "" + +#. module: project_wbs +#: model_terms:ir.ui.view,arch_db:project_wbs.view_account_analytic_account_search2 +#: model_terms:ir.ui.view,arch_db:project_wbs.view_project_project_group_filter +msgid "Master Project" +msgstr "" + +#. module: project_wbs +#: model_terms:ir.ui.view,arch_db:project_wbs.view_project +msgid "Parent" +msgstr "" + +#. module: project_wbs +#: model:ir.model.fields,field_description:project_wbs.field_account_analytic_account__parent_id +#: model:ir.model.fields,field_description:project_wbs.field_project_project__wbs_parent_id +#: model_terms:ir.ui.view,arch_db:project_wbs.edit_project +msgid "Parent Analytic Account" +msgstr "" + +#. module: project_wbs +#: model_terms:ir.ui.view,arch_db:project_wbs.edit_project +#: model_terms:ir.ui.view,arch_db:project_wbs.view_project +msgid "Parent WBS element" +msgstr "" + +#. module: project_wbs +#: model:ir.model.fields.selection,name:project_wbs.selection__account_analytic_account__account_class__phase +msgid "Phase" +msgstr "" + +#. module: project_wbs +#: model:ir.actions.act_window,name:project_wbs.open_view_project_phases +msgid "Phases" +msgstr "" + +#. module: project_wbs +#: model:ir.model,name:project_wbs.model_project_project +#: model:ir.model.fields.selection,name:project_wbs.selection__account_analytic_account__account_class__project +#: model_terms:ir.ui.view,arch_db:project_wbs.view_account_analytic_account_search2 +msgid "Project" +msgstr "" + +#. module: project_wbs +#: model_terms:ir.ui.view,arch_db:project_wbs.edit_project +#: model_terms:ir.ui.view,arch_db:project_wbs.view_project +msgid "Project Form View" +msgstr "" + +#. module: project_wbs +#: model:ir.model.fields,field_description:project_wbs.field_project_project__project_child_complete_ids +msgid "Project Hierarchy" +msgstr "" + +#. module: project_wbs +#: model:ir.model.fields,field_description:project_wbs.field_account_analytic_account__user_id +msgid "Project Manager" +msgstr "" + +#. module: project_wbs +#: model:ir.actions.act_window,name:project_wbs.group_project +#: model:ir.model.fields,field_description:project_wbs.field_account_analytic_account__project_ids +msgid "Projects" +msgstr "" + +#. module: project_wbs +#: model_terms:ir.actions.act_window,help:project_wbs.open_view_project_wbs +msgid "" +"Projects are used to organize your activities; plan\n" +" tasks, track issues, invoice timesheets. You can define\n" +" internal projects (R&D, Improve Sales Process),\n" +" private projects (My Todos) or customer ones." +msgstr "" + +#. module: project_wbs +#: model:ir.model.fields,field_description:project_wbs.field_account_analytic_account__code +#: model:ir.model.fields,field_description:project_wbs.field_project_project__code +msgid "Reference" +msgstr "" + +#. module: project_wbs +#: model:ir.model.fields,field_description:project_wbs.field_account_analytic_account__project_analytic_id +#: model:ir.model.fields,field_description:project_wbs.field_project_project__project_analytic_id +msgid "Root Analytic Account" +msgstr "" + +#. module: project_wbs +#: model:ir.model.fields,help:project_wbs.field_account_analytic_account__account_class +#: model:ir.model.fields,help:project_wbs.field_project_project__account_class +msgid "" +"The classification allows you to create a proper project Work Breakdown " +"Structure" +msgstr "" + +#. module: project_wbs +#: model:ir.model.fields,help:project_wbs.field_account_analytic_account__complete_wbs_code +#: model:ir.model.fields,help:project_wbs.field_project_project__complete_wbs_code +msgid "" +"The full WBS code describes the full path of this component within the " +"project WBS hierarchy" +msgstr "" + +#. module: project_wbs +#: code:addons/project_wbs/models/account_analytic_account.py:0 +#: model:ir.model.constraint,message:project_wbs.constraint_account_analytic_account_analytic_unique_wbs_code +#, python-format +msgid "The full wbs code must be unique!" +msgstr "" + +#. module: project_wbs +#: code:addons/project_wbs/models/project_project.py:0 +#, python-format +msgid "Unknown Analytic Account" +msgstr "" + +#. module: project_wbs +#: model:ir.ui.menu,name:project_wbs.menu_project_wbs_project +msgid "WBS" +msgstr "" + +#. module: project_wbs +#: model:ir.model.fields,field_description:project_wbs.field_project_project__complete_wbs_code +msgid "WBS Code" +msgstr "" + +#. module: project_wbs +#: model_terms:ir.ui.view,arch_db:project_wbs.view_project_kanban +msgid "WBS Elements:" +msgstr "" + +#. module: project_wbs +#: model_terms:ir.ui.view,arch_db:project_wbs.edit_project +#: model_terms:ir.ui.view,arch_db:project_wbs.view_account_analytic_account_form +#: model_terms:ir.ui.view,arch_db:project_wbs.view_account_analytic_account_list +#: model_terms:ir.ui.view,arch_db:project_wbs.view_account_analytic_account_search +#: model_terms:ir.ui.view,arch_db:project_wbs.view_project_project_filter +msgid "WBS code" +msgstr "" + +#. module: project_wbs +#: model_terms:ir.ui.view,arch_db:project_wbs.edit_project +msgid "WBS element name" +msgstr "" + +#. module: project_wbs +#: model:ir.actions.act_window,name:project_wbs.create_wbs_element +#: model:ir.actions.act_window,name:project_wbs.open_view_project_wbs +#: model:ir.actions.act_window,name:project_wbs.open_view_wbs_kanban +msgid "WBS elements" +msgstr "" + +#. module: project_wbs +#: model_terms:ir.ui.view,arch_db:project_wbs.view_account_analytic_account_search +msgid "WBS name" +msgstr "" + +#. module: project_wbs +#: model:ir.actions.act_window,name:project_wbs.open_view_wbs_tree +msgid "WBS overview" +msgstr "" + +#. module: project_wbs +#: model_terms:ir.ui.view,arch_db:project_wbs.edit_project +msgid "Work Breakdown Structure" +msgstr "" + +#. module: project_wbs +#: model:ir.model.fields.selection,name:project_wbs.selection__account_analytic_account__account_class__work_package +#: model_terms:ir.ui.view,arch_db:project_wbs.view_account_analytic_account_search2 +msgid "Work Package" +msgstr "" + +#. module: project_wbs +#: model:ir.actions.act_window,name:project_wbs.open_view_project_work_packages +msgid "Work Packages" +msgstr "" + +#. module: project_wbs +#: model_terms:ir.actions.act_window,help:project_wbs.open_view_project_wbs +msgid "" +"You will be able collaborate with internal users on\n" +" projects or invite customers to share your activities." +msgstr "" diff --git a/project_wbs/i18n/sl.po b/project_wbs/i18n/sl.po new file mode 100644 index 0000000000..9720f5748e --- /dev/null +++ b/project_wbs/i18n/sl.po @@ -0,0 +1,372 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * project_wbs +# +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 12.0\n" +"Report-Msgid-Bugs-To: \n" +"PO-Revision-Date: 2023-03-30 13:25+0000\n" +"Last-Translator: Matjaz Mozetic \n" +"Language-Team: none\n" +"Language: sl\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: \n" +"Plural-Forms: nplurals=4; plural=n%100==1 ? 0 : n%100==2 ? 1 : n%100==3 || " +"n%100==4 ? 2 : 3;\n" +"X-Generator: Weblate 4.14.1\n" + +#. module: project_wbs +#: model_terms:ir.ui.view,arch_db:project_wbs.view_project_kanban +msgid "(Parent:" +msgstr "(Nadrejeni:" + +#. module: project_wbs +#: model:ir.model,name:project_wbs.model_account_analytic_account +#: model:ir.model.fields,field_description:project_wbs.field_project_project__analytic_account_id +msgid "Analytic Account" +msgstr "Analitični konto" + +#. module: project_wbs +#: model:ir.model.fields,help:project_wbs.field_project_project__analytic_account_id +msgid "" +"Analytic account to which this project is linked for financial management. " +"Use an analytic account to record cost and revenue on your project." +msgstr "" + +#. module: project_wbs +#: model_terms:ir.ui.view,arch_db:project_wbs.edit_project +msgid "Append this project to another one using analytic accounts hierarchy" +msgstr "Obesi ta projekt pod drugega preko hierarhije analitičnih kontov" + +#. module: project_wbs +#: model:ir.model.fields,field_description:project_wbs.field_project_project__wbs_child_ids +msgid "Child Accounts" +msgstr "Podrejeni konti" + +#. module: project_wbs +#: model_terms:ir.ui.view,arch_db:project_wbs.edit_project +#: model_terms:ir.ui.view,arch_db:project_wbs.view_project +msgid "Child WBS elements" +msgstr "Podrejeni členi" + +#. module: project_wbs +#: model:ir.model.fields,field_description:project_wbs.field_account_analytic_account__account_class +#: model:ir.model.fields,field_description:project_wbs.field_project_project__account_class +#: model_terms:ir.ui.view,arch_db:project_wbs.edit_project +#: model_terms:ir.ui.view,arch_db:project_wbs.view_account_analytic_account_form +#: model_terms:ir.ui.view,arch_db:project_wbs.view_account_analytic_account_search +#: model_terms:ir.ui.view,arch_db:project_wbs.view_project +#: model_terms:ir.ui.view,arch_db:project_wbs.view_project_project_filter +#: model_terms:ir.ui.view,arch_db:project_wbs.view_project_project_group_filter +msgid "Class" +msgstr "Razred" + +#. module: project_wbs +#: model_terms:ir.actions.act_window,help:project_wbs.open_view_project_wbs +msgid "Click to start a new project." +msgstr "Ustvari nov projekt." + +#. module: project_wbs +#: model_terms:ir.ui.view,arch_db:project_wbs.edit_project +#: model_terms:ir.ui.view,arch_db:project_wbs.view_project +msgid "Code" +msgstr "Koda" + +#. module: project_wbs +#: model_terms:ir.ui.view,arch_db:project_wbs.edit_project +msgid "Create child WBS element" +msgstr "Ustvari podrejeni člen" + +#. module: project_wbs +#: model:ir.model.fields,field_description:project_wbs.field_account_analytic_account__partner_id +msgid "Customer" +msgstr "Stranka" + +#. module: project_wbs +#: model:ir.model.fields.selection,name:project_wbs.selection__account_analytic_account__account_class__deliverable +#: model_terms:ir.ui.view,arch_db:project_wbs.view_account_analytic_account_search2 +msgid "Deliverable" +msgstr "Dobavna postavka" + +#. module: project_wbs +#: model:ir.actions.act_window,name:project_wbs.open_view_project_deliverables +msgid "Deliverables" +msgstr "Dobavne postavke" + +#. module: project_wbs +#: code:addons/project_wbs/models/project_project.py:0 +#, python-format +msgid "Details" +msgstr "Podrobnosti" + +#. module: project_wbs +#: code:addons/project_wbs/models/account_analytic_account.py:0 +#, python-format +msgid "Duplicate the project instead of the Analytic Account" +msgstr "Podvojite projekt namesto analitičnega konta" + +#. module: project_wbs +#: model:ir.actions.act_window,name:project_wbs.open_view_project_form +msgid "Edit project" +msgstr "Uredi projekt" + +#. module: project_wbs +#: model:ir.model.fields,field_description:project_wbs.field_account_analytic_account__complete_wbs_code +msgid "Full WBS Code" +msgstr "Polna koda členitve" + +#. module: project_wbs +#: model:ir.model.fields,field_description:project_wbs.field_account_analytic_account__complete_wbs_name +#: model:ir.model.fields,field_description:project_wbs.field_project_project__complete_wbs_name +msgid "Full WBS path" +msgstr "Pot členitve" + +#. module: project_wbs +#: model:ir.model.fields,help:project_wbs.field_account_analytic_account__complete_wbs_name +#: model:ir.model.fields,help:project_wbs.field_project_project__complete_wbs_name +msgid "Full path in the WBS hierarchy" +msgstr "Polna pot v razčlenitveni hierarhiji" + +#. module: project_wbs +#: model_terms:ir.ui.view,arch_db:project_wbs.view_project_kanban +msgid "Go Up" +msgstr "" + +#. module: project_wbs +#: model:ir.model.fields,field_description:project_wbs.field_project_project__has_project_child_complete_ids +msgid "Has Project Child Complete" +msgstr "Vsebuje dokončan podrejen projekt" + +#. module: project_wbs +#: model:ir.model.fields,field_description:project_wbs.field_account_analytic_account__wbs_indent +#: model:ir.model.fields,field_description:project_wbs.field_project_project__wbs_indent +msgid "Level" +msgstr "Nivo" + +#. module: project_wbs +#: model:ir.model.fields,field_description:project_wbs.field_account_analytic_account__manager_id +msgid "Manager" +msgstr "Upravitelj" + +#. module: project_wbs +#: model_terms:ir.ui.view,arch_db:project_wbs.view_account_analytic_account_search2 +#: model_terms:ir.ui.view,arch_db:project_wbs.view_project_project_group_filter +msgid "Master Project" +msgstr "Nosilni projekt" + +#. module: project_wbs +#: model_terms:ir.ui.view,arch_db:project_wbs.view_project +msgid "Parent" +msgstr "Nadrejeni" + +#. module: project_wbs +#: model:ir.model.fields,field_description:project_wbs.field_account_analytic_account__parent_id +#: model:ir.model.fields,field_description:project_wbs.field_project_project__wbs_parent_id +#: model_terms:ir.ui.view,arch_db:project_wbs.edit_project +msgid "Parent Analytic Account" +msgstr "Nadrejeni konto" + +#. module: project_wbs +#: model_terms:ir.ui.view,arch_db:project_wbs.edit_project +#: model_terms:ir.ui.view,arch_db:project_wbs.view_project +msgid "Parent WBS element" +msgstr "Nadrejeni člen" + +#. module: project_wbs +#: model:ir.model.fields.selection,name:project_wbs.selection__account_analytic_account__account_class__phase +msgid "Phase" +msgstr "Faza" + +#. module: project_wbs +#: model:ir.actions.act_window,name:project_wbs.open_view_project_phases +msgid "Phases" +msgstr "Faze" + +#. module: project_wbs +#: model:ir.model,name:project_wbs.model_project_project +#: model:ir.model.fields.selection,name:project_wbs.selection__account_analytic_account__account_class__project +#: model_terms:ir.ui.view,arch_db:project_wbs.view_account_analytic_account_search2 +msgid "Project" +msgstr "Projekt" + +#. module: project_wbs +#: model_terms:ir.ui.view,arch_db:project_wbs.edit_project +#: model_terms:ir.ui.view,arch_db:project_wbs.view_project +msgid "Project Form View" +msgstr "Projektni obrazec" + +#. module: project_wbs +#: model:ir.model.fields,field_description:project_wbs.field_project_project__project_child_complete_ids +msgid "Project Hierarchy" +msgstr "Projektna hierarhija" + +#. module: project_wbs +#: model:ir.model.fields,field_description:project_wbs.field_account_analytic_account__user_id +msgid "Project Manager" +msgstr "Upravitelj projekta" + +#. module: project_wbs +#: model:ir.actions.act_window,name:project_wbs.group_project +#: model:ir.model.fields,field_description:project_wbs.field_account_analytic_account__project_ids +msgid "Projects" +msgstr "Projekti" + +#. module: project_wbs +#: model_terms:ir.actions.act_window,help:project_wbs.open_view_project_wbs +msgid "" +"Projects are used to organize your activities; plan\n" +" tasks, track issues, invoice timesheets. You can define\n" +" internal projects (R&D, Improve Sales Process),\n" +" private projects (My Todos) or customer ones." +msgstr "" + +#. module: project_wbs +#: model:ir.model.fields,field_description:project_wbs.field_account_analytic_account__code +#: model:ir.model.fields,field_description:project_wbs.field_project_project__code +msgid "Reference" +msgstr "Sklic" + +#. module: project_wbs +#: model:ir.model.fields,field_description:project_wbs.field_account_analytic_account__project_analytic_id +#: model:ir.model.fields,field_description:project_wbs.field_project_project__project_analytic_id +msgid "Root Analytic Account" +msgstr "Temeljni konto" + +#. module: project_wbs +#: model:ir.model.fields,help:project_wbs.field_account_analytic_account__account_class +#: model:ir.model.fields,help:project_wbs.field_project_project__account_class +msgid "" +"The classification allows you to create a proper project Work Breakdown " +"Structure" +msgstr "Klasifikacija omogoča ustvarjanje primerne razčlenitvene strukture" + +#. module: project_wbs +#: model:ir.model.fields,help:project_wbs.field_account_analytic_account__complete_wbs_code +#: model:ir.model.fields,help:project_wbs.field_project_project__complete_wbs_code +msgid "" +"The full WBS code describes the full path of this component within the " +"project WBS hierarchy" +msgstr "" +"Polna koda razčlenitve opisuje polno pot te komponente v sklopu " +"razčlenitvene hierarhije projekta" + +#. module: project_wbs +#: code:addons/project_wbs/models/account_analytic_account.py:0 +#: model:ir.model.constraint,message:project_wbs.constraint_account_analytic_account_analytic_unique_wbs_code +#, python-format +msgid "The full wbs code must be unique!" +msgstr "Polna koda členitve mora biti unikatna!" + +#. module: project_wbs +#: code:addons/project_wbs/models/project_project.py:0 +#, python-format +msgid "Unknown Analytic Account" +msgstr "Neznan konto" + +#. module: project_wbs +#: model:ir.ui.menu,name:project_wbs.menu_project_wbs_project +msgid "WBS" +msgstr "Razčlenitev" + +#. module: project_wbs +#: model:ir.model.fields,field_description:project_wbs.field_project_project__complete_wbs_code +msgid "WBS Code" +msgstr "Koda člena" + +#. module: project_wbs +#: model_terms:ir.ui.view,arch_db:project_wbs.view_project_kanban +msgid "WBS Elements:" +msgstr "Členi:" + +#. module: project_wbs +#: model_terms:ir.ui.view,arch_db:project_wbs.edit_project +#: model_terms:ir.ui.view,arch_db:project_wbs.view_account_analytic_account_form +#: model_terms:ir.ui.view,arch_db:project_wbs.view_account_analytic_account_list +#: model_terms:ir.ui.view,arch_db:project_wbs.view_account_analytic_account_search +#: model_terms:ir.ui.view,arch_db:project_wbs.view_project_project_filter +msgid "WBS code" +msgstr "Koda člena" + +#. module: project_wbs +#: model_terms:ir.ui.view,arch_db:project_wbs.edit_project +msgid "WBS element name" +msgstr "Naziv člena" + +#. module: project_wbs +#: model:ir.actions.act_window,name:project_wbs.create_wbs_element +#: model:ir.actions.act_window,name:project_wbs.open_view_project_wbs +#: model:ir.actions.act_window,name:project_wbs.open_view_wbs_kanban +msgid "WBS elements" +msgstr "Členi" + +#. module: project_wbs +#: model_terms:ir.ui.view,arch_db:project_wbs.view_account_analytic_account_search +msgid "WBS name" +msgstr "Naziv člena" + +#. module: project_wbs +#: model:ir.actions.act_window,name:project_wbs.open_view_wbs_tree +msgid "WBS overview" +msgstr "Pregled členitve" + +#. module: project_wbs +#: model_terms:ir.ui.view,arch_db:project_wbs.edit_project +msgid "Work Breakdown Structure" +msgstr "Razčlenitvena struktura" + +#. module: project_wbs +#: model:ir.model.fields.selection,name:project_wbs.selection__account_analytic_account__account_class__work_package +#: model_terms:ir.ui.view,arch_db:project_wbs.view_account_analytic_account_search2 +msgid "Work Package" +msgstr "Paket opravil" + +#. module: project_wbs +#: model:ir.actions.act_window,name:project_wbs.open_view_project_work_packages +msgid "Work Packages" +msgstr "Paketi opravil" + +#. module: project_wbs +#: model_terms:ir.actions.act_window,help:project_wbs.open_view_project_wbs +msgid "" +"You will be able collaborate with internal users on\n" +" projects or invite customers to share your activities." +msgstr "" + +#~ msgid "WBS element" +#~ msgstr "Projektni člen" + +#~ msgid "End Date" +#~ msgstr "Končni datum" + +#~ msgid "Start Date" +#~ msgstr "Začetni datum" + +#~ msgid "" +#~ "Link this project to an analytic account if you need financial management " +#~ "on projects. It enables you to connect projects with budgets, planning, " +#~ "cost and revenue analysis, timesheets on projects, etc." +#~ msgstr "" +#~ "Če želite upravljanje stroškov na projektih, povežite ta projekt z " +#~ "analitičnim kontom. To omogoča povezavo projektov s proračuni, plani, " +#~ "analizo stroškov in prihodkov, časovnice, itd." + +#~ msgid "" +#~ "Projects are used to organize your activities; plan\n" +#~ " tasks, track issues, invoice timesheets. You can define\n" +#~ " internal projects (R&D, Improve Sales Process),\n" +#~ " private projects (My Todos) or customer ones." +#~ msgstr "" +#~ "Projekte se uporablja za organizacijo aktivnosti, planiranje\n" +#~ " opravil, sledenje problematiki, obračun po času. Določite " +#~ "lahko\n" +#~ " interne projekte (in izboljšate prodajne procese),\n" +#~ " privatne projekte (seznami opravkov) ali projekte strank." + +#~ msgid "" +#~ "You will be able collaborate with internal users on\n" +#~ " projects or invite customers to share your activities." +#~ msgstr "" +#~ "Omogočeno bo sodelovanje na projektih z internimi\n" +#~ " uporabniki ali pa povabite stranke k souporabi aktivnosti." diff --git a/project_wbs/models/__init__.py b/project_wbs/models/__init__.py new file mode 100644 index 0000000000..f0c721a400 --- /dev/null +++ b/project_wbs/models/__init__.py @@ -0,0 +1,3 @@ +# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl.html). +from . import account_analytic_account +from . import project_project diff --git a/project_wbs/models/account_analytic_account.py b/project_wbs/models/account_analytic_account.py new file mode 100644 index 0000000000..fde06f7b55 --- /dev/null +++ b/project_wbs/models/account_analytic_account.py @@ -0,0 +1,238 @@ +# Copyright 2017 ForgeFlow S.L. +# Copyright 2017 Luxim d.o.o. +# Copyright 2017 Matmoz d.o.o. +# Copyright 2017 Deneroteam. +# Copyright 2017 Serpent Consulting Services Pvt. Ltd. +# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl.html). + +from odoo import _, api, fields, models +from odoo.exceptions import ValidationError + + +class AccountAnalyticAccount(models.Model): + _inherit = "account.analytic.account" + _order = "complete_wbs_code" + + def get_child_accounts(self): + result = {} + if not self.ids: + return result + for curr_id in self.ids: + result[curr_id] = True + # Now add the children + self.env.cr.execute( + """ + WITH RECURSIVE children AS ( + SELECT parent_id, id + FROM account_analytic_account + WHERE parent_id IN %s + UNION ALL + SELECT a.parent_id, a.id + FROM account_analytic_account a + JOIN children b ON(a.parent_id = b.id) + ) + SELECT * FROM children order by parent_id + """, + (tuple(self.ids),), + ) + res = self.env.cr.fetchall() + for _x, y in res: + result[y] = True + return result + + def write(self, vals): + res = super().write(vals) + if vals.get("parent_id"): + for account in self.browse(self.get_child_accounts().keys()): + account._complete_wbs_code_calc() + account._complete_wbs_name_calc() + if "active" in vals: + for account in self: + account.project_ids.filtered( + lambda p, a=account: p.active != a.active + ).write({"active": account.active}) + return res + + @api.depends("code") + def _complete_wbs_code_calc(self): + for account in self: + data = [] + acc = account + while acc: + if acc.code: + data.insert(0, acc.code) + + acc = acc.parent_id + if data: + if len(data) >= 2: + data = " / ".join(data) + else: + data = data[0] + data = "[" + data + "]" + account.complete_wbs_code = data or "" + + @api.depends("name") + def _complete_wbs_name_calc(self): + for account in self: + data = [] + acc = account + while acc: + if acc.name: + data.insert(0, acc.name) + acc = acc.parent_id + if data: + if len(data) >= 2: + data = " / ".join(data) + else: + data = data[0] + account.complete_wbs_name = data or "" + + def _wbs_indent_calc(self): + for account in self: + data = [] + acc = account + while acc: + if acc.name and acc.parent_id: + data.insert(0, ">") + + acc = acc.parent_id + if data: + if len(data) >= 2: + data = "".join(data) # pragma: no cover + else: + data = data[0] + account.wbs_indent = data or "" + + @api.depends("account_class", "parent_id") + def _compute_project_analytic_id(self): + for analytic in self: + if analytic.parent_id.filtered(lambda acc: acc.account_class == "project"): + current = analytic.parent_id + else: + current = analytic + while current.id: + if current.account_class == "project": + analytic.project_analytic_id = current + break + current = current.parent_id + + @api.model + def _default_parent(self): + return self.env.context.get("parent_id", None) + + @api.model + def _default_partner(self): + return self.env.context.get("partner_id", None) + + @api.model + def _default_user(self): + return self.env.context.get("user_id", self.env.user) + + wbs_indent = fields.Char(compute=_wbs_indent_calc, string="Level") + + complete_wbs_code = fields.Char( + compute=_complete_wbs_code_calc, + string="Full WBS Code", + help="The full WBS code describes the full path of this component " + "within the project WBS hierarchy", + store=True, + ) + code = fields.Char(copy=False) + complete_wbs_name = fields.Char( + compute=_complete_wbs_name_calc, + string="Full WBS path", + help="Full path in the WBS hierarchy", + store=True, + ) + project_ids = fields.One2many( + comodel_name="project.project", + inverse_name="account_id", + string="Projects", + ) + project_analytic_id = fields.Many2one( + "account.analytic.account", + compute=_compute_project_analytic_id, + string="Root Analytic Account", + store=True, + ) + user_id = fields.Many2one( + "res.users", + "Project Manager", + tracking=True, + default=_default_user, + ) + manager_id = fields.Many2one("res.users", "Manager", tracking=True) + + account_class = fields.Selection( + [ + ("project", "Project"), + ("phase", "Phase"), + ("deliverable", "Deliverable"), + ("work_package", "Work Package"), + ], + "Class", + default="project", + help="The classification allows you to create a proper project " + "Work Breakdown Structure", + ) + parent_id = fields.Many2one( + default=_default_parent, string="Parent Analytic Account" + ) + partner_id = fields.Many2one(default=_default_partner) + + def copy(self, default=None): + if self.mapped("project_ids"): + raise ValidationError( + _("Duplicate the project instead of the " "Analytic Account") + ) + default = {} + default["code"] = self.env["ir.sequence"].next_by_code( + "account.analytic.account.code" + ) + return super().copy(default) + + @api.depends("code") + def code_get(self): + res = [] + for account in self: + data = [] + acc = account + while acc: + if acc.code: + data.insert(0, acc.code) + else: + data.insert(0, "") # pragma: no cover + + acc = acc.parent_id + data = " / ".join(data) + res.append((account.id, data)) + return res + + @api.depends("name") + def name_get(self): + res = [] + for account in self: + data = [] + acc = account + while acc: + if acc.name: + data.insert(0, acc.name) + else: + data.insert(0, "") # pragma: no cover + acc = acc.parent_id + + data = "/".join(data) + res2 = account.code_get() + if res2 and res2[0][1]: + data = "[" + res2[0][1] + "] " + data + + res.append((account.id, data)) + return res + + _sql_constraints = [ + ( + "analytic_unique_wbs_code", + "UNIQUE (complete_wbs_code)", + "The full wbs code must be unique!", + ), + ] diff --git a/project_wbs/models/project_project.py b/project_wbs/models/project_project.py new file mode 100644 index 0000000000..5b4d73888e --- /dev/null +++ b/project_wbs/models/project_project.py @@ -0,0 +1,340 @@ +# Copyright 2017 ForgeFlow S.L. +# Copyright 2017 Luxim d.o.o. +# Copyright 2017 Matmoz d.o.o. +# Copyright 2017 Deneroteam. +# Copyright 2017 Serpent Consulting Services Pvt. Ltd. +# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl.html). + +from odoo import _, api, fields, models + + +class Project(models.Model): + _inherit = "project.project" + _order = "complete_wbs_code" + + analytic_account_id = fields.Many2one( + "account.analytic.account", + "WBS Analytic Account", + related="account_id", + readonly=False, + store=True, + ) + + def _get_project_analytic_wbs(self): + result = {} + self.env.cr.execute( + """ + WITH RECURSIVE children AS ( + SELECT p.id as ppid, p.id as pid, a.id, a.parent_id + FROM account_analytic_account a + INNER JOIN project_project p + ON a.id = p.analytic_account_id + WHERE p.id IN %s + UNION ALL + SELECT b.ppid as ppid, p.id as pid, a.id, a.parent_id + FROM account_analytic_account a + INNER JOIN project_project p + ON a.id = p.analytic_account_id + JOIN children b ON(a.parent_id = b.id) + ) + SELECT * FROM children order by ppid + """, + (tuple(self.ids),), + ) + res = self.env.cr.fetchall() + for r in res: + if r[0] in result: + result[r[0]][r[1]] = r[2] + else: + result[r[0]] = {r[1]: r[2]} + + return result + + def _get_project_wbs(self): + result = [] + projects_data = self._get_project_analytic_wbs() + for ppid in projects_data.values(): + result.extend(ppid.keys()) + return result + + @api.depends("name") + def name_get(self): + res = [] + for project_item in self: + data = [] + proj = project_item + + if proj and proj.name: + data.insert(0, proj.name) + else: + data.insert(0, "") # pragma: no cover + acc = proj.analytic_account_id.parent_id + while acc: + if acc and acc.name: + data.insert(0, acc.name) + else: + data.insert(0, "") # pragma: no cover + acc = acc.parent_id + data = "/".join(data) + res2 = project_item.code_get() + if res2 and res2[0][1]: + data = "[" + res2[0][1] + "] " + data + + res.append((project_item.id, data)) + return res + + @api.depends("analytic_account_id.code") + def code_get(self): + res = [] + for project_item in self: + data = [] + proj = project_item + + if proj.analytic_account_id.code: + data.insert(0, proj.analytic_account_id.code) + else: + data.insert(0, "") # pragma: no cover + acc = proj.analytic_account_id.parent_id + while acc: + if acc.code: + data.insert(0, acc.code) + else: + data.insert(0, "") # pragma: no cover + + acc = acc.parent_id + + data = "/".join(data) + res.append((project_item.id, data)) + return res + + @api.depends("analytic_account_id.parent_id") + def _compute_child(self): + for project_item in self: + child_ids = False + if project_item.analytic_account_id: + child_ids = self.env["project.project"].search( + [ + ( + "analytic_account_id.parent_id", + "=", + project_item.analytic_account_id.id, + ) + ] + ) + project_item.project_child_complete_ids = child_ids + + @api.depends("project_child_complete_ids") + def _compute_has_child(self): + for project_item in self: + project_item.has_project_child_complete_ids = ( + len(project_item.project_child_complete_ids.ids) > 0 + ) + + def _resolve_analytic_account_id_from_context(self): + """ + Returns ID of parent analytic account based on the value of + 'default_wbs_parent_id' + context key, or None if it cannot be resolved to a single + account.analytic.account + """ + context = self.env.context or {} + + if isinstance(context.get("default_wbs_parent_id"), int): + return context["default_wbs_parent_id"] + if isinstance(context.get("default_parent_id"), int): + return context["default_parent_id"] + return None + + def prepare_analytics_vals(self, vals): + project_plan, _other_plans = self.env["account.analytic.plan"]._get_all_plans() + analytic_vals = { + "name": vals.get("name", _("Unknown Analytic Account")), + "company_id": vals.get("company_id", self.env.company.id), + "partner_id": vals.get("partner_id"), + "plan_id": project_plan.id, + "active": True, + } + code = vals.get("code", False) + if code: + analytic_vals.update({"code": code}) + return analytic_vals + + def update_project_from_analytic_vals(self, vals): + new_vals = vals + if "wbs_parent_id" in vals and not vals["wbs_parent_id"]: + # it means it comes from a form + parent = self.env["account.analytic.account"].browse( + self._context.get("default_wbs_parent_id") + or self._context.get("default_parent_id", False) + ) + if parent: + account_analytic = self.env["account.analytic.account"].browse( + vals.get("analytic_account_id", False) + ) + new_vals.update( + { + "wbs_parent_id": parent.id, + "code": account_analytic.code, + "project_analytic_id": parent.project_analytic_id.id, + "account_class": parent.account_class, + } + ) + return new_vals + + wbs_parent_id = fields.Many2one( + related="analytic_account_id.parent_id", + readonly=False, + ) + wbs_child_ids = fields.One2many( + related="analytic_account_id.child_ids", + readonly=False, + ) + project_child_complete_ids = fields.Many2many( + comodel_name="project.project", + string="Project Hierarchy", + compute="_compute_child", + ) + has_project_child_complete_ids = fields.Boolean( + compute="_compute_has_child", + ) + wbs_indent = fields.Char( + related="analytic_account_id.wbs_indent", + ) + complete_wbs_code = fields.Char( + related="analytic_account_id.complete_wbs_code", + string="WBS Code", + store=True, + ) + code = fields.Char( + related="analytic_account_id.code", + readonly=False, + ) + complete_wbs_name = fields.Char( + related="analytic_account_id.complete_wbs_name", + ) + project_analytic_id = fields.Many2one( + related="analytic_account_id.project_analytic_id", readonly=True, store=True + ) + account_class = fields.Selection( + related="analytic_account_id.account_class", + store=True, + default="project", + readonly=False, + ) + + @api.model_create_multi + def create(self, vals_list): + for vals in vals_list: + analytic_vals = self.prepare_analytics_vals(vals) + if "analytic_account_id" not in vals: + aa = self.env["account.analytic.account"].create(analytic_vals) + vals.update({"analytic_account_id": aa.id}) + if not vals.get("code"): + vals.update({"code": aa.code}) + self.update_project_from_analytic_vals(vals) + return super().create(vals_list) + + @api.model + def action_open_child_view(self, act_window): + """ + :return dict: dictionary value for created view + """ + res = self.env["ir.actions.act_window"]._for_xml_id(act_window) + domain = [] + project_ids = [] + child_project_ids = self.env["project.project"].search( + [("analytic_account_id.parent_id", "=", self.analytic_account_id.id)] + ) + for child_project_id in child_project_ids: + project_ids.append(child_project_id.id) + res["context"] = { + "default_wbs_parent_id": ( + self.analytic_account_id and self.analytic_account_id.id or False + ), + "default_partner_id": (self.partner_id and self.partner_id.id or False), + "default_user_id": (self.user_id and self.user_id.id or False), + } + domain.append(("id", "in", project_ids)) + res.update({"display_name": self.name, "domain": domain, "nodestroy": False}) + return res + + def action_open_child_tree_view(self): + self.ensure_one() + return self.action_open_child_view("project_wbs.open_view_project_wbs") + + def action_open_child_kanban_view(self): + self.ensure_one() + return self.action_open_child_view("project_wbs.open_view_wbs_kanban") + + def action_open_parent_tree_view(self): + """ + :return dict: dictionary value for created view + """ + self.ensure_one() + domain = [] + analytic_account_ids = [] + res = self.env["ir.actions.act_window"]._for_xml_id( + "project_wbs.open_view_project_wbs" + ) + if self.analytic_account_id.parent_id: + for parent_project_id in self.env["project.project"].search( + [("analytic_account_id", "=", self.analytic_account_id.parent_id.id)] + ): + analytic_account_ids.append(parent_project_id.id) + domain.append(("id", "in", analytic_account_ids)) + res.update({"display_name": self.name, "domain": domain, "nodestroy": False}) + return res + + def write(self, vals): + res = super().write(vals) + if "wbs_parent_id" in vals: + for account in self.env["account.analytic.account"].browse( + self.analytic_account_id.get_child_accounts().keys() + ): + account._complete_wbs_code_calc() + account._complete_wbs_name_calc() + if "active" in vals and vals["active"]: + for project in self.filtered(lambda p: not p.analytic_account_id.active): + project.analytic_account_id.active = True + if "user_id" in vals: + for account in self.env["account.analytic.account"].browse( + self.analytic_account_id.get_child_accounts().keys() + ): + account.user_id = vals["user_id"] + return res + + def action_open_parent_kanban_view(self): + """ + :return dict: dictionary value for created view + """ + self.ensure_one() + domain = [] + analytic_account_ids = [] + res = self.env["ir.actions.act_window"]._for_xml_id( + "project_wbs.open_view_wbs_kanban" + ) + if self.analytic_account_id.parent_id: + for parent_project_id in self.env["project.project"].search( + [("analytic_account_id", "=", self.analytic_account_id.parent_id.id)] + ): + analytic_account_ids.append(parent_project_id.id) + domain.append(("id", "in", analytic_account_ids)) + res.update({"display_name": self.name, "domain": domain, "nodestroy": False}) + return res + + @api.onchange("wbs_parent_id") + def on_change_parent(self): + self.analytic_account_id._onchange_parent_id() + + def action_open_view_project_form(self): + view = { + "name": _("Details"), + "view_mode": "form,list,kanban", + "res_model": "project.project", + "view_id": False, + "type": "ir.actions.act_window", + "target": "current", + "res_id": self.id, + "context": self.env.context, + } + return view diff --git a/project_wbs/pyproject.toml b/project_wbs/pyproject.toml new file mode 100644 index 0000000000..4231d0cccb --- /dev/null +++ b/project_wbs/pyproject.toml @@ -0,0 +1,3 @@ +[build-system] +requires = ["whool"] +build-backend = "whool.buildapi" diff --git a/project_wbs/readme/CONTRIBUTORS.md b/project_wbs/readme/CONTRIBUTORS.md new file mode 100644 index 0000000000..dc9a2fd568 --- /dev/null +++ b/project_wbs/readme/CONTRIBUTORS.md @@ -0,0 +1,8 @@ +- Eficent \<\> +- Luxim d.o.o. \<\> +- Matmoz d.o.o. \<\> +- Deneroteam. \<\> +- SerpentCS \<\> + +\[APSL-Nagarro\](): + - Lansana Barry Sow \<\> \ No newline at end of file diff --git a/project_wbs/readme/DESCRIPTION.md b/project_wbs/readme/DESCRIPTION.md new file mode 100644 index 0000000000..a390b6d17e --- /dev/null +++ b/project_wbs/readme/DESCRIPTION.md @@ -0,0 +1,25 @@ +Adding WBS information to Odoo Projects + +- The hierarchy of a project is considered the WBS (Work Breakdown + Structure) +- The analytic accounts in the project hierarchies are considered WBS + components +- The analytic account code is shown in the project +- The complete WBS path code is shown in the analytic account and in the + project +- The complete WBS path name is shown in the analytic account and in the + project +- The WBS paths are concatenated with each other +- Project Manager is propagated to the hierarchy, the Manager is Manager + for the WBS element only + +Searching and Browsing WBS + +- It is possible to search projects by complete WBS path code & name +- It is possible to search tasks by project complete WBS path code & + name +- The WBS components can be classified as project, phase, deliverable, + work package. +- The classification is shown in the project and analytic account views +- A project stage attribute is incorporated in the analytic account and + displayed in the project and analytic account views. diff --git a/project_wbs/readme/ROADMAP.md b/project_wbs/readme/ROADMAP.md new file mode 100644 index 0000000000..0965b03305 --- /dev/null +++ b/project_wbs/readme/ROADMAP.md @@ -0,0 +1,4 @@ +- Actions for the different account class are implemented but menus for + those were not included. This is for inheritance purposes. +- RTL-friendliness in Project codes and names +- Do not show full names in children in Kanban View diff --git a/project_wbs/readme/USAGE.md b/project_wbs/readme/USAGE.md new file mode 100644 index 0000000000..76bf6d4167 --- /dev/null +++ b/project_wbs/readme/USAGE.md @@ -0,0 +1,13 @@ +Create a new child: + +1. Go to Project \> WBS +2. Click on one existing project or create a new one +3. Click on the form view to open the project. +4. Go to Work Breakdown Structure to create a new child + +Navigation: + +- Level column indicates the child hierarchy: '\>' means it is a child. + '\>\>' means it is a grandchild an so on. +- Click on the up arrow to see the parent project. +- Click on the down arrow to see children projects. diff --git a/project_wbs/static/description/icon.png b/project_wbs/static/description/icon.png new file mode 100644 index 0000000000..3a0328b516 Binary files /dev/null and b/project_wbs/static/description/icon.png differ diff --git a/project_wbs/static/description/index.html b/project_wbs/static/description/index.html new file mode 100644 index 0000000000..bf0e5d869b --- /dev/null +++ b/project_wbs/static/description/index.html @@ -0,0 +1,489 @@ + + + + + +Project Work Breakdown Structure + + + +
+

Project Work Breakdown Structure

+ + +

Beta License: AGPL-3 OCA/project Translate me on Weblate Try me on Runboat

+

Adding WBS information to Odoo Projects

+
    +
  • The hierarchy of a project is considered the WBS (Work Breakdown +Structure)
  • +
  • The analytic accounts in the project hierarchies are considered WBS +components
  • +
  • The analytic account code is shown in the project
  • +
  • The complete WBS path code is shown in the analytic account and in the +project
  • +
  • The complete WBS path name is shown in the analytic account and in the +project
  • +
  • The WBS paths are concatenated with each other
  • +
  • Project Manager is propagated to the hierarchy, the Manager is Manager +for the WBS element only
  • +
+

Searching and Browsing WBS

+
    +
  • It is possible to search projects by complete WBS path code & name
  • +
  • It is possible to search tasks by project complete WBS path code & +name
  • +
  • The WBS components can be classified as project, phase, deliverable, +work package.
  • +
  • The classification is shown in the project and analytic account views
  • +
  • A project stage attribute is incorporated in the analytic account and +displayed in the project and analytic account views.
  • +
+

Table of contents

+ +
+

Usage

+

Create a new child:

+
    +
  1. Go to Project > WBS
  2. +
  3. Click on one existing project or create a new one
  4. +
  5. Click on the form view to open the project.
  6. +
  7. Go to Work Breakdown Structure to create a new child
  8. +
+

Navigation:

+
    +
  • Level column indicates the child hierarchy: ‘>’ means it is a child. +‘>>’ means it is a grandchild an so on.
  • +
  • Click on the up arrow to see the parent project.
  • +
  • Click on the down arrow to see children projects.
  • +
+
+
+

Known issues / Roadmap

+
    +
  • Actions for the different account class are implemented but menus for +those were not included. This is for inheritance purposes.
  • +
  • RTL-friendliness in Project codes and names
  • +
  • Do not show full names in children in Kanban View
  • +
+
+
+

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

+
    +
  • Matmoz d.o.o.
  • +
  • Luxim d.o.o.
  • +
  • Deneroteam
  • +
  • ForgeFlow
  • +
+
+
+

Contributors

+ +

[APSL-Nagarro](https://apsl.tech):

+ +
+
+

Maintainers

+

This module is maintained by the OCA.

+ +Odoo Community Association + +

OCA, or the Odoo Community Association, is a nonprofit organization whose +mission is to support the collaborative development of Odoo features and +promote its widespread use.

+

Current maintainer:

+

AaronHForgeFlow

+

This module is part of the OCA/project project on GitHub.

+

You are welcome to contribute. To learn how please visit https://odoo-community.org/page/Contribute.

+
+
+
+ + diff --git a/project_wbs/tests/__init__.py b/project_wbs/tests/__init__.py new file mode 100644 index 0000000000..9e8cca42a2 --- /dev/null +++ b/project_wbs/tests/__init__.py @@ -0,0 +1,3 @@ +# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl.html). + +from . import test_project_wbs diff --git a/project_wbs/tests/test_project_wbs.py b/project_wbs/tests/test_project_wbs.py new file mode 100644 index 0000000000..7796d30c81 --- /dev/null +++ b/project_wbs/tests/test_project_wbs.py @@ -0,0 +1,142 @@ +# Copyright 2017 ForgeFlow S.L. +# Copyright 2017 Luxim d.o.o. +# Copyright 2017 Matmoz d.o.o. +# Copyright 2017 Deneroteam. +# Copyright 2017 Serpent Consulting Services Pvt. Ltd. +# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl.html). +from odoo.exceptions import ValidationError +from odoo.tests import common + + +class TestProjectWbs(common.TransactionCase): + def setUp(self): + super().setUp() + + self.project_project = self.env["project.project"] + + self.project = self.project_project.create( + {"name": "Test project", "code": "0001"} + ) + self.parent_account = self.project.analytic_account_id + self.project_son = self.project_project.create( + { + "name": "Test project son", + "code": "01", + "wbs_parent_id": self.parent_account.id, + } + ) + self.son_account = self.project_son.analytic_account_id + self.project_grand_son = self.project_project.create( + { + "name": "Test project grand son", + "code": "02", + "wbs_parent_id": self.son_account.id, + } + ) + self.grand_son_account = self.project_grand_son.analytic_account_id + self.project2 = self.project_project.create( + {"name": "Test project 2", "code": "03"} + ) + self.account2 = self.project2.analytic_account_id + default_plan = self.env["account.analytic.plan"].search([], limit=1) + + self.analytic_account = self.env["account.analytic.account"].create( + { + "name": "Test analytic account", + "plan_id": default_plan.id, + } + ) + + def test_get_name_and_code(self): + project = self.project_project.create({"name": "Project", "code": "1001"}) + project.name_get() + project_account = self.project.analytic_account_id + project_account.name_get() + + def test_get_project_wbs(self): + accounts = self.project._get_project_wbs() + self.assertEqual(len(accounts), 3, "wrong children number") + + def test_wbs_code(self): + self.assertEqual(self.project.complete_wbs_code, "[0001]", "Incorrect WBS code") + self.assertEqual( + self.project_son.complete_wbs_code, "[0001 / 01]", "Incorrect WBS code" + ) + self.assertEqual( + self.project_grand_son.complete_wbs_code, + "[0001 / 01 / 02]", + "Incorrect WBS code", + ) + + def test_get_child_accounts(self): + res = self.env["account.analytic.account"].get_child_accounts() + self.assertEqual(res, {}, "Should get nothing") + res = self.parent_account.get_child_accounts() + for has_parent in res.keys(): + self.assertEqual(res[has_parent], True, "Wrong child accounts") + + def test_view_context(self): + res = self.project_project.with_context( + default_wbs_parent_id=self.project.analytic_account_id.id + )._resolve_analytic_account_id_from_context() + self.assertEqual( + res, + self.project.analytic_account_id.id, + "Wrong Parent Project from context", + ) + res = self.project_project._resolve_analytic_account_id_from_context() + self.assertEqual(res, None, "Should not be anything in context") + + def test_indent_calc(self): + self.son_account._wbs_indent_calc() + self.assertEqual(self.son_account.wbs_indent, ">", "Wrong Indent") + + def test_open_window(self): + res = self.project_son.action_open_parent_tree_view() + self.assertEqual( + res["domain"][0][2][0], self.project.id, "Parent not showing in view" + ) + res = self.project_grand_son.action_open_child_tree_view() + self.assertEqual(res["domain"][0][2], [], "Lowest element have no child") + res = self.project.action_open_child_kanban_view() + self.assertEqual( + res["domain"][0][2][0], self.project_son.id, "Son not showing in view" + ) + res = self.project_son.action_open_child_kanban_view() + self.assertEqual( + res["domain"][0][2][0], + self.project_grand_son.id, + "Grand son not showing in kanban view", + ) + res = self.project_son.action_open_parent_kanban_view() + self.assertEqual( + res["domain"][0][2][0], self.project.id, "Parent not showing in kanban view" + ) + res = self.project.action_open_view_project_form() + self.assertEqual(res["res_id"], self.project.id, "Wrong project form view") + + def test_onchange_parent(self): + self.project2.write({"wbs_parent_id": self.parent_account.id}) + self.project2.on_change_parent() + child_in = self.project2 in self.project.project_child_complete_ids + self.assertTrue(child_in, "Child not added") + + def test_duplicate(self): + seq_id = self.env["ir.sequence"].search( + [("code", "=", "account.analytic.account.code")] + ) + next_val = seq_id.number_next_actual + copy_project = self.project.copy() + self.assertTrue(str(next_val) in copy_project.analytic_account_id.code) + next_val = seq_id.number_next_actual + with self.assertRaises(ValidationError): + copy_analytic = self.parent_account.copy() + self.assertTrue(str(next_val) in copy_analytic.analytic_account_id.code) + self.analytic_account.copy() + + def test_project_analytic_id(self): + self.grand_son_account.account_class = "deliverable" + self.grand_son_account._compute_project_analytic_id() + self.assertEqual( + self.grand_son_account.project_analytic_id.id, self.son_account.id + ) diff --git a/project_wbs/view/account_analytic_account_view.xml b/project_wbs/view/account_analytic_account_view.xml new file mode 100644 index 0000000000..4314d5ba96 --- /dev/null +++ b/project_wbs/view/account_analytic_account_view.xml @@ -0,0 +1,96 @@ + + + + account.analytic.account.list + account.analytic.account + list + + + + + True + + + + + + + + + + + + + + + + account.analytic.account.search + account.analytic.account + search + + + + + + + + + + + + + account.analytic.account.form + account.analytic.account + form + + + + + + + + + + + + + account.analytic.account.search + account.analytic.account + + + + + + + + + + + + + diff --git a/project_wbs/view/project_project_view.xml b/project_wbs/view/project_project_view.xml new file mode 100644 index 0000000000..9a21d04ab0 --- /dev/null +++ b/project_wbs/view/project_project_view.xml @@ -0,0 +1,335 @@ + + + + + project.project.list + project.project + list + + + + top + account_class == 'project' + complete_wbs_code + + + 1 + + + 0 + + + + +